)]}'
{"specs/approved/L3-based-deployment.rst":[{"author":{"_account_id":22194,"name":"chandra shekar","email":"chandra.s.rangavajjula@nokia.com","username":"shekar"},"change_message_id":"69eb95b92618ade032fac4fe5725f9be92b97d8d","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Previous version of this spec proposes using virtual floppy for conveying"},{"line_number":90,"context_line":"IP configuration to IPA ramdisk. That\u0027s probably because `ilo` hardware type"},{"line_number":91,"context_line":"expected to use static, user-built bootable ISO images, while `redfish`"},{"line_number":92,"context_line":"hardware type has the ability to built ISO images on the fly embedded"},{"line_number":93,"context_line":"custom configuration into them."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"While the previous approach should work just fine, it limits us to ramdisk"},{"line_number":96,"context_line":"booting because only IPA could consume provided IP configuration."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_938958cb","line":93,"range":{"start_line":92,"start_character":33,"end_line":93,"end_character":31},"updated":"2019-07-31 08:32:40.000000000","message":"Can you add a link in references for this redfish capability?","commit_id":"b52a54d2ad55e388598b9a5e72152cf6df7326a0"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"a1f12a2fe3026847b7a13bc9f026b028341c8e1a","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Previous version of this spec proposes using virtual floppy for conveying"},{"line_number":90,"context_line":"IP configuration to IPA ramdisk. That\u0027s probably because `ilo` hardware type"},{"line_number":91,"context_line":"expected to use static, user-built bootable ISO images, while `redfish`"},{"line_number":92,"context_line":"hardware type has the ability to built ISO images on the fly embedded"},{"line_number":93,"context_line":"custom configuration into them."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"While the previous approach should work just fine, it limits us to ramdisk"},{"line_number":96,"context_line":"booting because only IPA could consume provided IP configuration."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_d9e371d7","line":93,"range":{"start_line":92,"start_character":33,"end_line":93,"end_character":31},"in_reply_to":"7faddb67_938958cb","updated":"2019-07-31 10:29:07.000000000","message":"I think it\u0027s not about Redfish per se. This paragraph talks about previous reincarnation of this spec (see commit f8816d0b3cad50ced8badd1dd5f8ac7d5f600bd7) which offers slightly different design. From redfish perspective it still boots an image, possibly having floppy disk image inserted at the same time.","commit_id":"b52a54d2ad55e388598b9a5e72152cf6df7326a0"},{"author":{"_account_id":22194,"name":"chandra shekar","email":"chandra.s.rangavajjula@nokia.com","username":"shekar"},"change_message_id":"b87c18ff212c9f04df476e1853af5d12a7fac01c","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Previous version of this spec proposes using virtual floppy for conveying"},{"line_number":90,"context_line":"IP configuration to IPA ramdisk. That\u0027s probably because `ilo` hardware type"},{"line_number":91,"context_line":"expected to use static, user-built bootable ISO images, while `redfish`"},{"line_number":92,"context_line":"hardware type has the ability to built ISO images on the fly embedded"},{"line_number":93,"context_line":"custom configuration into them."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"While the previous approach should work just fine, it limits us to ramdisk"},{"line_number":96,"context_line":"booting because only IPA could consume provided IP configuration."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_f05f493e","line":93,"range":{"start_line":92,"start_character":33,"end_line":93,"end_character":31},"in_reply_to":"7faddb67_d9e371d7","updated":"2019-08-01 13:00:25.000000000","message":"It would be ironic conductor, which would be building ISO images per node with IP information? If so I still have the following questions:\n\n1. We should be generating N-number of IPA ISO images. Where N\u003dnumber of baremetal nodes to be provisioned. Would it scale with higher number of nodes, as it may put challenges on the Disk space.\n2. Embedding IP information on Kernel command line:- Do you see any issues hitting \nmax limit of \"COMMAND_LINE_SIZE\", https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html with complex network configurations?\n3. Redfish does not have a unified VirtualMedia management Interface (Insert/Eject) for all Hardware. It is OEM specific. Does this mean, we should be having Hardware specific Redfish interfaces drivers to handle these cases?","commit_id":"b52a54d2ad55e388598b9a5e72152cf6df7326a0"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"3bb371adac92db7ba283d3f1794808ee26e54418","unresolved":false,"context_lines":[{"line_number":89,"context_line":"Previous version of this spec proposes using virtual floppy for conveying"},{"line_number":90,"context_line":"IP configuration to IPA ramdisk. That\u0027s probably because `ilo` hardware type"},{"line_number":91,"context_line":"expected to use static, user-built bootable ISO images, while `redfish`"},{"line_number":92,"context_line":"hardware type has the ability to built ISO images on the fly embedded"},{"line_number":93,"context_line":"custom configuration into them."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"While the previous approach should work just fine, it limits us to ramdisk"},{"line_number":96,"context_line":"booting because only IPA could consume provided IP configuration."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7faddb67_8c99f2c4","line":93,"range":{"start_line":92,"start_character":33,"end_line":93,"end_character":31},"in_reply_to":"7faddb67_f05f493e","updated":"2019-08-05 14:26:50.000000000","message":"\u003e It would be ironic conductor, which would be building ISO images per node with IP information? If so I still have the following questions:\n\nYes, that\u0027s what\u0027s being proposed here. \n\n\u003e 1. We should be generating N-number of IPA ISO images. Where N\u003dnumber of baremetal nodes to be provisioned. Would it scale with higher number of nodes, as it may put challenges on the Disk space.\n\nWell, yes. However, the images are built on the conductor machine and then pushed to Swift where they reside for a relatively short time (while node is booting).\n\nAlso note, that this spec *adds* floppy-less boot feature which allows us to boot generic user images. Floppy-based configuration is still possible (and it\u0027s largely implemented).\n\n\u003e 2. Embedding IP information on Kernel command line:- Do you see any issues hitting max limit of \"COMMAND_LINE_SIZE\", https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html with complex network configurations?\n\nWe seem to be guaranteed at least 256 bytes... That probably translates to 4-5 network interfaces... If it\u0027s 4096, then it should be around 60 interfaces. So, there is a limit indeed. Does it feel like a pressing thing?\n\n\u003e 3. Redfish does not have a unified VirtualMedia management Interface (Insert/Eject) for all Hardware. It is OEM specific. Does this mean, we should be having Hardware specific Redfish interfaces drivers to handle these cases?\n\nI think virtual media boot can (and should) be done fully in non-OEM way. Everything is in the standard schema.\n\nI have a dream, that (1) all hardware vendors will converge on standard Redfish virtual media boot for basic booting. They still can have OEM for everything on top of just normal, simple machine boot. Secondly, I hope that the vendors would re/base their Redfish ironic drivers on top of generic Redfish driver in ironic.\n\nAm I a dreamer?","commit_id":"b52a54d2ad55e388598b9a5e72152cf6df7326a0"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7c0d70656d557eba7bf010fa79e44e6bcef4a32d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Most of the Hardware offerings in the market support Virtual media connection"},{"line_number":48,"context_line":"and booting. To date even these servers rely on DHCP to get the IP"},{"line_number":49,"context_line":"configuration. This dependency on DHCP can be supported with below proposed"},{"line_number":50,"context_line":"changes."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"On the Ironic Conductor side:-"},{"line_number":53,"context_line":"All vendors supporting Virtual media connection, booting and power management"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_d136f302","side":"PARENT","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":8},"updated":"2019-08-15 07:11:29.000000000","message":"This seems to be a useful context, I don\u0027t know why it\u0027s removed in the revision.","commit_id":"ae35f97b43a753ba592c77a59cd0df43fd863466"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c5d24b5ec7fe621261250182201f30f856196c48","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Most of the Hardware offerings in the market support Virtual media connection"},{"line_number":48,"context_line":"and booting. To date even these servers rely on DHCP to get the IP"},{"line_number":49,"context_line":"configuration. This dependency on DHCP can be supported with below proposed"},{"line_number":50,"context_line":"changes."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"On the Ironic Conductor side:-"},{"line_number":53,"context_line":"All vendors supporting Virtual media connection, booting and power management"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_91cabb4c","side":"PARENT","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":8},"in_reply_to":"7faddb67_7fe07e27","updated":"2019-08-30 13:27:06.000000000","message":"Done","commit_id":"ae35f97b43a753ba592c77a59cd0df43fd863466"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c4da608e43fd654b060af13b7df8abc9ee5e5608","unresolved":false,"context_lines":[{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Most of the Hardware offerings in the market support Virtual media connection"},{"line_number":48,"context_line":"and booting. To date even these servers rely on DHCP to get the IP"},{"line_number":49,"context_line":"configuration. This dependency on DHCP can be supported with below proposed"},{"line_number":50,"context_line":"changes."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"On the Ironic Conductor side:-"},{"line_number":53,"context_line":"All vendors supporting Virtual media connection, booting and power management"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_7fe07e27","side":"PARENT","line":50,"range":{"start_line":47,"start_character":0,"end_line":50,"end_character":8},"in_reply_to":"7faddb67_d136f302","updated":"2019-08-26 13:55:51.000000000","message":"I\u0027d keep it, but it should go to problem description.","commit_id":"ae35f97b43a753ba592c77a59cd0df43fd863466"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c4da608e43fd654b060af13b7df8abc9ee5e5608","unresolved":false,"context_lines":[{"line_number":65,"context_line":"   network."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Ironic virtmedia boot interfaces can use this derived information to construct"},{"line_number":68,"context_line":"os-net-config JSON structure [2]_. This would be added as \"host_network_info\""},{"line_number":69,"context_line":"in parameters.txt when running create_vfat_image [1]_."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Example:- Content for *host_network_info*"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_9fc21a86","side":"PARENT","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":28},"updated":"2019-08-26 13:55:51.000000000","message":"This was a useful properly of the approved format. I\u0027d prefer we keep it.","commit_id":"ae35f97b43a753ba592c77a59cd0df43fd863466"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c5d24b5ec7fe621261250182201f30f856196c48","unresolved":false,"context_lines":[{"line_number":65,"context_line":"   network."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Ironic virtmedia boot interfaces can use this derived information to construct"},{"line_number":68,"context_line":"os-net-config JSON structure [2]_. This would be added as \"host_network_info\""},{"line_number":69,"context_line":"in parameters.txt when running create_vfat_image [1]_."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Example:- Content for *host_network_info*"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_114b2b87","side":"PARENT","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":28},"in_reply_to":"7faddb67_9fc21a86","updated":"2019-08-30 13:27:06.000000000","message":"OK, though that would require virtual floppy or USB. That arguably makes the whole thing more demanding and fragile.","commit_id":"ae35f97b43a753ba592c77a59cd0df43fd863466"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"c4da608e43fd654b060af13b7df8abc9ee5e5608","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"On the Ironic Conductor side:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The boot interface of `redfish` hardware type would have to be updated to"},{"line_number":52,"context_line":"support a new option that will ultimately convey IP configuration to target"},{"line_number":53,"context_line":"nodes. The IP configuration can be derived as follows:"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_3fd44647","line":51,"range":{"start_line":51,"start_character":22,"end_line":51,"end_character":45},"updated":"2019-08-26 13:55:51.000000000","message":"Why is it redfish specific? Cannot we do the same for all virtual media?","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c5d24b5ec7fe621261250182201f30f856196c48","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"On the Ironic Conductor side:"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"The boot interface of `redfish` hardware type would have to be updated to"},{"line_number":52,"context_line":"support a new option that will ultimately convey IP configuration to target"},{"line_number":53,"context_line":"nodes. The IP configuration can be derived as follows:"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_d10ef33b","line":51,"range":{"start_line":51,"start_character":22,"end_line":51,"end_character":45},"in_reply_to":"7faddb67_3fd44647","updated":"2019-08-30 13:27:06.000000000","message":"We can, but that requires refactoring vendor hw types... I wish this is what vendors would do.","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7c0d70656d557eba7bf010fa79e44e6bcef4a32d","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Ironic `redfish` boot interface would pass IP configuration to boot image"},{"line_number":66,"context_line":"creation routines of ironic, from there IP configuration would be reshaped into"},{"line_number":67,"context_line":"kernel parameters [1]_, possibly via boot loader configuration."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Example:- Content for *host_network_info*"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_4c3108ed","line":67,"range":{"start_line":67,"start_character":18,"end_line":67,"end_character":22},"updated":"2019-08-15 07:11:29.000000000","message":"do we actually use nfsroot or just reference the kernel argument stuff here?","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c5d24b5ec7fe621261250182201f30f856196c48","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"Ironic `redfish` boot interface would pass IP configuration to boot image"},{"line_number":66,"context_line":"creation routines of ironic, from there IP configuration would be reshaped into"},{"line_number":67,"context_line":"kernel parameters [1]_, possibly via boot loader configuration."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Example:- Content for *host_network_info*"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_6c42c43d","line":67,"range":{"start_line":67,"start_character":18,"end_line":67,"end_character":22},"in_reply_to":"7faddb67_4c3108ed","updated":"2019-08-30 13:27:06.000000000","message":"Just kernel arguments! NFS is just the feature that happens to require the same thing as we need.","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4f9fd1a48b8abd1d4b13db9e36f421b120d60ba6","unresolved":false,"context_lines":[{"line_number":74,"context_line":"       \"network_config\": {"},{"line_number":75,"context_line":"           \"ip_netmask\": \"192.168.1.21/24\","},{"line_number":76,"context_line":"           \"gateway\": \"192.168.1.1\""},{"line_number":77,"context_line":"           \"device\": \"eth0.42\""},{"line_number":78,"context_line":"       }"},{"line_number":79,"context_line":"   }"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_8b9a6611","line":77,"range":{"start_line":77,"start_character":21,"end_line":77,"end_character":30},"updated":"2019-08-01 13:52:29.000000000","message":"How do one get this value? Is this we get from OS using \u0027ifconfig\u0027? The OS representation of NIC interface differs across distro. Would it be better to pass this as a MAC address? Ironic is also aware of the MAC address.","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"7c0d70656d557eba7bf010fa79e44e6bcef4a32d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"       \"network_config\": {"},{"line_number":75,"context_line":"           \"ip_netmask\": \"192.168.1.21/24\","},{"line_number":76,"context_line":"           \"gateway\": \"192.168.1.1\""},{"line_number":77,"context_line":"           \"device\": \"eth0.42\""},{"line_number":78,"context_line":"       }"},{"line_number":79,"context_line":"   }"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_cc6bb8b6","line":77,"range":{"start_line":77,"start_character":21,"end_line":77,"end_character":30},"in_reply_to":"7faddb67_0c30a29e","updated":"2019-08-15 07:11:29.000000000","message":"this seems to be an issue, there is barely a host has only one interface. If we will build a custom ISO, is there a way to embed the network configuration into it?\n\nIs is possible to create a partition and utilize cloud-init for the post-configuration?","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"3bb371adac92db7ba283d3f1794808ee26e54418","unresolved":false,"context_lines":[{"line_number":74,"context_line":"       \"network_config\": {"},{"line_number":75,"context_line":"           \"ip_netmask\": \"192.168.1.21/24\","},{"line_number":76,"context_line":"           \"gateway\": \"192.168.1.1\""},{"line_number":77,"context_line":"           \"device\": \"eth0.42\""},{"line_number":78,"context_line":"       }"},{"line_number":79,"context_line":"   }"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_0c30a29e","line":77,"range":{"start_line":77,"start_character":21,"end_line":77,"end_character":30},"in_reply_to":"7faddb67_8b9a6611","updated":"2019-08-05 14:26:50.000000000","message":"It would, however in [1] I do not see a way to pass MAC address...\n\nAlso, note, that this `.42` is meant to refer to a VLAN interface. So the assumption here is that the kernel has VLAN networking and interfaces pre-configured through ramdisk configuration before kernel tries to apply its command-line configuration...\n\nBTW, If there is only one interface on the host, then `device` can be omitted.","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c5d24b5ec7fe621261250182201f30f856196c48","unresolved":false,"context_lines":[{"line_number":74,"context_line":"       \"network_config\": {"},{"line_number":75,"context_line":"           \"ip_netmask\": \"192.168.1.21/24\","},{"line_number":76,"context_line":"           \"gateway\": \"192.168.1.1\""},{"line_number":77,"context_line":"           \"device\": \"eth0.42\""},{"line_number":78,"context_line":"       }"},{"line_number":79,"context_line":"   }"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_ec40f408","line":77,"range":{"start_line":77,"start_character":21,"end_line":77,"end_character":30},"in_reply_to":"7faddb67_cc6bb8b6","updated":"2019-08-30 13:27:06.000000000","message":"\u003e this seems to be an issue, there is barely a host has only one interface. \n\nSorry, I am not sure I understand your concern. The host can indeed have many interfaces and kernel would configure them though c/l.\n\n\u003e If we will build a custom ISO, is there a way to embed the network configuration into it?\n\nPerhaps, yes. But devil is in details. There should be some standardization concerning network configuration between ironic (injecting configuration into the image) and user init scripts (consuming that configuration). May be something like that already exists? My understanding is that presently os-net-config utilizes floppy drive, but may be it could be turned into some configuration partition...?\n\nIn that light, kernel params seem way easier...\n\nWDYT?","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4f9fd1a48b8abd1d4b13db9e36f421b120d60ba6","unresolved":false,"context_lines":[{"line_number":86,"context_line":"Alternatives"},{"line_number":87,"context_line":"------------"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Previous version of this spec proposes using virtual floppy for conveying"},{"line_number":90,"context_line":"IP configuration to IPA ramdisk. That\u0027s probably because `ilo` hardware type"},{"line_number":91,"context_line":"expected to use static, user-built bootable ISO images, while `redfish`"},{"line_number":92,"context_line":"hardware type has the ability to build ISO images on the fly embedding"},{"line_number":93,"context_line":"custom kernel configuration into them."},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_ab7c02b6","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":54},"updated":"2019-08-01 13:52:29.000000000","message":"I think iLO driver also should move towards non-Floppy based approach.","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"3bb371adac92db7ba283d3f1794808ee26e54418","unresolved":false,"context_lines":[{"line_number":86,"context_line":"Alternatives"},{"line_number":87,"context_line":"------------"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Previous version of this spec proposes using virtual floppy for conveying"},{"line_number":90,"context_line":"IP configuration to IPA ramdisk. That\u0027s probably because `ilo` hardware type"},{"line_number":91,"context_line":"expected to use static, user-built bootable ISO images, while `redfish`"},{"line_number":92,"context_line":"hardware type has the ability to build ISO images on the fly embedding"},{"line_number":93,"context_line":"custom kernel configuration into them."},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_e7419f0b","line":91,"range":{"start_line":89,"start_character":0,"end_line":91,"end_character":54},"in_reply_to":"7faddb67_ab7c02b6","updated":"2019-08-05 14:26:50.000000000","message":"Well, the necessary harness is almost in place.\n\nThe other thought raised in this patch is that if one needs a massive configuration touching ~5+ network interfaces, then perhaps this kernel command-line approach would hit its limit. Then floppy way would be helpful as a fallback option.","commit_id":"7ebc9a5220eb06744895fb23cb4067340295b228"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"Boot interfaces based on `redfish` hardware type would have to be updated to"},{"line_number":57,"context_line":"support a new option that will ultimately convey IP configuration to target"},{"line_number":58,"context_line":"nodes. The IP configuration can be derived as follows:"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"1. Stand-alone mode:- IP network information can be fed/removed directly by the"},{"line_number":61,"context_line":"   end user to ironic node port or portgroup\u0027s field \"host_network_info\"."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_0cc1e6e4","line":58,"updated":"2019-10-09 01:22:32.000000000","message":"I\u0027m essentially a hard -1 on adding new arguments passing network information around as it breaks the object model ironic developers and hackers are used to.","commit_id":"9a7c7e956ea840c5e15275aaa4fcdae9f2848524"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ab856a776472e65a5f6a1b6baeb9f11f28896f01","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Ironic `redfish` boot interface would pass IP configuration to boot image"},{"line_number":71,"context_line":"creation routines of ironic, from there IP configuration would be reshaped into"},{"line_number":72,"context_line":"kernel parameters [3]_, possibly via boot loader configuration. Or `redfish`"},{"line_number":73,"context_line":"boot interface could construct os-net-config JSON structure [2]_, add it as"},{"line_number":74,"context_line":"`host_network_info` in `parameters.txt` when running `create_vfat_image` [1]_."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_e9a20d3f","line":72,"range":{"start_line":72,"start_character":64,"end_line":72,"end_character":76},"updated":"2019-09-02 14:38:06.000000000","message":"Let\u0027s not have alternatives in the spec (see below).","commit_id":"9a7c7e956ea840c5e15275aaa4fcdae9f2848524"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ab856a776472e65a5f6a1b6baeb9f11f28896f01","unresolved":false,"context_lines":[{"line_number":78,"context_line":".. code-block:: JSON"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   {"},{"line_number":81,"context_line":"       \"network_config\": {"},{"line_number":82,"context_line":"           \"ip_netmask\": \"192.168.1.21/24\","},{"line_number":83,"context_line":"           \"gateway\": \"192.168.1.1\""},{"line_number":84,"context_line":"           \"device\": \"eth0.42\""},{"line_number":85,"context_line":"       }"},{"line_number":86,"context_line":"   }"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. end"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7faddb67_c98cf1d9","line":85,"range":{"start_line":81,"start_character":0,"end_line":85,"end_character":8},"updated":"2019-09-02 14:38:06.000000000","message":"The benefit of the os-net-config approach was that we could configure several interfaces (e.g. if PXE/ironic interface is not the same as Swift/Glance). I still don\u0027t quite get why you get rid of it. If the size is the problem, we could gzip+base64 it probably. Or update the CD to include the file (I think there is a standard location for os-net-config files).","commit_id":"9a7c7e956ea840c5e15275aaa4fcdae9f2848524"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"b31c8fe623d908486268e1f28d8a69643573479b","unresolved":false,"context_lines":[{"line_number":78,"context_line":".. code-block:: JSON"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   {"},{"line_number":81,"context_line":"       \"network_config\": {"},{"line_number":82,"context_line":"           \"ip_netmask\": \"192.168.1.21/24\","},{"line_number":83,"context_line":"           \"gateway\": \"192.168.1.1\""},{"line_number":84,"context_line":"           \"device\": \"eth0.42\""},{"line_number":85,"context_line":"       }"},{"line_number":86,"context_line":"   }"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. end"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_9f0e568b","line":85,"range":{"start_line":81,"start_character":0,"end_line":85,"end_character":8},"in_reply_to":"7faddb67_c98cf1d9","updated":"2019-09-23 15:06:26.000000000","message":"The only reason has been to configure networking to the user images running Linux, but lacking os-net-config piece.\n\nSince os-net-config features may still be important, I thought to support both ways so that the user could chose depending on the kind of images they boot.\n\nWDYT?","commit_id":"9a7c7e956ea840c5e15275aaa4fcdae9f2848524"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. end"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"This method of IP configuration can be used for booting IPA ramdisk as"},{"line_number":91,"context_line":"well as non-local boot of already deployed instance over L3 network."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Alternatives"},{"line_number":94,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_4c4a7eac","line":91,"range":{"start_line":90,"start_character":0,"end_line":91,"end_character":68},"updated":"2019-10-09 01:22:32.000000000","message":"This is really a separate feature, one which we\u0027ve talked about previously which is attach the \"configuration drive\" via virtual media. I think this actually becomes a bit confusing, since we would realistically have to (a) handle a long-ish attached (30m-1hr) virtual media device and (b) ensure that we don\u0027t do it too quickly to cause bios confusion.","commit_id":"9a7c7e956ea840c5e15275aaa4fcdae9f2848524"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":99,"context_line":"hardware type has the ability to build ISO images on the fly embedding"},{"line_number":100,"context_line":"custom kernel configuration into them."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"While the previous approach should work just fine, it limits us to ramdisk"},{"line_number":103,"context_line":"booting because only IPA could consume provided IP configuration."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Data model impact"},{"line_number":106,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_cca18e48","line":103,"range":{"start_line":102,"start_character":0,"end_line":103,"end_character":65},"updated":"2019-10-09 01:22:32.000000000","message":"This is essentially saying we\u0027re changing the spec because it doesn\u0027t provide alternatives. I\u0027d just focus on the need to master images given floppy devices are going away in the long run.","commit_id":"9a7c7e956ea840c5e15275aaa4fcdae9f2848524"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":167,"context_line":"Ramdisk impact"},{"line_number":168,"context_line":"--------------"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"None"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"Security impact"},{"line_number":173,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_8c8396a9","line":170,"updated":"2019-10-09 01:22:32.000000000","message":"None doesn\u0027t seem correct....","commit_id":"9a7c7e956ea840c5e15275aaa4fcdae9f2848524"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"* Update ironic CLI"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"* Add support for passing node IP configuration to `redfish` boot interface"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"* Update documentation"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3fa7e38b_4c8d9ed1","line":223,"updated":"2019-10-09 01:22:32.000000000","message":"FWIW, This should be available via the task and in the data model. We shouldn\u0027t have anything that adds new arguments.","commit_id":"9a7c7e956ea840c5e15275aaa4fcdae9f2848524"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":61,"context_line":"   etc) information to the operating system running on the node"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Virtual media capability of now days BMCs coupled with ironic"},{"line_number":64,"context_line":"`redfish-virtual-media` boot interface implementation fully solves problem (1)."},{"line_number":65,"context_line":"The rest of this spec is dedicated to pondering over puzzles (2) and (3)."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Gathering node configuration"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_ccbaee6c","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":23},"updated":"2019-10-09 01:22:32.000000000","message":"In a perfect world, this is not about just redfish. Vendor specific vmedia support has existed, and _should_ be able to leverage this or be easily adapted.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":61,"context_line":"   etc) information to the operating system running on the node"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Virtual media capability of now days BMCs coupled with ironic"},{"line_number":64,"context_line":"`redfish-virtual-media` boot interface implementation fully solves problem (1)."},{"line_number":65,"context_line":"The rest of this spec is dedicated to pondering over puzzles (2) and (3)."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Gathering node configuration"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_5d978691","line":64,"range":{"start_line":64,"start_character":0,"end_line":64,"end_character":23},"in_reply_to":"3fa7e38b_ccbaee6c","updated":"2019-10-09 10:02:07.000000000","message":"Done","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":71,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":72,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":73,"context_line":"both boots should not depend on DHCP availability on the network."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":76,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_6cb17a8f","line":73,"range":{"start_line":73,"start_character":5,"end_line":73,"end_character":11},"updated":"2019-10-09 01:22:32.000000000","message":"nit s/boots/boot operations/","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":71,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":72,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":73,"context_line":"both boots should not depend on DHCP availability on the network."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":76,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_bd86ba12","line":73,"range":{"start_line":73,"start_character":5,"end_line":73,"end_character":11},"in_reply_to":"3fa7e38b_6cb17a8f","updated":"2019-10-09 10:02:07.000000000","message":"Done","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  ironic port object. This is the case when ramdisk networking is managed"},{"line_number":87,"context_line":"  anyhow by the operator."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"* Making ironic use Neutron for obtaining ramdisk network configuration"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Provisioning node configuration"},{"line_number":92,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_2cab821d","line":89,"updated":"2019-10-09 01:22:32.000000000","message":"Bonus points for making a simple \"task.driver.network.get_machine_ip_address(task)\" method.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  ironic port object. This is the case when ramdisk networking is managed"},{"line_number":87,"context_line":"  anyhow by the operator."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"* Making ironic use Neutron for obtaining ramdisk network configuration"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Provisioning node configuration"},{"line_number":92,"context_line":"-------------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_9d989e6a","line":89,"in_reply_to":"3fa7e38b_2cab821d","updated":"2019-10-09 10:02:07.000000000","message":"Done","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":10644,"name":"David Paterson","email":"davpat2112@yahoo.com","username":"dpaterson"},"change_message_id":"9f0cf2df52e5e81222e33f04562c4aa8eaa06ace","unresolved":false,"context_lines":[{"line_number":91,"context_line":"Provisioning node configuration"},{"line_number":92,"context_line":"-------------------------------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"OpenStack can supply network configuration to tenants via configdrive for"},{"line_number":95,"context_line":"the case of local disk deployment (configdrive on a dedicated partition)."},{"line_number":96,"context_line":"For diskless and whole disk scenarios, this spec proposes using virtual"},{"line_number":97,"context_line":"media CD for delivering configdrive to the tenant."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_d1804849","line":94,"updated":"2019-10-08 18:59:48.000000000","message":"nit: config-drive","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":91,"context_line":"Provisioning node configuration"},{"line_number":92,"context_line":"-------------------------------"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"OpenStack can supply network configuration to tenants via configdrive for"},{"line_number":95,"context_line":"the case of local disk deployment (configdrive on a dedicated partition)."},{"line_number":96,"context_line":"For diskless and whole disk scenarios, this spec proposes using virtual"},{"line_number":97,"context_line":"media CD for delivering configdrive to the tenant."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_bd9b1a64","line":94,"in_reply_to":"3fa7e38b_d1804849","updated":"2019-10-09 10:02:07.000000000","message":"Done","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":100,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":101,"context_line":"configuration (along with node identification and security information)"},{"line_number":102,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":103,"context_line":"customised ISO images is facilitated by ironic `redfish-virtual-media`"},{"line_number":104,"context_line":"hardware type."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"To facilitate network configuration processing and application, this spec"},{"line_number":107,"context_line":"proposes reusing configdrive, along with its associated data structures"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_ec624a16","line":104,"range":{"start_line":103,"start_character":47,"end_line":104,"end_character":14},"updated":"2019-10-09 01:22:32.000000000","message":"Note: We will need to make sure this is easy for the other virtual media interfaces to adopt/leverage this build.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":100,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":101,"context_line":"configuration (along with node identification and security information)"},{"line_number":102,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":103,"context_line":"customised ISO images is facilitated by ironic `redfish-virtual-media`"},{"line_number":104,"context_line":"hardware type."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"To facilitate network configuration processing and application, this spec"},{"line_number":107,"context_line":"proposes reusing configdrive, along with its associated data structures"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_dd2a96e5","line":104,"range":{"start_line":103,"start_character":47,"end_line":104,"end_character":14},"in_reply_to":"3fa7e38b_ec624a16","updated":"2019-10-09 10:02:07.000000000","message":"Done","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":121,"context_line":"  as a FAT or ISO image file. Booted operating system is expected to get"},{"line_number":122,"context_line":"  access to configuration information by running these commands:"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":125,"context_line":"  # mount -o ro /mnt/config-2.img /mnt"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Ironic conductor changes"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_6c765adb","line":124,"updated":"2019-10-09 01:22:32.000000000","message":"So not remaster the cpio archive... nice! Maybe not /mnt, fwiw.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":121,"context_line":"  as a FAT or ISO image file. Booted operating system is expected to get"},{"line_number":122,"context_line":"  access to configuration information by running these commands:"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":125,"context_line":"  # mount -o ro /mnt/config-2.img /mnt"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Ironic conductor changes"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_7d39223d","line":124,"in_reply_to":"3fa7e38b_6c765adb","updated":"2019-10-09 10:02:07.000000000","message":"Done","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":122,"context_line":"  access to configuration information by running these commands:"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":125,"context_line":"  # mount -o ro /mnt/config-2.img /mnt"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Ironic conductor changes"},{"line_number":128,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_8c7156e1","line":125,"range":{"start_line":125,"start_character":34,"end_line":125,"end_character":38},"updated":"2019-10-09 01:22:32.000000000","message":"/mnt/config-2 I believe. The more important aspect is the label stamped on to the file system. \"CONFIG-2\"","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":122,"context_line":"  access to configuration information by running these commands:"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":125,"context_line":"  # mount -o ro /mnt/config-2.img /mnt"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Ironic conductor changes"},{"line_number":128,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_dd7856f9","line":125,"range":{"start_line":125,"start_character":34,"end_line":125,"end_character":38},"in_reply_to":"3fa7e38b_8c7156e1","updated":"2019-10-09 10:02:07.000000000","message":"Note that config-2 is a partition label, when we consider conventional config-drive written down on the local disk. Here it is a mounted image, so CONFIG-2 is gonna be a mount point. I offered the same name just to hint the relevance to its partition form.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":132,"context_line":"  configuration information."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Teach ironic to allocate a port with Neutron to get ramdisk on the network."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* Whenever necessary, make ironic turning network configuration information"},{"line_number":137,"context_line":"  into configdrive meta-data form."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_2c80628b","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":76},"updated":"2019-10-09 01:22:32.000000000","message":"This should already be done. Part of the network interface perform the attachment. If it is not a local network, then it makes sense for maybe noop (or maybe even the base network_interface code) to look in the host_network_info object for the preferred address.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":131,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":132,"context_line":"  configuration information."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Teach ironic to allocate a port with Neutron to get ramdisk on the network."},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"* Whenever necessary, make ironic turning network configuration information"},{"line_number":137,"context_line":"  into configdrive meta-data form."}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_33f8b947","line":134,"range":{"start_line":134,"start_character":0,"end_line":134,"end_character":76},"in_reply_to":"3fa7e38b_2c80628b","updated":"2019-10-09 10:02:07.000000000","message":"We need Neutron to allocate and give us IP address let alone other L3 configuration so we\u0027d pass that over to the node.\n\nTo my understanding, ironic presently is not much interested in all that because IP configuration is fully outsourced to DHCP.\n\nLet me know if my understanding is flawed!\n\nI\u0027ve reworded that item.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":146,"context_line":"information, instead of burning configdrive ISO into boot ISO. However,"},{"line_number":147,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":148,"context_line":"of that, Linux kernel is rumored to eliminate floppy drivers in the future."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Data model impact"},{"line_number":151,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_ac453272","line":148,"range":{"start_line":147,"start_character":68,"end_line":148,"end_character":75},"updated":"2019-10-09 01:22:32.000000000","message":"https://linux.slashdot.org/story/19/07/31/1348226/linus-torvalds-prepares-to-wave-goodbye-to-linux-floppy-drives\nhttps://www.zdnet.com/article/linus-torvalds-prepares-to-wave-goodbye-to-linux-floppy-drives/\nhttps://github.com/torvalds/linux/commit/47d6a7607443ea43dbc4d0f371bf773540a8f8f4","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":146,"context_line":"information, instead of burning configdrive ISO into boot ISO. However,"},{"line_number":147,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":148,"context_line":"of that, Linux kernel is rumored to eliminate floppy drivers in the future."},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Data model impact"},{"line_number":151,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_f31c6178","line":148,"range":{"start_line":147,"start_character":68,"end_line":148,"end_character":75},"in_reply_to":"3fa7e38b_ac453272","updated":"2019-10-09 10:02:07.000000000","message":"Done","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":10644,"name":"David Paterson","email":"davpat2112@yahoo.com","username":"dpaterson"},"change_message_id":"9f0cf2df52e5e81222e33f04562c4aa8eaa06ace","unresolved":false,"context_lines":[{"line_number":212,"context_line":"Ramdisk impact"},{"line_number":213,"context_line":"--------------"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"IPA changes"},{"line_number":216,"context_line":"-----------"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"* Ramdisk should try to find configdrive on the ISO it has been booted from"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_f12d4446","line":215,"updated":"2019-10-08 18:59:48.000000000","message":"nit: define IPA acronym perhaps?","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":212,"context_line":"Ramdisk impact"},{"line_number":213,"context_line":"--------------"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"IPA changes"},{"line_number":216,"context_line":"-----------"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"* Ramdisk should try to find configdrive on the ISO it has been booted from"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_b316e954","line":215,"in_reply_to":"3fa7e38b_f12d4446","updated":"2019-10-09 10:02:07.000000000","message":"Moved to ramdisk section","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":218,"context_line":"* Ramdisk should try to find configdrive on the ISO it has been booted from"},{"line_number":219,"context_line":"  and network configuration in it."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"* If network configuration has been found, ramdisk should apply it on the NICs"},{"line_number":222,"context_line":"  prior to invoking IPA. Otherwise ramdisk should fall back to DHCP boot."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Security impact"},{"line_number":225,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_ec300a0a","line":222,"range":{"start_line":221,"start_character":2,"end_line":222,"end_character":73},"updated":"2019-10-09 01:22:32.000000000","message":"IPA should likely double check this and still attempt to invoke it. There are also simple tools for grokking/running config drives... In part because if IPA doesn\u0027t have a clue, then the base OS needs to understand, and We\u0027ve seen what trying to keep things like this in ramdisks can be like. Simplest is really just the least common denominator worth of commands in the IPA invocation. If no IP networking, double check if it a ramdisk, and if so try and cause something to happen before continuing with inspection and heartbeating to ironic\u0027s API.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":218,"context_line":"* Ramdisk should try to find configdrive on the ISO it has been booted from"},{"line_number":219,"context_line":"  and network configuration in it."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"* If network configuration has been found, ramdisk should apply it on the NICs"},{"line_number":222,"context_line":"  prior to invoking IPA. Otherwise ramdisk should fall back to DHCP boot."},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Security impact"},{"line_number":225,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_8ecb86a3","line":222,"range":{"start_line":221,"start_character":2,"end_line":222,"end_character":73},"in_reply_to":"3fa7e38b_ec300a0a","updated":"2019-10-09 10:02:07.000000000","message":"I am not sure I fully understand what do you have in mind when saying \"double checking\" here. Could you please elaborate on this?","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* Update openstack baremetal CLI"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* Add Neutron port allocation for ramdisk to ironic"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"* Add configdrive burning feature to `redfish-virtual-media` boot interface"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_ac3a12e4","line":275,"range":{"start_line":275,"start_character":0,"end_line":275,"end_character":51},"updated":"2019-10-09 01:22:32.000000000","message":"I\u0027m not sure why this is a work item? I think I need to understand.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* Update openstack baremetal CLI"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* Add Neutron port allocation for ramdisk to ironic"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"* Add configdrive burning feature to `redfish-virtual-media` boot interface"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_0e3556da","line":275,"range":{"start_line":275,"start_character":0,"end_line":275,"end_character":51},"in_reply_to":"3fa7e38b_ac3a12e4","updated":"2019-10-09 10:02:07.000000000","message":"Explained and reworded.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"6a974a8ed54b8fb62b550a0c5ca6ebe2a153b5bd","unresolved":false,"context_lines":[{"line_number":281,"context_line":"Dependencies"},{"line_number":282,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"None"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Testing"},{"line_number":287,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_6c241ac7","line":284,"range":{"start_line":284,"start_character":0,"end_line":284,"end_character":4},"updated":"2019-10-09 01:22:32.000000000","message":"There is still a dependency. Something in the ramdisk has to have at least a clue about how to load load the config drive.","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1b93ed66ea447606e34516be338bdbd27b4ff301","unresolved":false,"context_lines":[{"line_number":281,"context_line":"Dependencies"},{"line_number":282,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"None"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Testing"},{"line_number":287,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3fa7e38b_6e3baac7","line":284,"range":{"start_line":284,"start_character":0,"end_line":284,"end_character":4},"in_reply_to":"3fa7e38b_6c241ac7","updated":"2019-10-09 10:02:07.000000000","message":"Done","commit_id":"4dc000cfa1f016d78ae2801cf7e113597c1a6fde"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  slowing down or failing the entire node deployment."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Most of the hardware offerings on the market support booting off virtual media"},{"line_number":48,"context_line":"device. While ironic can boot the nodes over virtual media, its present"},{"line_number":49,"context_line":"workflow still relies on DHCP for booted OS to obtain IP stack configuration."},{"line_number":50,"context_line":"This dependency on DHCP can be eliminated if proposed change is implemented."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d6bc45bc","line":48,"range":{"start_line":48,"start_character":14,"end_line":48,"end_character":20},"updated":"2019-10-16 13:49:55.000000000","message":"nit: Ironic (because it\u0027s a product name).","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  slowing down or failing the entire node deployment."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Most of the hardware offerings on the market support booting off virtual media"},{"line_number":48,"context_line":"device. While ironic can boot the nodes over virtual media, its present"},{"line_number":49,"context_line":"workflow still relies on DHCP for booted OS to obtain IP stack configuration."},{"line_number":50,"context_line":"This dependency on DHCP can be eliminated if proposed change is implemented."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_6f6e8501","line":48,"range":{"start_line":48,"start_character":14,"end_line":48,"end_character":20},"in_reply_to":"3fa7e38b_ce67b4b7","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  slowing down or failing the entire node deployment."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Most of the hardware offerings on the market support booting off virtual media"},{"line_number":48,"context_line":"device. While ironic can boot the nodes over virtual media, its present"},{"line_number":49,"context_line":"workflow still relies on DHCP for booted OS to obtain IP stack configuration."},{"line_number":50,"context_line":"This dependency on DHCP can be eliminated if proposed change is implemented."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_4f6b89f0","line":48,"range":{"start_line":48,"start_character":14,"end_line":48,"end_character":20},"in_reply_to":"3fa7e38b_d6bc45bc","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  slowing down or failing the entire node deployment."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Most of the hardware offerings on the market support booting off virtual media"},{"line_number":48,"context_line":"device. While ironic can boot the nodes over virtual media, its present"},{"line_number":49,"context_line":"workflow still relies on DHCP for booted OS to obtain IP stack configuration."},{"line_number":50,"context_line":"This dependency on DHCP can be eliminated if proposed change is implemented."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_ce67b4b7","line":48,"range":{"start_line":48,"start_character":14,"end_line":48,"end_character":20},"in_reply_to":"3fa7e38b_d6bc45bc","updated":"2019-10-17 21:28:42.000000000","message":"Incorrect. It is a project name, and under doc guidelines the project is to be lower cased, and \"Open Stack Bare Metal Service\" is the formal name. https://docs.openstack.org/doc-contrib-guide/writing-style/openstack-components.html","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Booting a node without DHCP involves solving three crucial problems:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"1. Securely delivering boot image to the right node"},{"line_number":58,"context_line":"2. Gathering node configuration information from cloud or site-specific"},{"line_number":59,"context_line":"   infrastructure"},{"line_number":60,"context_line":"3. Provisioning node configuration (as well as authentication, identification"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_56693522","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":2},"updated":"2019-10-16 13:49:55.000000000","message":"Would be nice to list commonly supported methods.\n\n- pull image from HTTP/HTTPS (haven\u0027t seen FTP/SFTP/SSH)\n- use image hosted on NFS/CIFS\n\nIronic should then be able to store generated images on certain types of file shares. Ironic configuration should define\n\n- methods of storing boot images,\n- location path, and\n- credentials needed for that","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Booting a node without DHCP involves solving three crucial problems:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"1. Securely delivering boot image to the right node"},{"line_number":58,"context_line":"2. Gathering node configuration information from cloud or site-specific"},{"line_number":59,"context_line":"   infrastructure"},{"line_number":60,"context_line":"3. Provisioning node configuration (as well as authentication, identification"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_af1b1d7e","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":2},"in_reply_to":"3fa7e38b_56693522","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Booting a node without DHCP involves solving three crucial problems:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"1. Securely delivering boot image to the right node"},{"line_number":58,"context_line":"2. Gathering node configuration information from cloud or site-specific"},{"line_number":59,"context_line":"   infrastructure"},{"line_number":60,"context_line":"3. Provisioning node configuration (as well as authentication, identification"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_cefc94b7","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":2},"in_reply_to":"3fa7e38b_56693522","updated":"2019-10-17 21:28:42.000000000","message":"The point for the overall proposed change is more setting context as to why the problem exists. What your bringing up is a separate feature set request that would fit with-in different areas of the code base. If you really want the ability to use a SFTP/SSH/CIFS/NFS file share, then I recommend we start that as a separate spec.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"Booting a node without DHCP involves solving three crucial problems:"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"1. Securely delivering boot image to the right node"},{"line_number":58,"context_line":"2. Gathering node configuration information from cloud or site-specific"},{"line_number":59,"context_line":"   infrastructure"},{"line_number":60,"context_line":"3. Provisioning node configuration (as well as authentication, identification"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_ef27d5c6","line":57,"range":{"start_line":57,"start_character":0,"end_line":57,"end_character":2},"in_reply_to":"3fa7e38b_cefc94b7","updated":"2019-10-23 09:08:23.000000000","message":"+1","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":61,"context_line":"   etc) information to the operating system running on the node"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Virtual media capability of now days BMCs coupled with virtual media boot"},{"line_number":64,"context_line":"support implemented in some ironic hardware types (e.g."},{"line_number":65,"context_line":"`redfish-virtual-media`) fully solves problem (1). The rest of this spec is"},{"line_number":66,"context_line":"dedicated to pondering over puzzles (2) and (3)."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b663c941","line":64,"range":{"start_line":64,"start_character":28,"end_line":64,"end_character":34},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"   etc) information to the operating system running on the node"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Virtual media capability of now days BMCs coupled with virtual media boot"},{"line_number":64,"context_line":"support implemented in some ironic hardware types (e.g."},{"line_number":65,"context_line":"`redfish-virtual-media`) fully solves problem (1). The rest of this spec is"},{"line_number":66,"context_line":"dedicated to pondering over puzzles (2) and (3)."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_6f152549","line":64,"range":{"start_line":64,"start_character":28,"end_line":64,"end_character":34},"in_reply_to":"3fa7e38b_8e30dca0","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":61,"context_line":"   etc) information to the operating system running on the node"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Virtual media capability of now days BMCs coupled with virtual media boot"},{"line_number":64,"context_line":"support implemented in some ironic hardware types (e.g."},{"line_number":65,"context_line":"`redfish-virtual-media`) fully solves problem (1). The rest of this spec is"},{"line_number":66,"context_line":"dedicated to pondering over puzzles (2) and (3)."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_4f12a964","line":64,"range":{"start_line":64,"start_character":28,"end_line":64,"end_character":34},"in_reply_to":"3fa7e38b_b663c941","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":61,"context_line":"   etc) information to the operating system running on the node"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Virtual media capability of now days BMCs coupled with virtual media boot"},{"line_number":64,"context_line":"support implemented in some ironic hardware types (e.g."},{"line_number":65,"context_line":"`redfish-virtual-media`) fully solves problem (1). The rest of this spec is"},{"line_number":66,"context_line":"dedicated to pondering over puzzles (2) and (3)."},{"line_number":67,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_8e30dca0","line":64,"range":{"start_line":64,"start_character":28,"end_line":64,"end_character":34},"in_reply_to":"3fa7e38b_b663c941","updated":"2019-10-17 21:28:42.000000000","message":"Incorrect, please do not change.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":68,"context_line":"Gathering node configuration"},{"line_number":69,"context_line":"----------------------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_3657d95a","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":14},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":68,"context_line":"Gathering node configuration"},{"line_number":69,"context_line":"----------------------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_2f072d20","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":14},"in_reply_to":"3fa7e38b_2e25285d","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":68,"context_line":"Gathering node configuration"},{"line_number":69,"context_line":"----------------------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_0f0cb140","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":14},"in_reply_to":"3fa7e38b_3657d95a","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":68,"context_line":"Gathering node configuration"},{"line_number":69,"context_line":"----------------------------"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_2e25285d","line":71,"range":{"start_line":71,"start_character":8,"end_line":71,"end_character":14},"in_reply_to":"3fa7e38b_3657d95a","updated":"2019-10-17 21:28:42.000000000","message":"Incorrect, please do not change.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a71d09f0fae313aa7d6066b76fdb8b3e2fe899a6","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":77,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_55dfcb39","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":74},"updated":"2019-10-18 08:00:29.000000000","message":"do we have restrictions in this spec on the netboot in this case? apparently it does not work for it.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bc476b7be1ca1143ab5b5acc1f62dca9de09de5b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":77,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_e5f32908","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":74},"in_reply_to":"3fa7e38b_0ad482ba","updated":"2019-10-27 10:34:29.000000000","message":"Right, if the node has local drive and we deploy static configuration on it - for that case it\u0027s all already implemented so it\u0027s out of scope in this spec.\n\nWhat\u0027s not yet implemented and what this spec is trying to cover (among ramdisk configuration) is the case of diskless node where config-drive is nowhere to be written.\n\nIf boot_option is netbook I suppose the features in this spec won\u0027t be invoked at all, would they?\n\nDoes it make sense?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"43495d5a86c9a7a80cc12ed5497042deebc087de","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":77,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_0ad482ba","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":74},"in_reply_to":"3fa7e38b_52556cf9","updated":"2019-10-24 06:26:11.000000000","message":"Ah I maye mess up cases here, what I thought is this spec is describing the deployment stage, so after the deployment, how the instance retrieves the network information here, if we don\u0027t have DHCP in the deployment, I guess it\u0027s the same for an instance, it should be booted from disk.\nSo my thinking is whether we have some validation on the case boot_option\u003dnetboot, if statements above make sense.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":77,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_52556cf9","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":74},"in_reply_to":"3fa7e38b_55dfcb39","updated":"2019-10-23 09:08:23.000000000","message":"If you mean PXE, then setting ironic boot interface to \u0027ipmitool\u0027 will do it all. Otherwise, \u0027redfish-virtual-media\u0027 will do the ISO dance + static network config injection into the image.\n\nIf you mean DHCP phase, my current implementation first tries to find and apply local (config drive) configuration to the NICs. If that fails, ramdisk proceeds towards DHCP path.\n\nDoes it make sense?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fba23da2a2c02da7662dc4945d5be5f8df8e562f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":77,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_eb6fccf9","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":74},"in_reply_to":"3fa7e38b_55dfcb39","updated":"2019-10-22 14:23:59.000000000","message":"Well, netboot as it exists now using PXE wouldn\u0027t exist in this scenario, so I\u0027m not sure I understand your question.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":72,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":73,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":74,"context_line":"both boot operations should not depend on DHCP availability on the network."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":77,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_526eccc9","line":74,"range":{"start_line":74,"start_character":0,"end_line":74,"end_character":74},"in_reply_to":"3fa7e38b_eb6fccf9","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":76,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":77,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"},{"line_number":78,"context_line":"configuration to the tenant (e.g. config-drive [2]_) and even simplify the"},{"line_number":79,"context_line":"application of node configuration (e.g. cloud-init [3]_, os-net-config [4]_)."},{"line_number":80,"context_line":"All these capabilities together largely solve problems (2) and (3) for"},{"line_number":81,"context_line":"the tenants."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_1115073d","line":79,"updated":"2019-10-16 13:49:55.000000000","message":", or Ignition [x]_.\n\n.. [x] https://github.com/coreos/ignition/blob/master/doc/configuration-v3_0.md","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":76,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":77,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"},{"line_number":78,"context_line":"configuration to the tenant (e.g. config-drive [2]_) and even simplify the"},{"line_number":79,"context_line":"application of node configuration (e.g. cloud-init [3]_, os-net-config [4]_)."},{"line_number":80,"context_line":"All these capabilities together largely solve problems (2) and (3) for"},{"line_number":81,"context_line":"the tenants."},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b2906044","line":79,"in_reply_to":"3fa7e38b_1115073d","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a71d09f0fae313aa7d6066b76fdb8b3e2fe899a6","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d5c3bb56","line":90,"range":{"start_line":90,"start_character":43,"end_line":90,"end_character":71},"updated":"2019-10-18 08:00:29.000000000","message":"I guess IP addresses are still assigned by neutron, and it\u0027ll not revoke leases as long as the instance is alive, if I understand it correct.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_912257a2","line":90,"range":{"start_line":90,"start_character":9,"end_line":90,"end_character":15},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_92044480","line":90,"range":{"start_line":90,"start_character":43,"end_line":90,"end_character":71},"in_reply_to":"3fa7e38b_2602f90a","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"43495d5a86c9a7a80cc12ed5497042deebc087de","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_8a64f222","line":90,"range":{"start_line":90,"start_character":43,"end_line":90,"end_character":71},"in_reply_to":"3fa7e38b_2602f90a","updated":"2019-10-24 06:26:11.000000000","message":"this sounds like the spec is targeting standalone mode, I am a bit lost here, urh, it seems no sign of this implication.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_729ae862","line":90,"range":{"start_line":90,"start_character":9,"end_line":90,"end_character":15},"in_reply_to":"3fa7e38b_4e2ae42c","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"43495d5a86c9a7a80cc12ed5497042deebc087de","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d035b8dc","line":90,"range":{"start_line":90,"start_character":43,"end_line":90,"end_character":71},"in_reply_to":"3fa7e38b_72e8a8b2","updated":"2019-10-24 06:26:11.000000000","message":"I am just confused by the use case here, my comment is for using with neutron, user has freedom to choose how to do the IPAM for ironic standalone, but text below also show some integration with nova, it seems I am missing some background on the spec..","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bc476b7be1ca1143ab5b5acc1f62dca9de09de5b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_45e23d32","line":90,"range":{"start_line":90,"start_character":43,"end_line":90,"end_character":71},"in_reply_to":"3fa7e38b_8a64f222","updated":"2019-10-27 10:34:29.000000000","message":"This spec is targeting both use-cases that is:\n\n1) stand-alone ironic\n2) ironic within OpenStack","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_5297ac3b","line":90,"range":{"start_line":90,"start_character":9,"end_line":90,"end_character":15},"in_reply_to":"3fa7e38b_912257a2","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_4e2ae42c","line":90,"range":{"start_line":90,"start_character":9,"end_line":90,"end_character":15},"in_reply_to":"3fa7e38b_912257a2","updated":"2019-10-17 21:28:42.000000000","message":"Incorrect, please do not change.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bc476b7be1ca1143ab5b5acc1f62dca9de09de5b","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_65df3966","line":90,"range":{"start_line":90,"start_character":43,"end_line":90,"end_character":71},"in_reply_to":"3fa7e38b_d035b8dc","updated":"2019-10-27 10:34:29.000000000","message":"Right, I am trying to support both stand-alone and OpenStack use-cases within this spec. I\u0027ve updated it lately, does it make make the intention any clearer?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fba23da2a2c02da7662dc4945d5be5f8df8e562f","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_2602f90a","line":90,"range":{"start_line":90,"start_character":43,"end_line":90,"end_character":71},"in_reply_to":"3fa7e38b_d5c3bb56","updated":"2019-10-22 14:23:59.000000000","message":"That _can_ be the case. Part of the operating model we need to support is the possibility of things that neutron has no clue about, where the operator does have an understanding of its existence. In other words, I want to deploy a machine that is six steps removed from me, and is not neutron integrated.\n\nGranted, for the nova workflow this doesn\u0027t really work if neutron is not aware and does not control the far edge networking, but this does work for the Metal3/Standalone/BMaaS directly with ironic use case.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  with ironic port object. The assumption is that the operator would use"},{"line_number":88,"context_line":"  some other mechanism for baremetal IP address management."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":91,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_72e8a8b2","line":90,"range":{"start_line":90,"start_character":43,"end_line":90,"end_character":71},"in_reply_to":"3fa7e38b_d5c3bb56","updated":"2019-10-23 09:08:23.000000000","message":"The previous bullet point is to let the operator manage IP allocation without Neutron entirely.\n\nThis use-case relies on Neutron for address allocation (among other networking things). From Neutron standpoint, this use-case should not be different from DHCP-based. It\u0027s just that DHCP request never comes from the node.\n\nThat\u0027s my understanding, may be we should do something extra to pin once allocated IP at Neutron for as long as ironic knows the node is alive and kicking?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a71d09f0fae313aa7d6066b76fdb8b3e2fe899a6","unresolved":false,"context_lines":[{"line_number":94,"context_line":"-------------------------------"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_55ad8b99","line":97,"updated":"2019-10-18 08:00:29.000000000","message":"If my memory is correct, there is a metadata service available, and in case of cloud-init, it takes precedence in the order before reading config drive.\n\nBtw, we need to note that config drive is not always available, except we explicitly required so, or set it true in the nova configuration option. If config drive is mandatory in this spec, then we should document it.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bc476b7be1ca1143ab5b5acc1f62dca9de09de5b","unresolved":false,"context_lines":[{"line_number":94,"context_line":"-------------------------------"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_25d7014e","line":97,"in_reply_to":"3fa7e38b_30752c99","updated":"2019-10-27 10:34:29.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":94,"context_line":"-------------------------------"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b27aa0ed","line":97,"in_reply_to":"3fa7e38b_55ad8b99","updated":"2019-10-23 09:08:23.000000000","message":"\u003e If my memory is correct, there is a metadata service available, and in case of cloud-init, it takes precedence in the order before reading config drive.\n\nOnce the node is booted, it has no immediate network connectivity. That should effectively block out nova metadata service. If local config drive is available, I suppose cloud-init would use it because there should be nothing else... WDYT?\n\n\u003e Btw, we need to note that config drive is not always available, except we explicitly required so, or set it true in the nova configuration option. If config drive is mandatory in this spec, then we should document it.\n\nWith my current experimental implementation, ironic builds its own config drive only if Nova has not supplied hers. However, if Nova supplies config drive, it should probably contain the same network configuration as ironic gathers from Neutron and turns into network_data.json.\n\nI think we have these details down the spec.\n\nDoes it make sense?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"43495d5a86c9a7a80cc12ed5497042deebc087de","unresolved":false,"context_lines":[{"line_number":94,"context_line":"-------------------------------"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_30752c99","line":97,"in_reply_to":"3fa7e38b_b27aa0ed","updated":"2019-10-24 06:26:11.000000000","message":"Sure","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a71d09f0fae313aa7d6066b76fdb8b3e2fe899a6","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d5a65bac","line":98,"range":{"start_line":98,"start_character":58,"end_line":98,"end_character":78},"updated":"2019-10-18 08:00:29.000000000","message":"actually configdrive works for whole disk, we\u0027ll shrink the partition a bit to make room for it.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."},{"line_number":101,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_72d2e8d3","line":98,"range":{"start_line":98,"start_character":58,"end_line":98,"end_character":78},"in_reply_to":"3fa7e38b_d5a65bac","updated":"2019-10-23 09:08:23.000000000","message":"Right, but this spec just proposes another way. In case partition shrinking is undesirable for some reason.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"However, there seems to be no obvious way to supply network configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f132abf1","line":99,"range":{"start_line":99,"start_character":39,"end_line":99,"end_character":41},"updated":"2019-10-16 13:49:55.000000000","message":"CD or Flash disk image","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"However, there seems to be no obvious way to supply network configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_92ee8489","line":99,"range":{"start_line":99,"start_character":39,"end_line":99,"end_character":41},"in_reply_to":"3fa7e38b_4eb8a4e4","updated":"2019-10-23 09:08:23.000000000","message":"+1","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"However, there seems to be no obvious way to supply network configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_4eb8a4e4","line":99,"range":{"start_line":99,"start_character":39,"end_line":99,"end_character":41},"in_reply_to":"3fa7e38b_f132abf1","updated":"2019-10-17 21:28:42.000000000","message":"Functionally a possibility if those virtual media devices can handle such, but changing this begins to scope creep the overall effort.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":96,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":97,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":98,"context_line":"(config-drive on a dedicated partition). For diskless and whole disk scenarios,"},{"line_number":99,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":100,"context_line":"tenant."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"However, there seems to be no obvious way to supply network configuration"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_72ebc877","line":99,"range":{"start_line":99,"start_character":39,"end_line":99,"end_character":41},"in_reply_to":"3fa7e38b_f132abf1","updated":"2019-10-23 09:08:23.000000000","message":"I think virtual Flash is also a way to go. However it\u0027s currently not supported in ironic/sushy.\n\nWould it make sense to have CD-based spec/implementation out, then focus on expanding on it?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":102,"context_line":"However, there seems to be no obvious way to supply network configuration"},{"line_number":103,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":104,"context_line":"configuration (along with node identification and security information)"},{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_9157b701","line":105,"range":{"start_line":105,"start_character":17,"end_line":105,"end_character":21},"updated":"2019-10-16 13:49:55.000000000","message":"ISO or Flash disk","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":102,"context_line":"However, there seems to be no obvious way to supply network configuration"},{"line_number":103,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":104,"context_line":"configuration (along with node identification and security information)"},{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_1287f4b8","line":105,"range":{"start_line":105,"start_character":17,"end_line":105,"end_character":21},"in_reply_to":"3fa7e38b_9157b701","updated":"2019-10-23 09:08:23.000000000","message":"Ditto. BTW, Flash media probably opens up other file system possibilities besides ISO.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":103,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":104,"context_line":"configuration (along with node identification and security information)"},{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_3142833f","line":106,"range":{"start_line":106,"start_character":11,"end_line":106,"end_character":15},"updated":"2019-10-16 13:49:55.000000000","message":"ISO or Flash disk images","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":103,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":104,"context_line":"configuration (along with node identification and security information)"},{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f6d701ed","line":106,"range":{"start_line":106,"start_character":49,"end_line":106,"end_character":55},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":103,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":104,"context_line":"configuration (along with node identification and security information)"},{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f28b38bd","line":106,"range":{"start_line":106,"start_character":49,"end_line":106,"end_character":55},"in_reply_to":"3fa7e38b_2eda084b","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":103,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":104,"context_line":"configuration (along with node identification and security information)"},{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_328230a7","line":106,"range":{"start_line":106,"start_character":11,"end_line":106,"end_character":15},"in_reply_to":"3fa7e38b_3142833f","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":103,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":104,"context_line":"configuration (along with node identification and security information)"},{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d2907cf0","line":106,"range":{"start_line":106,"start_character":49,"end_line":106,"end_character":55},"in_reply_to":"3fa7e38b_f6d701ed","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":103,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"},{"line_number":104,"context_line":"configuration (along with node identification and security information)"},{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_2eda084b","line":106,"range":{"start_line":106,"start_character":49,"end_line":106,"end_character":55},"in_reply_to":"3fa7e38b_f6d701ed","updated":"2019-10-17 21:28:42.000000000","message":"Incorrect, please do not change.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"},{"line_number":110,"context_line":"proposes reusing Nova metadata (`network-data.json` [8]_), for the ramdisk boot"},{"line_number":111,"context_line":"use-case."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f18e2b77","line":108,"updated":"2019-10-16 13:49:55.000000000","message":"Flash disk image is advantageous to the ISO disk image, as it is not sealed and could easily be modified by loop-mounting it\u0027s contents in read-write mode. Servers, capable of booting from virtual media do support both ISO and FAT32/exFAT Flash disk images with MBR partition table.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"},{"line_number":110,"context_line":"proposes reusing Nova metadata (`network-data.json` [8]_), for the ramdisk boot"},{"line_number":111,"context_line":"use-case."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_5239ecef","line":108,"in_reply_to":"3fa7e38b_ae74b837","updated":"2019-10-23 09:08:23.000000000","message":"Does UEFI work with USB media as well?\n\nMy problem here is that I am yet to understand what we are up to here.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"},{"line_number":110,"context_line":"proposes reusing Nova metadata (`network-data.json` [8]_), for the ramdisk boot"},{"line_number":111,"context_line":"use-case."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b24dc09a","line":108,"in_reply_to":"3fa7e38b_f18e2b77","updated":"2019-10-23 09:08:23.000000000","message":"Could you please elaborate the exact desire here?\n\nI am not sure how would be preserve the modified USB flash image, if it\u0027s the goal here? We should probably host the image somewhere external to BMC, and let BMC mount it over the network...?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":105,"context_line":"into the ramdisk ISO image the node has been booted from. Preparing"},{"line_number":106,"context_line":"customised ISO images is facilitated by existing ironic image building"},{"line_number":107,"context_line":"infrastructure."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"To facilitate network configuration processing and application, this spec"},{"line_number":110,"context_line":"proposes reusing Nova metadata (`network-data.json` [8]_), for the ramdisk boot"},{"line_number":111,"context_line":"use-case."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_ae74b837","line":108,"in_reply_to":"3fa7e38b_f18e2b77","updated":"2019-10-17 21:28:42.000000000","message":"ISO was chosen because we\u0027re trying to get away from MBR booting, and there have been server vendors ripping out MBR recognition for a while now. It does mean an increase in IO to master a new ISO for a read-only file system though. It is a trade-off that is surprisingly more palatable to the larger community than the original idea. That said, if we wanted to also support a MBR style bootable image via the virtual media attachment endpoint, I think it would be a good iteration beyond this initial spec.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_7b069c1e","line":114,"updated":"2019-10-16 11:37:21.000000000","message":"os-net-config is a relatively small python library, it\u0027s not heavy. agree about cloud-init.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d5bdc602","line":114,"in_reply_to":"3fa7e38b_1f3e4db9","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fba23da2a2c02da7662dc4945d5be5f8df8e562f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_c6544501","line":114,"in_reply_to":"3fa7e38b_1f3e4db9","updated":"2019-10-22 14:23:59.000000000","message":"From my POV, configdrive parsing support should be available in cloud-init if memory serves, which should make it available to numerous operating systems. Ignition is just going to be CoreOS. As far as I see os-net-config, TripleO on Centos/RHEL.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0963108cca5ffaf3052a3ea40f77b609db12b7c9","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_1f3e4db9","line":114,"in_reply_to":"3fa7e38b_2ee448e0","updated":"2019-10-18 11:19:27.000000000","message":"Is there are any like that?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d548665d","line":114,"in_reply_to":"3fa7e38b_2ee448e0","updated":"2019-10-23 09:08:23.000000000","message":"Just to note that this spec is not so much about how operating systems should consume network configuration... In this spec we should probably focus on the form in which ironic generates the config.\n\nBTW, in nova-less scenario, network config is almost not interpreted by ironic. It\u0027s almost being passed end-to-end from ironic port to the instance without interpretation. This almost is due to my understanding that ironic node can have more than one ironic port. That sort of implies that ironic should collect `network_data` from each and somehow combine them into a single `network_data` JSON. This merging trick requires the knowledge of the format. Am I missing something?\n\nWhen ironic generates the config when running with Nova, it sort of obvious to use Nova format for the config file because the instance might have to deal with Nova later in life.\n\nGenerally, OpenStack metadata is one of the mainstream and probably the only (?) vendor-neutral formats for the purpose. That makes it seemingly better agreeable within the larger community.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_153a7ecc","line":114,"in_reply_to":"3fa7e38b_66a6b156","updated":"2019-10-23 09:08:23.000000000","message":"\"The intention is for this code to be moved under the tripleo project in due course.\" [1]\n\n1. https://github.com/openstack/os-net-config","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_2ee448e0","line":114,"in_reply_to":"3fa7e38b_7b069c1e","updated":"2019-10-17 21:28:42.000000000","message":"I\u0027m basically out of spoons for the network config data transfer/processing method discussion after the last few years. Lets just pick one please that is not from a single focused community and that will not alienate other communities or operating systems.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b21b807e","line":114,"in_reply_to":"3fa7e38b_7b069c1e","updated":"2019-10-23 09:08:23.000000000","message":"Rephrased.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_95350eab","line":114,"in_reply_to":"3fa7e38b_c6544501","updated":"2019-10-23 09:08:23.000000000","message":"+1","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b0a7137f6ae8f67b521a6951ed750afc1f2a8d4e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"use-case."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":114,"context_line":"heavyweight tools like cloud-init or os-net-config - for sake of low resource"},{"line_number":115,"context_line":"footprint, some ramdisk implementations might choose to implement its own"},{"line_number":116,"context_line":"way of network configuration application."},{"line_number":117,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_66a6b156","line":114,"in_reply_to":"3fa7e38b_c6544501","updated":"2019-10-22 14:46:44.000000000","message":"os-net-config depends on neither tripleo nor centos though.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"* Reusing Nova metadata representation for provisioning network configuration"},{"line_number":122,"context_line":"  to ramdisk"},{"line_number":123,"context_line":"* Burning config-drive into bootable ISO images (both, ramdisk and deploy)"},{"line_number":124,"context_line":"  as a FAT or ISO image file. Booted operating system can access"},{"line_number":125,"context_line":"  configuration information by mounting virtual media CD, then mounting"},{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b16193ab","line":123,"range":{"start_line":123,"start_character":37,"end_line":123,"end_character":41},"updated":"2019-10-16 13:49:55.000000000","message":"ISO or Flash disk","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"* Reusing Nova metadata representation for provisioning network configuration"},{"line_number":122,"context_line":"  to ramdisk"},{"line_number":123,"context_line":"* Burning config-drive into bootable ISO images (both, ramdisk and deploy)"},{"line_number":124,"context_line":"  as a FAT or ISO image file. Booted operating system can access"},{"line_number":125,"context_line":"  configuration information by mounting virtual media CD, then mounting"},{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_7542d211","line":123,"range":{"start_line":123,"start_character":37,"end_line":123,"end_character":41},"in_reply_to":"3fa7e38b_b16193ab","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":123,"context_line":"* Burning config-drive into bootable ISO images (both, ramdisk and deploy)"},{"line_number":124,"context_line":"  as a FAT or ISO image file. Booted operating system can access"},{"line_number":125,"context_line":"  configuration information by mounting virtual media CD, then mounting"},{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_9b09182c","line":126,"updated":"2019-10-16 11:37:21.000000000","message":"nit: use ::","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":123,"context_line":"* Burning config-drive into bootable ISO images (both, ramdisk and deploy)"},{"line_number":124,"context_line":"  as a FAT or ISO image file. Booted operating system can access"},{"line_number":125,"context_line":"  configuration information by mounting virtual media CD, then mounting"},{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_75109201","line":126,"in_reply_to":"3fa7e38b_9b09182c","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a71d09f0fae313aa7d6066b76fdb8b3e2fe899a6","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_9516a3a7","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":33},"updated":"2019-10-18 08:00:29.000000000","message":"since it\u0027s not a compatible config drive format, maybe network-config.img?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bc476b7be1ca1143ab5b5acc1f62dca9de09de5b","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_45bb1d0e","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":33},"in_reply_to":"3fa7e38b_509d48b9","updated":"2019-10-27 10:34:29.000000000","message":"Right, through user-data.\n\nHowever! Cloud-init won\u0027t be able to find our config-drive unless it\u0027s pre-mounted. That\u0027s sort of a limitation in the sense that we can\u0027t use generic cloud-init images without making them trying to mount /dev/cdrom prior to cloud-init invocation.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"43495d5a86c9a7a80cc12ed5497042deebc087de","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f0a314ff","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":33},"in_reply_to":"3fa7e38b_86672deb","updated":"2019-10-24 06:26:11.000000000","message":"I am just unsure about whether cloud-init could handle a configdrive with partial data (i.e. network-data.json).","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_c2d18331","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":33},"in_reply_to":"3fa7e38b_86672deb","updated":"2019-10-23 09:08:23.000000000","message":"True. However, AFAIK cloud-init can be configured to do some custom actions. I am hoping that that feature could be used to make cloud-init finding our config drive image on the ISO.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_82262b68","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":33},"in_reply_to":"3fa7e38b_9516a3a7","updated":"2019-10-23 09:08:23.000000000","message":"It should be compatible. The only difference is that conventionally, config drive resides on its own partition, not as a file image.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fba23da2a2c02da7662dc4945d5be5f8df8e562f","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_86672deb","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":33},"in_reply_to":"3fa7e38b_9516a3a7","updated":"2019-10-22 14:23:59.000000000","message":"Well, it could be. Generating a config drive is trivial, the only difference is something like cloud-init would never find an ISO file to mount to cause the label it looks for to be discover-able.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"43495d5a86c9a7a80cc12ed5497042deebc087de","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_509d48b9","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":33},"in_reply_to":"3fa7e38b_c2d18331","updated":"2019-10-24 06:26:11.000000000","message":"Yep, it\u0027s possible to inject some scripts to the configdrive.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bc476b7be1ca1143ab5b5acc1f62dca9de09de5b","unresolved":false,"context_lines":[{"line_number":126,"context_line":"  config-drive image residing on the mounted ISO image:"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"  # mount -o ro /dev/cdrom /mnt"},{"line_number":129,"context_line":"  # mount -o ro /mnt/config-2.img /CONFIG-2"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_c5c70d98","line":129,"range":{"start_line":129,"start_character":21,"end_line":129,"end_character":33},"in_reply_to":"3fa7e38b_f0a314ff","updated":"2019-10-27 10:34:29.000000000","message":"I think it should. At least I\u0027ve seen that somewhere in the docs.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d109afdc","line":134,"range":{"start_line":134,"start_character":52,"end_line":134,"end_character":58},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_3b14a443","line":134,"updated":"2019-10-16 11:37:21.000000000","message":"bike-shedding: s/network_data/configuration/ ?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_8282abff","line":134,"range":{"start_line":134,"start_character":52,"end_line":134,"end_character":58},"in_reply_to":"3fa7e38b_2efd286e","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_c288a323","line":134,"in_reply_to":"3fa7e38b_3b14a443","updated":"2019-10-23 09:08:23.000000000","message":"My reasoning for `network_data` attribute name is this:\n\n* It ties this piece of configuration to its purpose - network configuration\n* Its name suggests the kind of configuration it might hold - cloud-init\n\nIf we go with just `configuration`, would that be too broad and thus potentially colliding with future port attributes?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_e28b5f1b","line":134,"range":{"start_line":134,"start_character":52,"end_line":134,"end_character":58},"in_reply_to":"3fa7e38b_d109afdc","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":131,"context_line":"Ironic conductor changes"},{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_2efd286e","line":134,"range":{"start_line":134,"start_character":52,"end_line":134,"end_character":58},"in_reply_to":"3fa7e38b_d109afdc","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_710c7beb","line":135,"range":{"start_line":135,"start_character":51,"end_line":135,"end_character":57},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_a2856709","line":135,"range":{"start_line":135,"start_character":51,"end_line":135,"end_character":57},"in_reply_to":"3fa7e38b_710c7beb","updated":"2019-10-23 09:08:23.000000000","message":"If I was to implement the proposed change, I\u0027d probably use `sed` globally. Rather than following each occurrence by hand. Computers can be useful at times! \\o/","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_aef03893","line":135,"range":{"start_line":135,"start_character":51,"end_line":135,"end_character":57},"in_reply_to":"3fa7e38b_710c7beb","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":132,"context_line":"------------------------"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_427cb31f","line":135,"range":{"start_line":135,"start_character":51,"end_line":135,"end_character":57},"in_reply_to":"3fa7e38b_aef03893","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a71d09f0fae313aa7d6066b76fdb8b3e2fe899a6","unresolved":false,"context_lines":[{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f5527768","line":137,"range":{"start_line":137,"start_character":44,"end_line":137,"end_character":48},"updated":"2019-10-18 08:00:29.000000000","message":"Does it imply the json will be converted to something else? I wonder what is the target format if true.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":134,"context_line":"* Add new, user manageable, field `network_data` in ironic port"},{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_42a11395","line":137,"range":{"start_line":137,"start_character":44,"end_line":137,"end_character":48},"in_reply_to":"3fa7e38b_f5527768","updated":"2019-10-23 09:08:23.000000000","message":"No, it might be the same JSON. Let\u0027s remove blob!","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b6074982","line":138,"range":{"start_line":138,"start_character":49,"end_line":138,"end_character":55},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_e2deff0e","line":138,"range":{"start_line":138,"start_character":49,"end_line":138,"end_character":55},"in_reply_to":"3fa7e38b_b6074982","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_eef63091","line":138,"range":{"start_line":138,"start_character":49,"end_line":138,"end_character":55},"in_reply_to":"3fa7e38b_b6074982","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  object conveying ramdisk and tenant (stand-alone ironic use-case) network"},{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_82e5cbde","line":138,"range":{"start_line":138,"start_character":49,"end_line":138,"end_character":55},"in_reply_to":"3fa7e38b_eef63091","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d60a0588","line":139,"range":{"start_line":139,"start_character":37,"end_line":139,"end_character":43},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_62ca0f47","line":139,"range":{"start_line":139,"start_character":37,"end_line":139,"end_character":43},"in_reply_to":"3fa7e38b_ceed74b8","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_42cfd356","line":139,"range":{"start_line":139,"start_character":37,"end_line":139,"end_character":43},"in_reply_to":"3fa7e38b_d60a0588","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":136,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_ceed74b8","line":139,"range":{"start_line":139,"start_character":37,"end_line":139,"end_character":43},"in_reply_to":"3fa7e38b_d60a0588","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_5b0f202d","line":140,"updated":"2019-10-16 11:37:21.000000000","message":"There doesn\u0027t seem to be any reference of the Nova format, but from the examples it doesn\u0027t seem to be really per-port. Could you provide an example with two ports of how each configuration would look and what the resulting JSON is?\n\nDo we only support the items under \"networks\"? Will we support DNS? Will we support VLAN (I guess supporting bonds is a bit too much)?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":137,"context_line":"  be a well-formed `network-data.json` [8]_ blob describing network"},{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_62fd2f3a","line":140,"in_reply_to":"3fa7e38b_5b0f202d","updated":"2019-10-23 09:08:23.000000000","message":"It seems to be per port, if I understand you. Networks (L3) are tied to links (L2) by `id`. There can be multiple networks per link.\n\nAdded two-port example JSON. I think we should support DNS (added). We can support VLANs and bonds for as long as the kernel can do it. But in that case I\u0027d probably summon cloud-init...","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a71d09f0fae313aa7d6066b76fdb8b3e2fe899a6","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":144,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_359c8f0d","line":141,"updated":"2019-10-18 08:00:29.000000000","message":"I am not fond of adding the field to the port object, the network data seems to be a complex of settings that may not suitable to be separated per-port, especially when we need bonding support. It doesn\u0027t sound like an usual case in deployment, but might help for ramdisk deploy interface.\n\nSo I suggest we put the network configuration to the node object, e.g. instance_info or a new field more preferable from dtantsur.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"43495d5a86c9a7a80cc12ed5497042deebc087de","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":144,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f058f4fa","line":141,"in_reply_to":"3fa7e38b_027f9bab","updated":"2019-10-24 06:26:11.000000000","message":"Well, I think it\u0027s fine to tie to physical NICs, still there are virtual nics widely used, moving the network data to node may have room for furture extensions.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":144,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_0258fb53","line":141,"in_reply_to":"3fa7e38b_06825d53","updated":"2019-10-23 09:08:23.000000000","message":"I can think of throughput (pulling large deploy images) or reliability. But, yeah.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"43495d5a86c9a7a80cc12ed5497042deebc087de","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":144,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_10803046","line":141,"in_reply_to":"3fa7e38b_06825d53","updated":"2019-10-24 06:26:11.000000000","message":"bonding is not a useful thing in deployment, but might help a bit for ramdisk deployment interface?\nActually it\u0027s just kind of view point how we think about the network configuration, it\u0027s port associated or node associated? I think binding to the node may have a bit flexibility for future extension.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bc476b7be1ca1143ab5b5acc1f62dca9de09de5b","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":144,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_253ce191","line":141,"in_reply_to":"3fa7e38b_10803046","updated":"2019-10-27 10:34:29.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":144,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_027f9bab","line":141,"in_reply_to":"3fa7e38b_359c8f0d","updated":"2019-10-23 09:08:23.000000000","message":"My understanding of the data model is that ironic port is associated with one physical NIC. Port group is associated with a bond of physical NICs. Each ironic node can have multiple ironic ports.\n\nNow, the configuration we are talking about is tied to physical NICs. That makes it seemingly reasonable to keep network config close to ironic port object.\n\nIf we have the config tied to ironic node object, then there could be situations when the config for the port is present, but the port is missing...\n\nWDYT?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fba23da2a2c02da7662dc4945d5be5f8df8e562f","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":144,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_06825d53","line":141,"in_reply_to":"3fa7e38b_359c8f0d","updated":"2019-10-22 14:23:59.000000000","message":"We could use a new field, but I\u0027m really unsure why we need to support bonding for deployments. I can see vlans though.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bc476b7be1ca1143ab5b5acc1f62dca9de09de5b","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":139,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":140,"context_line":"  files into one."},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":143,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":144,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_053765b2","line":141,"in_reply_to":"3fa7e38b_f058f4fa","updated":"2019-10-27 10:34:29.000000000","message":"I have no objection to that, except that having network information actually referring to ports bound to the node can lead to inconsistencies. Like if we list MACs or some other port properties in node-bound JSON, once we remove ports network configuration would become useless.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_fb192c79","line":152,"updated":"2019-10-16 11:37:21.000000000","message":"What happens if a port also has non-empty network_data?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_7dcf1029","line":152,"in_reply_to":"3fa7e38b_668c717f","updated":"2019-10-23 09:08:23.000000000","message":"We all work diligently towards that goal!","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_fd4d40c4","line":152,"in_reply_to":"3fa7e38b_95330314","updated":"2019-10-23 09:08:23.000000000","message":"With my current implementation, non-neuron port can only have network_data property. Neuron ports can additionally collect network data from Neutron.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fba23da2a2c02da7662dc4945d5be5f8df8e562f","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_668c717f","line":152,"in_reply_to":"3fa7e38b_95330314","updated":"2019-10-22 14:23:59.000000000","message":"Without and without, I believe we should expect to fail.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"a71d09f0fae313aa7d6066b76fdb8b3e2fe899a6","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_95330314","line":152,"in_reply_to":"3fa7e38b_fb192c79","updated":"2019-10-18 08:00:29.000000000","message":"Hmmm, so... AIUI for the neutron network, network data generated by ironic should take precedence.\n\nThen another question arises, what about non-neutron network but without network_data? ;)","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_9d5d2c7b","line":152,"in_reply_to":"3fa7e38b_fb192c79","updated":"2019-10-23 09:08:23.000000000","message":"With current implementation, port configuration takes precedence over neutron originated one. My thinking is that ironic pulling data from neutron is something being done automatically, by default. Attaching network_data to ironic port is a manual work done by the operator. So perhaps they were conscious about that.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_96000d68","line":154,"range":{"start_line":154,"start_character":40,"end_line":154,"end_character":46},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_3d02f83f","line":154,"range":{"start_line":154,"start_character":40,"end_line":154,"end_character":46},"in_reply_to":"3fa7e38b_6e2800ee","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_9debec76","line":154,"range":{"start_line":154,"start_character":40,"end_line":154,"end_character":46},"in_reply_to":"3fa7e38b_96000d68","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":151,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":152,"context_line":"  information [9]_."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_6e2800ee","line":154,"range":{"start_line":154,"start_character":40,"end_line":154,"end_character":46},"in_reply_to":"3fa7e38b_96000d68","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":158,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_36fb5979","line":157,"range":{"start_line":157,"start_character":40,"end_line":157,"end_character":46},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":158,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_5dfd7439","line":157,"range":{"start_line":157,"start_character":40,"end_line":157,"end_character":46},"in_reply_to":"3fa7e38b_36fb5979","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":158,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_8e2d3cff","line":157,"range":{"start_line":157,"start_character":40,"end_line":157,"end_character":46},"in_reply_to":"3fa7e38b_36fb5979","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":154,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":158,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_fdfb0044","line":157,"range":{"start_line":157,"start_character":40,"end_line":157,"end_character":46},"in_reply_to":"3fa7e38b_8e2d3cff","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":158,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Alternatives"},{"line_number":161,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_11fbc7bd","line":158,"range":{"start_line":158,"start_character":11,"end_line":158,"end_character":14},"updated":"2019-10-16 13:49:55.000000000","message":"ISO or Flash disk","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":158,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Alternatives"},{"line_number":161,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_1b15283d","line":158,"updated":"2019-10-16 11:37:21.000000000","message":"Why do we need it? It seems that we only need network_data.json. do we expect using the config drive for anything else?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":158,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Alternatives"},{"line_number":161,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_7d6b90f0","line":158,"range":{"start_line":158,"start_character":11,"end_line":158,"end_character":14},"in_reply_to":"3fa7e38b_11fbc7bd","updated":"2019-10-23 09:08:23.000000000","message":"Let\u0027s keep Flash separately.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":155,"context_line":"  `network_data.json` on it."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":158,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"Alternatives"},{"line_number":161,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_dd640424","line":158,"in_reply_to":"3fa7e38b_1b15283d","updated":"2019-10-23 09:08:23.000000000","message":"My crystal ball is murky today. No idea what future holds, ironically speaking. But it\u0027s good to have a place for something once we need it.\n\nSeriously, my main motivation here is to unify with user images as much as possible. They seem to pack network_config.json into config-drive. If we do the same, then (1) it\u0027 easier to understand/manage and (2) we could serve user images nova-less through the same ironic mechanism.\n\nRegarding (2), we could unpack and dump user-specified config drive right into ISO\u0027s root. However that is more likely to cause collisions with the files we write there ourselves... When we operate on config-drive image, the ISO file system names are fully under our control.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":160,"context_line":"Alternatives"},{"line_number":161,"context_line":"------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_56f61591","line":163,"range":{"start_line":163,"start_character":22,"end_line":163,"end_character":28},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":160,"context_line":"Alternatives"},{"line_number":161,"context_line":"------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_3d7518cd","line":163,"range":{"start_line":163,"start_character":22,"end_line":163,"end_character":28},"in_reply_to":"3fa7e38b_2e320860","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":160,"context_line":"Alternatives"},{"line_number":161,"context_line":"------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_9d6e8cfe","line":163,"range":{"start_line":163,"start_character":22,"end_line":163,"end_character":28},"in_reply_to":"3fa7e38b_56f61591","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":160,"context_line":"Alternatives"},{"line_number":161,"context_line":"------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_2e320860","line":163,"range":{"start_line":163,"start_character":22,"end_line":163,"end_character":28},"in_reply_to":"3fa7e38b_56f61591","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":161,"context_line":"------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f6f06193","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":6},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":161,"context_line":"------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_1d7a9cb9","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":6},"in_reply_to":"3fa7e38b_4e37444f","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":161,"context_line":"------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_5d7014db","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":6},"in_reply_to":"3fa7e38b_f6f06193","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":161,"context_line":"------------"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":167,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_4e37444f","line":164,"range":{"start_line":164,"start_character":0,"end_line":164,"end_character":6},"in_reply_to":"3fa7e38b_f6f06193","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Alternatively to relying on config-drive, we could leverage os-net-config"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_bb29748a","line":165,"updated":"2019-10-16 11:37:21.000000000","message":"s/might not/will not/","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Alternatively to relying on config-drive, we could leverage os-net-config"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_9d476c78","line":165,"in_reply_to":"3fa7e38b_4e8504cf","updated":"2019-10-23 09:08:23.000000000","message":"\\o/","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Alternatively to relying on config-drive, we could leverage os-net-config"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_4e8504cf","line":165,"in_reply_to":"3fa7e38b_bb29748a","updated":"2019-10-17 21:28:42.000000000","message":"++ absolutely will not.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Alternatively to make ironic gathering and building `network-data.json` [8]_,"},{"line_number":164,"context_line":"ironic could just directly request Nova metadata service [10]_ to produce"},{"line_number":165,"context_line":"necessary file by instance ID. However, this might not work for non-deploy"},{"line_number":166,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"Alternatively to relying on config-drive, we could leverage os-net-config"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_7d44f074","line":165,"in_reply_to":"3fa7e38b_bb29748a","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":169,"context_line":"feature of taking its compressed configuration from kernel parameters. On"},{"line_number":170,"context_line":"the flip side, the size of kernel cmdline is severely limited (256+ bytes)."},{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_db2c709a","line":172,"updated":"2019-10-16 11:37:21.000000000","message":"cloud-init - yes, network_data is OpenStack-specific, so it doesn\u0027t seem to be an big advantage.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0963108cca5ffaf3052a3ea40f77b609db12b7c9","unresolved":false,"context_lines":[{"line_number":169,"context_line":"feature of taking its compressed configuration from kernel parameters. On"},{"line_number":170,"context_line":"the flip side, the size of kernel cmdline is severely limited (256+ bytes)."},{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_bf78598f","line":172,"in_reply_to":"3fa7e38b_6e76c00f","updated":"2019-10-18 11:19:27.000000000","message":"You mean, cloud-init? Yeah, totally, cloud-init supports many things. I\u0027m just pointing out that network_data is not quite a standard, but rather cloud-init is good at understanding many formats.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":169,"context_line":"feature of taking its compressed configuration from kernel parameters. On"},{"line_number":170,"context_line":"the flip side, the size of kernel cmdline is severely limited (256+ bytes)."},{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f88f8e72","line":172,"in_reply_to":"3fa7e38b_bf78598f","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fba23da2a2c02da7662dc4945d5be5f8df8e562f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"feature of taking its compressed configuration from kernel parameters. On"},{"line_number":170,"context_line":"the flip side, the size of kernel cmdline is severely limited (256+ bytes)."},{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_c63e858a","line":172,"in_reply_to":"3fa7e38b_bf78598f","updated":"2019-10-22 14:23:59.000000000","message":"I completely agree. I thought, and maybe I\u0027m wrong, that network_data support on openstack was added so that more advanced networking could be articulated. If that is not the case, then I\u0027ll just shrug.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":169,"context_line":"feature of taking its compressed configuration from kernel parameters. On"},{"line_number":170,"context_line":"the flip side, the size of kernel cmdline is severely limited (256+ bytes)."},{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_188b8a68","line":172,"in_reply_to":"3fa7e38b_c63e858a","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":169,"context_line":"feature of taking its compressed configuration from kernel parameters. On"},{"line_number":170,"context_line":"the flip side, the size of kernel cmdline is severely limited (256+ bytes)."},{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_6e76c00f","line":172,"in_reply_to":"3fa7e38b_db2c709a","updated":"2019-10-17 21:28:42.000000000","message":"OpenStack specific for the metadata embedded, although I believe they finally added support for it. At least that is what Sam said ages ago.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":169,"context_line":"feature of taking its compressed configuration from kernel parameters. On"},{"line_number":170,"context_line":"the flip side, the size of kernel cmdline is severely limited (256+ bytes)."},{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_5891029a","line":172,"in_reply_to":"3fa7e38b_db2c709a","updated":"2019-10-23 09:08:23.000000000","message":"Updated.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"},{"line_number":176,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":177,"context_line":"of that, Linux kernel might eliminate floppy drivers in the future"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b1bd13d9","line":174,"range":{"start_line":174,"start_character":12,"end_line":174,"end_character":41},"updated":"2019-10-16 13:49:55.000000000","message":"I would question if current firmware allows to simultaneously connect both virtual CD/Flash _and_ virtual floppy. This needs to be confirmed.\n\nIt could allow to connect virtual flash disk image. But still I\u0027m not sure if connecting two disks is allowed.\n\nThat should not be a problem, I guess. Just needs to be verified.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"},{"line_number":176,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":177,"context_line":"of that, Linux kernel might eliminate floppy drivers in the future"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b85ef6e6","line":174,"range":{"start_line":174,"start_character":12,"end_line":174,"end_character":41},"in_reply_to":"3fa7e38b_4e5e6477","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"},{"line_number":176,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":177,"context_line":"of that, Linux kernel might eliminate floppy drivers in the future"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_4e5e6477","line":174,"range":{"start_line":174,"start_character":12,"end_line":174,"end_character":41},"in_reply_to":"3fa7e38b_b1bd13d9","updated":"2019-10-17 21:28:42.000000000","message":"Depends on make/manufacturer. It has long been a feature of iLO BMC. I don\u0027t think it works on iRMC and iDRAC BMCs....","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":171,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"},{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"},{"line_number":176,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":177,"context_line":"of that, Linux kernel might eliminate floppy drivers in the future"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_18b94a14","line":174,"range":{"start_line":174,"start_character":12,"end_line":174,"end_character":41},"in_reply_to":"3fa7e38b_b1bd13d9","updated":"2019-10-23 09:08:23.000000000","message":"IIRC, that worked with iDRAC for me. But the entire floppy availability is vendor-dependent. That\u0027s why I see it as a \"nice to have\" feature in ironic, not a workflow requirement.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"},{"line_number":176,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":177,"context_line":"of that, Linux kernel might eliminate floppy drivers in the future"},{"line_number":178,"context_line":"[5]_, [6]_, [7]_."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d1d76f22","line":175,"range":{"start_line":175,"start_character":59,"end_line":175,"end_character":62},"updated":"2019-10-16 13:49:55.000000000","message":"ISO/Flash","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":172,"context_line":"cloud-init which is an established way of bootstrapping tenants in the cloud."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"We can also consider using virtual floppy, for provisioning configuration"},{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"},{"line_number":176,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":177,"context_line":"of that, Linux kernel might eliminate floppy drivers in the future"},{"line_number":178,"context_line":"[5]_, [6]_, [7]_."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_78587ef9","line":175,"range":{"start_line":175,"start_character":59,"end_line":175,"end_character":62},"in_reply_to":"3fa7e38b_d1d76f22","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"},{"line_number":176,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":177,"context_line":"of that, Linux kernel might eliminate floppy drivers in the future"},{"line_number":178,"context_line":"[5]_, [6]_, [7]_."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Data model impact"},{"line_number":181,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_0e506c5e","line":178,"updated":"2019-10-17 21:28:42.000000000","message":"Can we drop everything about virtual floppy\u0027s please? Pretty please!?! :)","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":175,"context_line":"information, instead of burning config-drive ISO into boot ISO. However,"},{"line_number":176,"context_line":"virtual floppy support may not always be available in the hardware. On top"},{"line_number":177,"context_line":"of that, Linux kernel might eliminate floppy drivers in the future"},{"line_number":178,"context_line":"[5]_, [6]_, [7]_."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Data model impact"},{"line_number":181,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_586d8297","line":178,"in_reply_to":"3fa7e38b_0e506c5e","updated":"2019-10-23 09:08:23.000000000","message":"Sure!","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":221,"context_line":"  the host network configuration."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"* Extend the output of the ``openstack baremetal port show`` and"},{"line_number":224,"context_line":"  ``openstack baremetal portgroup show`` commands with ``network_data``"},{"line_number":225,"context_line":"  column."},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"RPC API impact"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_7b1f7c5a","line":224,"updated":"2019-10-16 11:37:21.000000000","message":"How does it work with port groups? I don\u0027t think it can. Should we prevent it? What happens if a node has ports within a port group that have non-empty network_data/configuration?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":221,"context_line":"  the host network configuration."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"* Extend the output of the ``openstack baremetal port show`` and"},{"line_number":224,"context_line":"  ``openstack baremetal portgroup show`` commands with ``network_data``"},{"line_number":225,"context_line":"  column."},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"RPC API impact"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d8bdf2d7","line":224,"in_reply_to":"3fa7e38b_7b1f7c5a","updated":"2019-10-23 09:08:23.000000000","message":"Disclaimer: I might entirely misunderstand port groups! So bear with me.\n\nSo I thought of port groups as a data model representation of L2 bonding. Then i thought that at L3 these bonded NICs might be joint (bridged?) together to form a single IP interface on the host.\n\nIf that ^ holds, then I thought to have a network config on the port group for that single L3 interface on top of the L2 bond.\n\nWith my current implementation, network config on the port group takes precedence over network config on the individual ports in the group.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":243,"context_line":"--------------"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"IPA changes"},{"line_number":246,"context_line":"-----------"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"* Ramdisk should try to find config-drive on the ISO it has been booted from"},{"line_number":249,"context_line":"  and network configuration in it."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_9b2278a2","line":246,"updated":"2019-10-16 11:37:21.000000000","message":"This heading is not needed (it\u0027s implied by ramdisk impact)","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":243,"context_line":"--------------"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"IPA changes"},{"line_number":246,"context_line":"-----------"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"* Ramdisk should try to find config-drive on the ISO it has been booted from"},{"line_number":249,"context_line":"  and network configuration in it."}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_58c90277","line":246,"in_reply_to":"3fa7e38b_9b2278a2","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":252,"context_line":"  found, ramdisk should apply it on the NICs prior to invoking IPA. Otherwise"},{"line_number":253,"context_line":"  ramdisk should fall back to DHCP boot."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Security impact"},{"line_number":256,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_3b3d84c3","line":253,"updated":"2019-10-16 11:37:21.000000000","message":"This may not work with DIB because of dhcp-all-interfaces. We need to be very careful with ordering. I\u0027m not sure how to prevent dhcp-all-interfaces from overwriting what you\u0027ve configured.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0963108cca5ffaf3052a3ea40f77b609db12b7c9","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":252,"context_line":"  found, ramdisk should apply it on the NICs prior to invoking IPA. Otherwise"},{"line_number":253,"context_line":"  ramdisk should fall back to DHCP boot."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Security impact"},{"line_number":256,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_df60b5d2","line":253,"in_reply_to":"3fa7e38b_0ed5ccb7","updated":"2019-10-18 11:19:27.000000000","message":"We cannot avoid use of dhcp-all-interfaces unless we want to build different images for DHCP and non-DHCP cases. Which contradicts the \"fall back\" bit in this paragraph.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":252,"context_line":"  found, ramdisk should apply it on the NICs prior to invoking IPA. Otherwise"},{"line_number":253,"context_line":"  ramdisk should fall back to DHCP boot."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Security impact"},{"line_number":256,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_0ed5ccb7","line":253,"in_reply_to":"3fa7e38b_3b3d84c3","updated":"2019-10-17 21:28:42.000000000","message":"Something like glean would wait/usurp it, but even then, we would have to consider changing the overall logic or even use of dhcp-all-interfaces.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":252,"context_line":"  found, ramdisk should apply it on the NICs prior to invoking IPA. Otherwise"},{"line_number":253,"context_line":"  ramdisk should fall back to DHCP boot."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Security impact"},{"line_number":256,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f89c6e6b","line":253,"in_reply_to":"3fa7e38b_3b3d84c3","updated":"2019-10-23 09:08:23.000000000","message":"With my experimental implementation, the boot strapping script first tries static config. If it\u0027s deemed successful, DHCP client is not invoked at all.\n\nI might be overlooking something here. How does it contradict `dhcp-all-interfaces`?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b0a7137f6ae8f67b521a6951ed750afc1f2a8d4e","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":252,"context_line":"  found, ramdisk should apply it on the NICs prior to invoking IPA. Otherwise"},{"line_number":253,"context_line":"  ramdisk should fall back to DHCP boot."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Security impact"},{"line_number":256,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_0661fd11","line":253,"in_reply_to":"3fa7e38b_c65765ca","updated":"2019-10-22 14:46:44.000000000","message":"Would be curious to think of the impact. May require updating diskimage-builder itself.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fba23da2a2c02da7662dc4945d5be5f8df8e562f","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":252,"context_line":"  found, ramdisk should apply it on the NICs prior to invoking IPA. Otherwise"},{"line_number":253,"context_line":"  ramdisk should fall back to DHCP boot."},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"Security impact"},{"line_number":256,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_c65765ca","line":253,"in_reply_to":"3fa7e38b_df60b5d2","updated":"2019-10-22 14:23:59.000000000","message":"Some piece of code would have to trigger that, which means we would ultimately... I guess change our images.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":297,"context_line":"Work Items"},{"line_number":298,"context_line":"----------"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"* Update ironic port model to include optional, user-specified L3"},{"line_number":301,"context_line":"  configuration information"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* Update REST API endpoints"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_16ec1db9","line":300,"range":{"start_line":300,"start_character":9,"end_line":300,"end_character":15},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":297,"context_line":"Work Items"},{"line_number":298,"context_line":"----------"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"* Update ironic port model to include optional, user-specified L3"},{"line_number":301,"context_line":"  configuration information"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* Update REST API endpoints"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_18986a73","line":300,"range":{"start_line":300,"start_character":9,"end_line":300,"end_character":15},"in_reply_to":"3fa7e38b_16ec1db9","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":297,"context_line":"Work Items"},{"line_number":298,"context_line":"----------"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"* Update ironic port model to include optional, user-specified L3"},{"line_number":301,"context_line":"  configuration information"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* Update REST API endpoints"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_ceded4d9","line":300,"range":{"start_line":300,"start_character":9,"end_line":300,"end_character":15},"in_reply_to":"3fa7e38b_16ec1db9","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":297,"context_line":"Work Items"},{"line_number":298,"context_line":"----------"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"* Update ironic port model to include optional, user-specified L3"},{"line_number":301,"context_line":"  configuration information"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"* Update REST API endpoints"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b8883622","line":300,"range":{"start_line":300,"start_character":9,"end_line":300,"end_character":15},"in_reply_to":"3fa7e38b_ceded4d9","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"* Update openstack baremetal CLI"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":308,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":309,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."},{"line_number":310,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b62c2902","line":307,"range":{"start_line":307,"start_character":9,"end_line":307,"end_character":15},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"* Update openstack baremetal CLI"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":308,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":309,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."},{"line_number":310,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_98853a0a","line":307,"range":{"start_line":307,"start_character":9,"end_line":307,"end_character":15},"in_reply_to":"3fa7e38b_6eed608d","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"* Update openstack baremetal CLI"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":308,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":309,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."},{"line_number":310,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_d88bb21b","line":307,"range":{"start_line":307,"start_character":9,"end_line":307,"end_character":15},"in_reply_to":"3fa7e38b_b62c2902","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":304,"context_line":""},{"line_number":305,"context_line":"* Update openstack baremetal CLI"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":308,"context_line":"  call providing network configuration for the node being managed. Ironic would"},{"line_number":309,"context_line":"  use an OOB mechanism for provisioning network configuration to the node."},{"line_number":310,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_6eed608d","line":307,"range":{"start_line":307,"start_character":9,"end_line":307,"end_character":15},"in_reply_to":"3fa7e38b_b62c2902","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"* Implement `get_node_network_config` network interface call for non-Neutron"},{"line_number":312,"context_line":"  networks providing `network_data.json` from the `network_data` field of"},{"line_number":313,"context_line":"  ironic port (if present)."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":316,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_96356d47","line":313,"range":{"start_line":313,"start_character":2,"end_line":313,"end_character":8},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"* Implement `get_node_network_config` network interface call for non-Neutron"},{"line_number":312,"context_line":"  networks providing `network_data.json` from the `network_data` field of"},{"line_number":313,"context_line":"  ironic port (if present)."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":316,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_5877c23c","line":313,"range":{"start_line":313,"start_character":2,"end_line":313,"end_character":8},"in_reply_to":"3fa7e38b_8ef21c6f","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"* Implement `get_node_network_config` network interface call for non-Neutron"},{"line_number":312,"context_line":"  networks providing `network_data.json` from the `network_data` field of"},{"line_number":313,"context_line":"  ironic port (if present)."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":316,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_387c461f","line":313,"range":{"start_line":313,"start_character":2,"end_line":313,"end_character":8},"in_reply_to":"3fa7e38b_96356d47","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":"* Implement `get_node_network_config` network interface call for non-Neutron"},{"line_number":312,"context_line":"  networks providing `network_data.json` from the `network_data` field of"},{"line_number":313,"context_line":"  ironic port (if present)."},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"* Implement `get_node_network_config` network interface call for Neutron"},{"line_number":316,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_8ef21c6f","line":313,"range":{"start_line":313,"start_character":2,"end_line":313,"end_character":8},"in_reply_to":"3fa7e38b_96356d47","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":316,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":317,"context_line":"  information [9]_."},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":320,"context_line":"  `network_data.json` on it."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_364039a5","line":319,"range":{"start_line":319,"start_character":40,"end_line":319,"end_character":46},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":316,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":317,"context_line":"  information [9]_."},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":320,"context_line":"  `network_data.json` on it."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f8754e33","line":319,"range":{"start_line":319,"start_character":40,"end_line":319,"end_character":46},"in_reply_to":"3fa7e38b_364039a5","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":316,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":317,"context_line":"  information [9]_."},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":320,"context_line":"  `network_data.json` on it."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_4eec248f","line":319,"range":{"start_line":319,"start_character":40,"end_line":319,"end_character":46},"in_reply_to":"3fa7e38b_364039a5","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":316,"context_line":"  networks generating `network_data.json` based on Neutron port and subnet"},{"line_number":317,"context_line":"  information [9]_."},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"* Make virtual media boot interfaces in ironic generating config-drive with"},{"line_number":320,"context_line":"  `network_data.json` on it."},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_b88d962b","line":319,"range":{"start_line":319,"start_character":40,"end_line":319,"end_character":46},"in_reply_to":"3fa7e38b_4eec248f","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":323,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"* Update ramdisk bootstrapping code to make use of Nova"},{"line_number":326,"context_line":"  `network-data.json` [8]_  file if present on the config-drive"},{"line_number":327,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_5b3880d1","line":324,"updated":"2019-10-16 11:37:21.000000000","message":"Somewhere here we need a new IPA command line tool or even a new project to deal with network_data. Putting it in IPA-builder is no-go because of complexity and testing requirements.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":321,"context_line":""},{"line_number":322,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":323,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":324,"context_line":""},{"line_number":325,"context_line":"* Update ramdisk bootstrapping code to make use of Nova"},{"line_number":326,"context_line":"  `network-data.json` [8]_  file if present on the config-drive"},{"line_number":327,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_589ca25a","line":324,"in_reply_to":"3fa7e38b_5b3880d1","updated":"2019-10-23 09:08:23.000000000","message":"I am thinking to have it as a stand-alone, pip-installable tool. Would it make sense?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":336,"context_line":"Testing"},{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f645c1b4","line":339,"range":{"start_line":339,"start_character":9,"end_line":339,"end_character":15},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":336,"context_line":"Testing"},{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_18a62aad","line":339,"range":{"start_line":339,"start_character":9,"end_line":339,"end_character":15},"in_reply_to":"3fa7e38b_ee007038","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":336,"context_line":"Testing"},{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_f8aa2e6f","line":339,"range":{"start_line":339,"start_character":9,"end_line":339,"end_character":15},"in_reply_to":"3fa7e38b_f645c1b4","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":336,"context_line":"Testing"},{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_ee007038","line":339,"range":{"start_line":339,"start_character":9,"end_line":339,"end_character":15},"in_reply_to":"3fa7e38b_f645c1b4","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f91e93c6b8458dccad100792ad34049e35264197","unresolved":false,"context_lines":[{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":343,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_fb328cf1","line":340,"updated":"2019-10-16 11:37:21.000000000","message":"(not your change, but still) does this imply tempest tests or manual tests?","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":28208,"name":"Roman Gorshunov","email":"roman.gorshunov@att.com","username":"gorshunovr"},"change_message_id":"f42d213fe30ac96aa821ffc3ee4bc71149e27662","unresolved":false,"context_lines":[{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":343,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_16417da6","line":340,"range":{"start_line":340,"start_character":8,"end_line":340,"end_character":14},"updated":"2019-10-16 13:49:55.000000000","message":"Ironic","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":343,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_8e977cec","line":340,"range":{"start_line":340,"start_character":7,"end_line":340,"end_character":25},"updated":"2019-10-17 21:28:42.000000000","message":"nit: s/ironic-conductor/``ironic-conductor``/ since it is the service name.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":343,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_58c5823c","line":340,"range":{"start_line":340,"start_character":8,"end_line":340,"end_character":14},"in_reply_to":"3fa7e38b_16417da6","updated":"2019-10-23 09:08:23.000000000","message":"Done","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fbe09c7050982f493da4fc5ff9c0bd6b0cdb4d25","unresolved":false,"context_lines":[{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":343,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_aefa7840","line":340,"range":{"start_line":340,"start_character":8,"end_line":340,"end_character":14},"in_reply_to":"3fa7e38b_16417da6","updated":"2019-10-17 21:28:42.000000000","message":"See comment far above regarding \"ironic\"","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"84616e58d810f8bd03b1b09a650b05259ff253cb","unresolved":false,"context_lines":[{"line_number":337,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"Test the ironic deployment without enabling DHCP and L2 switch connectivity"},{"line_number":340,"context_line":"between ironic-conductor and Target nodes."},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":343,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3fa7e38b_38ca064f","line":340,"in_reply_to":"3fa7e38b_fb328cf1","updated":"2019-10-23 09:08:23.000000000","message":"If tempest scenario is doable at all, I\u0027d go for tempest. I think it should be. Updated.","commit_id":"c6bdd0341dc9054701d3c505c9998db0699ef346"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":98,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":99,"context_line":"(config-drive on a dedicated partition). For diskless and whole-disk scenarios,"},{"line_number":100,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":101,"context_line":"tenant."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"However, there seems to be no obvious way to supply network configuration"},{"line_number":104,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_858dcb2b","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":6},"updated":"2019-10-23 17:27:12.000000000","message":"For which definition of \"tenant\"?","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":98,"context_line":"metadata via config-drive for the case of local disk deployment"},{"line_number":99,"context_line":"(config-drive on a dedicated partition). For diskless and whole-disk scenarios,"},{"line_number":100,"context_line":"this spec proposes using virtual media CD for delivering config-drive to the"},{"line_number":101,"context_line":"tenant."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"However, there seems to be no obvious way to supply network configuration"},{"line_number":104,"context_line":"to ramdisk without DHCP. This spec proposes burning ramdisk network"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_13625dd9","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":6},"in_reply_to":"3fa7e38b_858dcb2b","updated":"2019-10-27 09:54:01.000000000","message":"Right, not tenant. Fixed and reworded.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":114,"context_line":"The `network-data.json` format allows for listing individual NICs and tied"},{"line_number":115,"context_line":"to IP networks (subnets, in Neutron parlance):"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":".. code-block:: json"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    {"},{"line_number":120,"context_line":"        \"links\": ["}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_05723b7d","line":117,"range":{"start_line":117,"start_character":0,"end_line":117,"end_character":20},"updated":"2019-10-23 17:27:12.000000000","message":"This example looks like it should be attached to a node, not to a port tbh. Could you provide an example of how per-port configuration looks like? Where does the \"services\" section go?","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":114,"context_line":"The `network-data.json` format allows for listing individual NICs and tied"},{"line_number":115,"context_line":"to IP networks (subnets, in Neutron parlance):"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":".. code-block:: json"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    {"},{"line_number":120,"context_line":"        \"links\": ["}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_d39925d0","line":117,"range":{"start_line":117,"start_character":0,"end_line":117,"end_character":20},"in_reply_to":"3fa7e38b_05723b7d","updated":"2019-10-27 09:54:01.000000000","message":"If we stick to the Nova metadata, then we are going to have exacttly this JSON document structure.\n\nThis example is per-port already. Yeah, I agree that given the MACs in the doc we could as well attach it to the node...\n\nOne of the concerns I have here is that ironic ports can be added and removed from ironic node. If we have network config attached to the node, then removing a port could render network configuration inconsistent.\n\nIf network configuration is attached to the port, then removing the port also removes its network configuration.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            {"},{"line_number":122,"context_line":"                \"id\": \"interface0\","},{"line_number":123,"context_line":"                \"type\": \"phy\","},{"line_number":124,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":125,"context_line":"                \"mtu\": 1500"},{"line_number":126,"context_line":"            },"},{"line_number":127,"context_line":"            {"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_c56bc382","line":124,"range":{"start_line":124,"start_character":0,"end_line":124,"end_character":60},"updated":"2019-10-23 17:27:12.000000000","message":"This is duplicating what we already have on the port, assuming you want to tie information to a port.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":121,"context_line":"            {"},{"line_number":122,"context_line":"                \"id\": \"interface0\","},{"line_number":123,"context_line":"                \"type\": \"phy\","},{"line_number":124,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":125,"context_line":"                \"mtu\": 1500"},{"line_number":126,"context_line":"            },"},{"line_number":127,"context_line":"            {"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_93a3ad00","line":124,"range":{"start_line":124,"start_character":0,"end_line":124,"end_character":60},"in_reply_to":"3fa7e38b_c56bc382","updated":"2019-10-27 09:54:01.000000000","message":"Right! I commented on that one comment up.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"39c8b3eefa21b4bdae3ea5595a8ea98583a0a093","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":188,"context_line":"specialized tools like os-net-config or cloud-init behemoth - for sake of low"},{"line_number":189,"context_line":"resource footprint, some ramdisk implementations might choose to implement"},{"line_number":190,"context_line":"its own way of network configuration application."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"To summarize - in the area of provisioning node configuration this spec"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_650f6f88","line":189,"range":{"start_line":189,"start_character":20,"end_line":189,"end_character":48},"updated":"2019-10-23 17:28:26.000000000","message":"There seems to be an assumption about ramdisk implementations that we don\u0027t write :) I think this assumption is wrong.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"That does not imply, however, that ramdisk boot sequence has to employ"},{"line_number":188,"context_line":"specialized tools like os-net-config or cloud-init behemoth - for sake of low"},{"line_number":189,"context_line":"resource footprint, some ramdisk implementations might choose to implement"},{"line_number":190,"context_line":"its own way of network configuration application."},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"To summarize - in the area of provisioning node configuration this spec"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_b3a6e90e","line":189,"range":{"start_line":189,"start_character":20,"end_line":189,"end_character":48},"in_reply_to":"3fa7e38b_650f6f88","updated":"2019-10-27 09:54:01.000000000","message":"My thinking is that for as long as ironic offers public API to the ramdisk and vice versa, we do not vendor-lock users to our ramdisk implementation.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"* Reusing Nova metadata representation for provisioning network configuration"},{"line_number":196,"context_line":"  to ramdisk"},{"line_number":197,"context_line":"* Burning config-drive into bootable ISO images (both, ramdisk and deploy)"},{"line_number":198,"context_line":"  as a FAT or ISO image file. Booted operating system can access"},{"line_number":199,"context_line":"  configuration information by mounting virtual media CD, then mounting"},{"line_number":200,"context_line":"  config-drive image residing on the mounted ISO image::"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_259c175a","line":197,"range":{"start_line":197,"start_character":2,"end_line":197,"end_character":47},"updated":"2019-10-23 17:27:12.000000000","message":"Have you confirmed that cloud-init will recognize a config-drive inside an ISO? If not, there is no point in talking about config-drive in this spec, we can just put the JSON file on the ISO.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":194,"context_line":""},{"line_number":195,"context_line":"* Reusing Nova metadata representation for provisioning network configuration"},{"line_number":196,"context_line":"  to ramdisk"},{"line_number":197,"context_line":"* Burning config-drive into bootable ISO images (both, ramdisk and deploy)"},{"line_number":198,"context_line":"  as a FAT or ISO image file. Booted operating system can access"},{"line_number":199,"context_line":"  configuration information by mounting virtual media CD, then mounting"},{"line_number":200,"context_line":"  config-drive image residing on the mounted ISO image::"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_ee4eba6c","line":197,"range":{"start_line":197,"start_character":2,"end_line":197,"end_character":47},"in_reply_to":"3fa7e38b_259c175a","updated":"2019-10-27 09:54:01.000000000","message":"That\u0027s a good point!\n\nCloud-init needs /dev/cdrom (and  possibly FAT) images mounted prior to cloud-init invocation - it won\u0027t mount /dev/cdrom by itself. If there was a way to pass some cloud-init user-data via kernel cmdline, that would make it. But cmdline is not presently supported as a user-data source. May be we could propose that to cloud-init in the future...\n\nSo it seems that the only way for user image to point cloud-init to our config-drive would be to add necessary mounting to the bootstrap sequence before cloud-init. That\u0027s not difficult, but that\u0027s something that the operator needs to do to make their ramdisk DHCP-less.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":210,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":211,"context_line":"  be a well-formed `network-data.json` [8]_ document describing network"},{"line_number":212,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":213,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":214,"context_line":"  files into one."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":217,"context_line":"  call providing network configuration for the node being managed. Ironic would"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_6529af35","line":214,"range":{"start_line":213,"start_character":37,"end_line":214,"end_character":17},"updated":"2019-10-23 17:27:12.000000000","message":"This is where I\u0027d really like to see an example and some details on merging.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":210,"context_line":"  configuration information. If set, the contents of this new field should"},{"line_number":211,"context_line":"  be a well-formed `network-data.json` [8]_ document describing network"},{"line_number":212,"context_line":"  configuration for a single NIC associated with ironic port. When serving"},{"line_number":213,"context_line":"  network configuration to the node, ironic would merge these per-port JSON"},{"line_number":214,"context_line":"  files into one."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"* Extend ironic base NetworkInterface with the `get_node_network_config` API"},{"line_number":217,"context_line":"  call providing network configuration for the node being managed. Ironic would"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_736391de","line":214,"range":{"start_line":213,"start_character":37,"end_line":214,"end_character":17},"in_reply_to":"3fa7e38b_6529af35","updated":"2019-10-27 09:54:01.000000000","message":"Added a trivial example above for illustration purposes.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":239,"context_line":"necessary file by instance ID. However, this will not work for non-deploy"},{"line_number":240,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"Alternatively to relying on config-drive, we could leverage os-net-config"},{"line_number":243,"context_line":"feature of taking its compressed configuration from kernel parameters. On"},{"line_number":244,"context_line":"the flip side, the size of kernel cmdline is severely limited (256+ bytes)."},{"line_number":245,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_a5bd67d8","line":242,"range":{"start_line":242,"start_character":17,"end_line":242,"end_character":73},"updated":"2019-10-23 17:27:12.000000000","message":"config-drive is not an alternative to os-net-config, the Nova format + home-grown code is.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":239,"context_line":"necessary file by instance ID. However, this will not work for non-deploy"},{"line_number":240,"context_line":"operations (such as node cleaning) because Nova is not involved."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"Alternatively to relying on config-drive, we could leverage os-net-config"},{"line_number":243,"context_line":"feature of taking its compressed configuration from kernel parameters. On"},{"line_number":244,"context_line":"the flip side, the size of kernel cmdline is severely limited (256+ bytes)."},{"line_number":245,"context_line":"Also, os-net-config feels like a TripleO-specific tool in comparison with"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_5368d5b8","line":242,"range":{"start_line":242,"start_character":17,"end_line":242,"end_character":73},"in_reply_to":"3fa7e38b_a5bd67d8","updated":"2019-10-27 09:54:01.000000000","message":"Right! Fixed.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* Update ``GET /v1/ports/detail``, ``GET /v1/ports/{port_id}``,"},{"line_number":274,"context_line":"  ``PATCH /v1/ports/{port_id}``, ``GET /v1/nodes/{node_ident}/ports/detail``,"},{"line_number":275,"context_line":"  ``GET /v1/portgroups/detail``, ``GET /v1/portgroups/{portgroup_ident}``,"},{"line_number":276,"context_line":"  ``PATCH /v1/portgroups/{portgroup_ident}``,"},{"line_number":277,"context_line":"  ``GET /v1/nodes/{node_ident}/portgroups/detail``,"},{"line_number":278,"context_line":"  ``GET /v1/portgroups/{portgroup_ident}/ports/detail`` to add new"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_c5198322","line":275,"range":{"start_line":275,"start_character":12,"end_line":275,"end_character":22},"updated":"2019-10-23 17:27:12.000000000","message":"You say nothing about portgroups above. I don\u0027t think we can support them with this feature.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"* Update ``GET /v1/ports/detail``, ``GET /v1/ports/{port_id}``,"},{"line_number":274,"context_line":"  ``PATCH /v1/ports/{port_id}``, ``GET /v1/nodes/{node_ident}/ports/detail``,"},{"line_number":275,"context_line":"  ``GET /v1/portgroups/detail``, ``GET /v1/portgroups/{portgroup_ident}``,"},{"line_number":276,"context_line":"  ``PATCH /v1/portgroups/{portgroup_ident}``,"},{"line_number":277,"context_line":"  ``GET /v1/nodes/{node_ident}/portgroups/detail``,"},{"line_number":278,"context_line":"  ``GET /v1/portgroups/{portgroup_ident}/ports/detail`` to add new"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_c51dcd62","line":275,"range":{"start_line":275,"start_character":12,"end_line":275,"end_character":22},"in_reply_to":"3fa7e38b_c5198322","updated":"2019-10-27 09:54:01.000000000","message":"Added some more notes.\n\nI am still a lost why can\u0027t we use portgroups if we this spec provides necessary bonding configuration to the ramdisk? What exactly is the problem here?","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":325,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":326,"context_line":"  found, ramdisk should apply it on the NICs prior to invoking IPA. Otherwise"},{"line_number":327,"context_line":"  ramdisk should fall back to DHCP boot."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"Security impact"},{"line_number":330,"context_line":"---------------"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_25f2d7e4","line":328,"updated":"2019-10-23 17:27:12.000000000","message":"Details needed on how exactly we\u0027re going to implement it for DIB. Note the potential conflict with dhcp-all-interfaces.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":325,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":326,"context_line":"  found, ramdisk should apply it on the NICs prior to invoking IPA. Otherwise"},{"line_number":327,"context_line":"  ramdisk should fall back to DHCP boot."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"Security impact"},{"line_number":330,"context_line":"---------------"},{"line_number":331,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_d32cc54b","line":328,"in_reply_to":"3fa7e38b_25f2d7e4","updated":"2019-10-27 09:54:01.000000000","message":"I am reading on the dhcp-all-interfaces feature [1]. My understanding is that ramdisk simply configures all its interfaces via DHCP.\n\nThe simplest case for static config is just do not invoke DHCP client on any NICs at all, if static config succeeded. That\u0027s what my experimental implementation does.\n\nIt would definitely be clearer to respect \u0027dhcp_enabled\u0027 flag in \u0027network_data.json\u0027 and invoke DHCP client only on those interfaces where static configuration is enabled. Is this what you meant?\n\nAdded that detail.\n\n1. https://docs.openstack.org/diskimage-builder/latest/elements/dhcp-all-interfaces/README.html","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":397,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":398,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"* Update ramdisk bootstrapping code to make use of Nova"},{"line_number":401,"context_line":"  `network-data.json` [8]_  file if present on the config-drive."},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"* Create documentation on DHCP-less boot setup and work flow."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_a507a781","line":400,"range":{"start_line":400,"start_character":39,"end_line":400,"end_character":50},"updated":"2019-10-23 17:27:12.000000000","message":"Let\u0027s clarify what is used for that. And if we\u0027re going to write this code, where it lives.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":397,"context_line":"* Make virtual media boot interfaces in ironic burning config-drive image into"},{"line_number":398,"context_line":"  bootable ISO image it generates on every node boot."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"* Update ramdisk bootstrapping code to make use of Nova"},{"line_number":401,"context_line":"  `network-data.json` [8]_  file if present on the config-drive."},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"* Create documentation on DHCP-less boot setup and work flow."}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_33b2f94a","line":400,"range":{"start_line":400,"start_character":39,"end_line":400,"end_character":50},"in_reply_to":"3fa7e38b_a507a781","updated":"2019-10-27 09:54:01.000000000","message":"Added.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7c3bd624131cab6548e104793413d6e7d0724dd0","unresolved":false,"context_lines":[{"line_number":405,"context_line":"Dependencies"},{"line_number":406,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"Ramdisk might include some tooling for parsing config-drive contents and/or"},{"line_number":409,"context_line":"applying it to the NICs."},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_05f8fb79","line":408,"range":{"start_line":408,"start_character":8,"end_line":408,"end_character":34},"updated":"2019-10-23 17:27:12.000000000","message":"Please specify, this is in the scope of this spec.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"0e4bbfd6daccdac495f74c5f45c3a292528a5173","unresolved":false,"context_lines":[{"line_number":405,"context_line":"Dependencies"},{"line_number":406,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"Ramdisk might include some tooling for parsing config-drive contents and/or"},{"line_number":409,"context_line":"applying it to the NICs."},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3fa7e38b_f385415a","line":408,"range":{"start_line":408,"start_character":8,"end_line":408,"end_character":34},"in_reply_to":"3fa7e38b_05f8fb79","updated":"2019-10-27 09:54:01.000000000","message":"Rephrased.","commit_id":"dd5c888649e2b71ffaabec0bbd85d7ea1a5e1676"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3ee054b4bd9b36d773774e1d77307530bb9903dc","unresolved":false,"context_lines":[{"line_number":476,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"Ramdisk might start depending on the new tool for parsing `network-data.json`"},{"line_number":479,"context_line":"document."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"Testing"},{"line_number":482,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3fa7e38b_8ea32a9e","line":479,"updated":"2019-11-01 13:26:26.000000000","message":"++ It is an implementation detail. Well put!","commit_id":"01da81ff358eab6953651796378deb6be882ac4d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":476,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"Ramdisk might start depending on the new tool for parsing `network-data.json`"},{"line_number":479,"context_line":"document."},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"Testing"},{"line_number":482,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3fa7e38b_f1797281","line":479,"in_reply_to":"3fa7e38b_8ea32a9e","updated":"2019-11-21 17:20:17.000000000","message":"Done","commit_id":"01da81ff358eab6953651796378deb6be882ac4d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3ee054b4bd9b36d773774e1d77307530bb9903dc","unresolved":false,"context_lines":[{"line_number":482,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"Tempest test of the ironic node deployment using operator-supplied and"},{"line_number":485,"context_line":"Neutron-originated `network_data.json`."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":488,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3fa7e38b_ce95a233","line":485,"updated":"2019-11-01 13:26:26.000000000","message":"The test will likely need to identify a redfish node, and change the boot type, and from there deploy. Just a thought...","commit_id":"01da81ff358eab6953651796378deb6be882ac4d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":482,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"Tempest test of the ironic node deployment using operator-supplied and"},{"line_number":485,"context_line":"Neutron-originated `network_data.json`."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":488,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3fa7e38b_31d38a3a","line":485,"in_reply_to":"3fa7e38b_ce95a233","updated":"2019-11-21 17:20:17.000000000","message":"Technically, for Neutron-based test just changing node boot interface would suffice. For operator-supplied config, tempest would need to generate something reasonable and pass it over to ironic.","commit_id":"01da81ff358eab6953651796378deb6be882ac4d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3ee054b4bd9b36d773774e1d77307530bb9903dc","unresolved":false,"context_lines":[{"line_number":498,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":".. [1] https://networks.nokia.com/products/flexi-zone"},{"line_number":501,"context_line":".. [2] https://docs.openstack.org/nova/queens/user/config-drive.html"},{"line_number":502,"context_line":".. [3] https://cloudinit.readthedocs.io/en/latest/"},{"line_number":503,"context_line":".. [4] https://github.com/openstack/os-net-config"},{"line_number":504,"context_line":".. [8] https://specs.openstack.org/openstack/nova-specs/specs/liberty/implemented/metadata-service-network-info.html"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3fa7e38b_ee989e69","line":501,"updated":"2019-11-01 13:26:26.000000000","message":"Nit: if there is a latest for this, we should link to that instead.","commit_id":"01da81ff358eab6953651796378deb6be882ac4d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":498,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":".. [1] https://networks.nokia.com/products/flexi-zone"},{"line_number":501,"context_line":".. [2] https://docs.openstack.org/nova/queens/user/config-drive.html"},{"line_number":502,"context_line":".. [3] https://cloudinit.readthedocs.io/en/latest/"},{"line_number":503,"context_line":".. [4] https://github.com/openstack/os-net-config"},{"line_number":504,"context_line":".. [8] https://specs.openstack.org/openstack/nova-specs/specs/liberty/implemented/metadata-service-network-info.html"}],"source_content_type":"text/x-rst","patch_set":21,"id":"3fa7e38b_31bceada","line":501,"in_reply_to":"3fa7e38b_ee989e69","updated":"2019-11-21 17:20:17.000000000","message":"Done","commit_id":"01da81ff358eab6953651796378deb6be882ac4d"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"9119ca3ff39e01856017da047e5e8faf03becac0","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This specification proposes relying upon Virtual Media boot capability of"},{"line_number":19,"context_line":"modern BMCs to deliver boot image, static network configuration, node"},{"line_number":20,"context_line":"identification information etc. to the node of choice reliably and securely."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Proposed way of booting the node should fully eliminate the need for DHCP and"},{"line_number":23,"context_line":"PXE thus enabling deployment over purely L3 network."}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_0dee8bb4","line":20,"range":{"start_line":20,"start_character":27,"end_line":20,"end_character":32},"updated":"2019-11-20 10:16:35.000000000","message":"nit: s/etc/and more/","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This specification proposes relying upon Virtual Media boot capability of"},{"line_number":19,"context_line":"modern BMCs to deliver boot image, static network configuration, node"},{"line_number":20,"context_line":"identification information etc. to the node of choice reliably and securely."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Proposed way of booting the node should fully eliminate the need for DHCP and"},{"line_number":23,"context_line":"PXE thus enabling deployment over purely L3 network."}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_518de62e","line":20,"range":{"start_line":20,"start_character":27,"end_line":20,"end_character":32},"in_reply_to":"3fa7e38b_0dee8bb4","updated":"2019-11-21 17:20:17.000000000","message":"Done","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"9119ca3ff39e01856017da047e5e8faf03becac0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"3. Provisioning node configuration (as well as authentication, identification"},{"line_number":61,"context_line":"   etc) information to the operating system running on the node"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Virtual media capability of now days BMCs coupled with virtual media boot"},{"line_number":64,"context_line":"support implemented in some ironic hardware types (e.g."},{"line_number":65,"context_line":"`redfish-virtual-media`) fully solves problem (1). The rest of this spec is"},{"line_number":66,"context_line":"dedicated to pondering over puzzles (2) and (3)."}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_2d4027a2","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":36},"updated":"2019-11-20 10:16:35.000000000","message":"nit: nowadays\nbeing this an adverb, I would put it at the beginning of the phrase, like:\n\"Nowadays, virtual media....\"","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"3. Provisioning node configuration (as well as authentication, identification"},{"line_number":61,"context_line":"   etc) information to the operating system running on the node"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Virtual media capability of now days BMCs coupled with virtual media boot"},{"line_number":64,"context_line":"support implemented in some ironic hardware types (e.g."},{"line_number":65,"context_line":"`redfish-virtual-media`) fully solves problem (1). The rest of this spec is"},{"line_number":66,"context_line":"dedicated to pondering over puzzles (2) and (3)."}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_f1097283","line":63,"range":{"start_line":63,"start_character":28,"end_line":63,"end_character":36},"in_reply_to":"3fa7e38b_2d4027a2","updated":"2019-11-21 17:20:17.000000000","message":"That\u0027s a tricky matter! Let\u0027s replace it with \"contemporary\"!? Also, now days is apparently archaic, should be nowadays.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"000d5692b36c8e85a4369b2d9c833211252b4b62","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    {"},{"line_number":193,"context_line":"        \"links\": ["},{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_701d920d","line":195,"updated":"2019-11-20 10:42:55.000000000","message":"Cannot we use port UUID as ID? This is particularly useful for port groups (if you do decide to support them), since we\u0027ll be able to generate \"bond_links\" automatically from the ports that are members of the port group.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"6d9f9f346c1c40dee2b56ef25aedb70758ba29f7","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    {"},{"line_number":193,"context_line":"        \"links\": ["},{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_875541fb","line":195,"in_reply_to":"3fa7e38b_63bb79c3","updated":"2019-11-23 07:04:43.000000000","message":"FYI following is a real data of network-data.json with bonding config i worked before (Pike I belive), may help you shaping the sample:\n\n{\n\"services\": [],\n\"networks\": [\n    {\n        \"network_id\": \"596fcf91-37a3-4a86-8135-f8e267b0624b\",\n        \"link\": \"tape1293336-53\",\n        \"type\": \"ipv4_dhcp\",\n        \"id\": \"network0\"\n    }\n],\n\"links\": [\n    {\n        \"bond_miimon\": 100,\n        \"vif_id\": \"e1293336-5343-4bfa-883a-0f5ba1681760\",\n        \"ethernet_mac_address\": \"fa:16:3e:c1:b0:6d\",\n        \"mtu\": 1500,\n        \"bond_mode\": \"1\",\n        \"bond_links\": [\n            \"42b06aa8-27c0-44d8-9280-e6994dad9c26\",\n            \"44af766f-9e54-423e-9652-7f2122d315b6\"\n        ],\n        \"type\": \"bond\",\n        \"id\": \"tape1293336-53\"\n    },\n    {\n        \"ethernet_mac_address\": \"7a:52:00:86:a4:81\",\n        \"type\": \"phy\",\n        \"id\": \"42b06aa8-27c0-44d8-9280-e6994dad9c26\"\n    },\n    {\n        \"ethernet_mac_address\": \"7a:52:00:86:a4:82\",\n        \"type\": \"phy\",\n        \"id\": \"44af766f-9e54-423e-9652-7f2122d315b6\"\n    }\n]\n}","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    {"},{"line_number":193,"context_line":"        \"links\": ["},{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_63bb79c3","line":195,"in_reply_to":"3fa7e38b_701d920d","updated":"2019-11-21 17:20:17.000000000","message":"Yeah, we can make ironic using port UUIDs.\n\nHowever, for operator-supplied configuration, what I had in mind is to use `id` as Linux NIC name for the purpose of runtime NIC selection e.g. eth0, eth1. Obviously, NIC naming is not particularly stable with Linux, that\u0027s why MAC would be the last resort selector.\n\nI\u0027ve added relevant comments to the spec.\n\nDoes it make sense?","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4aa870cd3b792ed4260dd91ed8c00f8a3e6f7443","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    {"},{"line_number":193,"context_line":"        \"links\": ["},{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_0cbc10b3","line":195,"in_reply_to":"3fa7e38b_875541fb","updated":"2019-11-25 12:49:49.000000000","message":"Thank you for providing the sample!\n\nI\u0027ve also linked the spec/doc with a sample in it.\n\nIn this spec I am trying to cap the scope by L3-only needs. Should we need other features such as deploy bonding, may be we should better approach it separately...?","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"000d5692b36c8e85a4369b2d9c833211252b4b62","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"},{"line_number":199,"context_line":"            }"},{"line_number":200,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_10169ef3","line":197,"updated":"2019-11-20 10:42:55.000000000","message":"Duplicates port information","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"},{"line_number":199,"context_line":"            }"},{"line_number":200,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_6650670b","line":197,"in_reply_to":"3fa7e38b_10169ef3","updated":"2019-11-21 17:20:17.000000000","message":"Yes, we can pull it from ironic port. But in that case ironic would have to process user-supplied `network_data.json` template prior to sending it down to the node. May be that\u0027s worth it? Ironic would be able to generate different file formats depending on the template...","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7b6228da718f6031d9d4ac67460acec7a65aeaa7","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"},{"line_number":199,"context_line":"            }"},{"line_number":200,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_8d1c69c3","line":197,"in_reply_to":"3fa7e38b_320da234","updated":"2019-11-26 12:35:07.000000000","message":"Well, changing the existing API is certainly more complex ;)\n\nI\u0027d really prefer to avoid complicating the current only format for a potential future feature (which I\u0027m not convinced we\u0027ll need).\n\nA separate configdrive for a ramdisk sounds like a bit of an overkill, especially since it won\u0027t strictly be a configdrive (i.e. not a drive, just an image inside the CD). I have no objections to associated network data with the node.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d4dccd0bb9ffc516a10e443787c30a3784ae2ef4","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"},{"line_number":199,"context_line":"            }"},{"line_number":200,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_cc911848","line":197,"in_reply_to":"3fa7e38b_6650670b","updated":"2019-11-25 11:11:06.000000000","message":"I think it\u0027s totally worth it to avoid duplications (and potential user mistakes). I\u0027m not sure what you mean by different file formats, we have only one here.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"},{"line_number":199,"context_line":"            }"},{"line_number":200,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_77256809","line":197,"in_reply_to":"3fa7e38b_8d1c69c3","updated":"2020-01-08 18:06:32.000000000","message":"In the latest revision:\n\n* config-drive vs network_data.json is noted in Alternatives\n* network_data.json moved to node object\n\nThe latter probably leads to the necessity of L2 address duplication. However, with virtual media boot, may be we can probably flash node ID into the boot image and hopefully get rid of L2 address in the port object altogether?","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4aa870cd3b792ed4260dd91ed8c00f8a3e6f7443","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            {"},{"line_number":195,"context_line":"                \"id\": \"interface0\","},{"line_number":196,"context_line":"                \"type\": \"phy\","},{"line_number":197,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":198,"context_line":"                \"mtu\": 1500"},{"line_number":199,"context_line":"            }"},{"line_number":200,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_320da234","line":197,"in_reply_to":"3fa7e38b_cc911848","updated":"2019-11-25 12:49:49.000000000","message":"Alternatively, could we reduce duplication by only using MACs from `network_data.json` and not requiring it in ironic port?\n\n\u003e  I\u0027m not sure what you mean by different file formats, we have only one here.\n\nI am thinking that it might be more flexible to let the operator setting a template of configuration file making ironic rendering it with the values it has.\n\nTemplating makes more sense for neutron-based deployment because all the comes from ironic, the operator can choose some other file format that their ramdisk/instance is compatible with.\n\nFor stand-alone case, most of the data (may be save for MAC) comes from the operator. So the template can actually be a fully rendered config file.\n\nHowever! Another school of though has come up in `Alternatives` section rendering this discussion irrelevant. That is:\n\n- associate network config with ironic node other than ironic port\n- instead of `network_data.json`, the operator provides config-drive with `network_data.json` for ramdisk and instance separately\n\nWDYT?","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"000d5692b36c8e85a4369b2d9c833211252b4b62","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            }"},{"line_number":211,"context_line":"        ]"},{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_30139a03","line":213,"updated":"2019-11-20 10:42:55.000000000","message":"Where do we put services or anything else that is not attached to a port? I can imagine DNS configuration being potentially useful.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            }"},{"line_number":211,"context_line":"        ]"},{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_66ece728","line":213,"in_reply_to":"3fa7e38b_30139a03","updated":"2019-11-21 17:20:17.000000000","message":"We can put DNS config right here, in the same JSON document. That\u0027s the feature of `network_data.json` file format. Is it still relevant to this spec?\n\nThing is that so far operator-supplied `network_data.json` is not interpreted by ironic. So it the file can contain whatever cloud-init or ramdisk scripts can consume.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            }"},{"line_number":211,"context_line":"        ]"},{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_b7552054","line":213,"in_reply_to":"3fa7e38b_4d743105","updated":"2020-01-08 18:06:32.000000000","message":"With the latest version of this spec (i.e. Glean dependency) perhaps we can de-focus from network_data.json format details because it\u0027s now all up to Glean to consume.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7b6228da718f6031d9d4ac67460acec7a65aeaa7","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            }"},{"line_number":211,"context_line":"        ]"},{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_4d743105","line":213,"in_reply_to":"3fa7e38b_5294de35","updated":"2019-11-26 12:35:07.000000000","message":"Right, I\u0027m not proposing it because of Nova compatibility, but because I suspect it may be useful (and no so hard to implement on the ramdisk side).","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d4dccd0bb9ffc516a10e443787c30a3784ae2ef4","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            }"},{"line_number":211,"context_line":"        ]"},{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_ccba78be","line":213,"in_reply_to":"3fa7e38b_66ece728","updated":"2019-11-25 11:11:06.000000000","message":"Right, but do we need to support the DNS information? It may be handy for WAN connections.\n\nAnd while ironic won\u0027t parse it, your ramdisk side scripts will, so we need to understand the scope.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4aa870cd3b792ed4260dd91ed8c00f8a3e6f7443","unresolved":false,"context_lines":[{"line_number":210,"context_line":"            }"},{"line_number":211,"context_line":"        ]"},{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_5294de35","line":213,"in_reply_to":"3fa7e38b_ccba78be","updated":"2019-11-25 12:49:49.000000000","message":"Alright, DNS service is at L#174.\n\nI am just trying not to tie too much to the contemporary Nova metadata format/features because metadata format might evolve independently.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"000d5692b36c8e85a4369b2d9c833211252b4b62","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":".. code-block:: json"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_d0d1e630","line":215,"updated":"2019-11-20 10:42:55.000000000","message":"nit: Could you extend your example to cover IP addresses which is the goal of this whole work?","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d4dccd0bb9ffc516a10e443787c30a3784ae2ef4","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":".. code-block:: json"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_8cb000de","line":215,"in_reply_to":"3fa7e38b_66d5c742","updated":"2019-11-25 11:11:06.000000000","message":"Yes please","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4aa870cd3b792ed4260dd91ed8c00f8a3e6f7443","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":".. code-block:: json"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_d299ae79","line":215,"in_reply_to":"3fa7e38b_8cb000de","updated":"2019-11-25 12:49:49.000000000","message":"Done","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    }"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"Upon merging them by ironic, the following `network_data.json` document is"},{"line_number":215,"context_line":"served to the image:"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":".. code-block:: json"},{"line_number":218,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_66d5c742","line":215,"in_reply_to":"3fa7e38b_d0d1e630","updated":"2019-11-21 17:20:17.000000000","message":"Well, the IPs are in the previous example. This one is shortened to illustrate just the idea of merging JSON docs. I can copy `networks` entry from example above if you think it makes sense.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"000d5692b36c8e85a4369b2d9c833211252b4b62","unresolved":false,"context_lines":[{"line_number":336,"context_line":"  ``PATCH /v1/portgroups/{portgroup_ident}``,"},{"line_number":337,"context_line":"  ``GET /v1/nodes/{node_ident}/portgroups/detail``,"},{"line_number":338,"context_line":"  ``GET /v1/portgroups/{portgroup_ident}/ports/detail`` to add new"},{"line_number":339,"context_line":"  request/response field"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* ``network_data`` JSON object conveying host IP configuration."},{"line_number":342,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_f0d66227","line":339,"updated":"2019-11-20 10:42:55.000000000","message":"I\u0027ll ask it explicitly: are you sure that you want to implement bonding as part of this work? Because that\u0027s what you are committing to by adding port groups in scope.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d4dccd0bb9ffc516a10e443787c30a3784ae2ef4","unresolved":false,"context_lines":[{"line_number":336,"context_line":"  ``PATCH /v1/portgroups/{portgroup_ident}``,"},{"line_number":337,"context_line":"  ``GET /v1/nodes/{node_ident}/portgroups/detail``,"},{"line_number":338,"context_line":"  ``GET /v1/portgroups/{portgroup_ident}/ports/detail`` to add new"},{"line_number":339,"context_line":"  request/response field"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* ``network_data`` JSON object conveying host IP configuration."},{"line_number":342,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_acdcdc17","line":339,"in_reply_to":"3fa7e38b_120a0978","updated":"2019-11-25 11:11:06.000000000","message":"Well, you\u0027re *saying* you will do it by this spec. So I\u0027m double-checking with you: is it intended? If you support network information for port groups, you need to support bonding in your ramdisk scripts. Is it even possible with iproute2?","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"7b6228da718f6031d9d4ac67460acec7a65aeaa7","unresolved":false,"context_lines":[{"line_number":336,"context_line":"  ``PATCH /v1/portgroups/{portgroup_ident}``,"},{"line_number":337,"context_line":"  ``GET /v1/nodes/{node_ident}/portgroups/detail``,"},{"line_number":338,"context_line":"  ``GET /v1/portgroups/{portgroup_ident}/ports/detail`` to add new"},{"line_number":339,"context_line":"  request/response field"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* ``network_data`` JSON object conveying host IP configuration."},{"line_number":342,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_2d83f5cd","line":339,"in_reply_to":"3fa7e38b_127666d9","updated":"2019-11-26 12:35:07.000000000","message":"I think you rightfully expect cloud-init to be a heavy thing to put on ramdisks. If we go down that path, os-net-config may be a more lightweight solution.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":336,"context_line":"  ``PATCH /v1/portgroups/{portgroup_ident}``,"},{"line_number":337,"context_line":"  ``GET /v1/nodes/{node_ident}/portgroups/detail``,"},{"line_number":338,"context_line":"  ``GET /v1/portgroups/{portgroup_ident}/ports/detail`` to add new"},{"line_number":339,"context_line":"  request/response field"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* ``network_data`` JSON object conveying host IP configuration."},{"line_number":342,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_37de10db","line":339,"in_reply_to":"3fa7e38b_2d83f5cd","updated":"2020-01-08 18:06:32.000000000","message":"We seem to settle on Glean rendering this conversation obsolete.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4aa870cd3b792ed4260dd91ed8c00f8a3e6f7443","unresolved":false,"context_lines":[{"line_number":336,"context_line":"  ``PATCH /v1/portgroups/{portgroup_ident}``,"},{"line_number":337,"context_line":"  ``GET /v1/nodes/{node_ident}/portgroups/detail``,"},{"line_number":338,"context_line":"  ``GET /v1/portgroups/{portgroup_ident}/ports/detail`` to add new"},{"line_number":339,"context_line":"  request/response field"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* ``network_data`` JSON object conveying host IP configuration."},{"line_number":342,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_127666d9","line":339,"in_reply_to":"3fa7e38b_acdcdc17","updated":"2019-11-25 12:49:49.000000000","message":"Well, I\u0027ve been focused on ensuring ironic is able to provide whatever is necessary for cloud-init.\n\nAs we discussed elsewhere (I think), it is not reasonable for us to engage in reimplementing cloud-init/os-net-config in ramdisk. We can do simple things like bringing up a NIC or two, but beyond some point of complexity the operator should rather put cloud-init/os-net-config into ramdisk and leverage its capabilities.\n\nOff the top of my head, we\u0027d need the `enslave` tool/package on the ramdisk to do bonding. It seems cloud-init renders NetworkManager bonding configs (for RHEL). But I am not sure we should do bonding ourselves...","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":336,"context_line":"  ``PATCH /v1/portgroups/{portgroup_ident}``,"},{"line_number":337,"context_line":"  ``GET /v1/nodes/{node_ident}/portgroups/detail``,"},{"line_number":338,"context_line":"  ``GET /v1/portgroups/{portgroup_ident}/ports/detail`` to add new"},{"line_number":339,"context_line":"  request/response field"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* ``network_data`` JSON object conveying host IP configuration."},{"line_number":342,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_120a0978","line":339,"in_reply_to":"3fa7e38b_f0d66227","updated":"2019-11-21 17:20:17.000000000","message":"You mean, in the ramdisk configuration tool? I can do that, should not be too hard given the code is already written in other tools e.g. cloud-init/os-net-config.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"000d5692b36c8e85a4369b2d9c833211252b4b62","unresolved":false,"context_lines":[{"line_number":339,"context_line":"  request/response field"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* ``network_data`` JSON object conveying host IP configuration."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"Client (CLI) impact"},{"line_number":344,"context_line":"-------------------"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_90d7ee22","line":342,"updated":"2019-11-20 10:42:55.000000000","message":"What happens if a user provides a configdrive: a) with network_data, b) without network_data?","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":339,"context_line":"  request/response field"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"* ``network_data`` JSON object conveying host IP configuration."},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"Client (CLI) impact"},{"line_number":344,"context_line":"-------------------"},{"line_number":345,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_524c019d","line":342,"in_reply_to":"3fa7e38b_90d7ee22","updated":"2019-11-21 17:20:17.000000000","message":"I thought to do no-op if network_data.json is not present (as well as the entire  config-drive). Added a comment on that.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"000d5692b36c8e85a4369b2d9c833211252b4b62","unresolved":false,"context_lines":[{"line_number":385,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":386,"context_line":"  found, ramdisk should apply it on the NICs for which static configuration"},{"line_number":387,"context_line":"  is provided. If static configuration is not provided for some or all of"},{"line_number":388,"context_line":"  the NICs, DHCP client should still be invoked on these NICs."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Security impact"},{"line_number":391,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_b0dc6a45","line":388,"updated":"2019-11-20 10:42:55.000000000","message":"I\u0027d prefer to make it clear that it requires diskimage-builder changes, not only changes to IPA-builder.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":385,"context_line":"* If network configuration in form of Nova `network-data.json` [8]_ has been"},{"line_number":386,"context_line":"  found, ramdisk should apply it on the NICs for which static configuration"},{"line_number":387,"context_line":"  is provided. If static configuration is not provided for some or all of"},{"line_number":388,"context_line":"  the NICs, DHCP client should still be invoked on these NICs."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Security impact"},{"line_number":391,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_cd129658","line":388,"in_reply_to":"3fa7e38b_b0dc6a45","updated":"2019-11-21 17:20:17.000000000","message":"Done","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"000d5692b36c8e85a4369b2d9c833211252b4b62","unresolved":false,"context_lines":[{"line_number":467,"context_line":"  ramdisk."},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"  New static bootstrapping code should be placed into a separate script (part"},{"line_number":470,"context_line":"  or `ironic-python-agent-builder`) invoked on boot. To keep ramdisk neutral"},{"line_number":471,"context_line":"  with regards to Linux distribution, this new script should solely rely on"},{"line_number":472,"context_line":"  `iproute2` toolset when conveying network configuration to the kernel."},{"line_number":473,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_50e5f608","line":470,"updated":"2019-11-20 10:42:55.000000000","message":"IPA-builder itself is not installed inside ramdisks, which makes it quite a poor place to put this script IMO. You\u0027ll have to do some hackery to pass the script inside of the built ramdisk. It\u0027s much easier to put it in IPA, then you\u0027ll have it automatically.","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":467,"context_line":"  ramdisk."},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"  New static bootstrapping code should be placed into a separate script (part"},{"line_number":470,"context_line":"  or `ironic-python-agent-builder`) invoked on boot. To keep ramdisk neutral"},{"line_number":471,"context_line":"  with regards to Linux distribution, this new script should solely rely on"},{"line_number":472,"context_line":"  `iproute2` toolset when conveying network configuration to the kernel."},{"line_number":473,"context_line":""}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_4db8e6c6","line":470,"in_reply_to":"3fa7e38b_50e5f608","updated":"2019-11-21 17:20:17.000000000","message":"I rephrased that a bit to make it clear that IPA-builder does not put itself into the ramdisk.\n\nHowever, I am not sure that IPA itself would be the best place for this Linux networking init script -- it feels irrelevant to IPA application, but relevant to ramdisk/builder because the latter is dependent on specific Linux distro, packaging etc...","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"fb5a8a19859c3c3a645921b8313ad5c107ff1f21","unresolved":false,"context_lines":[{"line_number":476,"context_line":"Dependencies"},{"line_number":477,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"Ramdisk might start depending on the new tool for parsing `network-data.json`"},{"line_number":480,"context_line":"document."},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_90a5aeb6","line":479,"updated":"2019-11-20 10:47:36.000000000","message":"s/might/will/","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"bfc46665248a5cb49fa2ab16d9e6a3686229b2a9","unresolved":false,"context_lines":[{"line_number":476,"context_line":"Dependencies"},{"line_number":477,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"Ramdisk might start depending on the new tool for parsing `network-data.json`"},{"line_number":480,"context_line":"document."},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":22,"id":"3fa7e38b_2db1eae0","line":479,"in_reply_to":"3fa7e38b_90a5aeb6","updated":"2019-11-21 17:20:17.000000000","message":"Done","commit_id":"2dc3f6ad09523e4c13cf13f7288428d1b5f3faf7"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"6d9f9f346c1c40dee2b56ef25aedb70758ba29f7","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            }"},{"line_number":239,"context_line":"        ]"},{"line_number":240,"context_line":"    }"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"The booted image can use `network_data.json` to bring up local NICs (chosen"},{"line_number":244,"context_line":"by their MACs or `id` field matching OS device naming), set up static network"}],"source_content_type":"text/x-rst","patch_set":26,"id":"3fa7e38b_67528514","line":241,"updated":"2019-11-23 07:04:43.000000000","message":"do we have reusable part for generating these network data here? it seems to be a part of nova code. we need to make sure the generated data conforms to the standard format.","commit_id":"c4341571107492648a6c7ba889b453f3b837288e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4aa870cd3b792ed4260dd91ed8c00f8a3e6f7443","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            }"},{"line_number":239,"context_line":"        ]"},{"line_number":240,"context_line":"    }"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"The booted image can use `network_data.json` to bring up local NICs (chosen"},{"line_number":244,"context_line":"by their MACs or `id` field matching OS device naming), set up static network"}],"source_content_type":"text/x-rst","patch_set":26,"id":"3fa7e38b_8c332061","line":241,"in_reply_to":"3fa7e38b_67528514","updated":"2019-11-25 12:49:49.000000000","message":"It seems nova does not make the code reusable. Neither does the spec provide some formalized schema for validation. :-(\n\nAll I\u0027ve found so far is the metadata spec (linked).","commit_id":"c4341571107492648a6c7ba889b453f3b837288e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d954883d2bb958a9eda58c3f565b1087d8fd7e01","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            }"},{"line_number":239,"context_line":"        ]"},{"line_number":240,"context_line":"    }"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"The booted image can use `network_data.json` to bring up local NICs (chosen"},{"line_number":244,"context_line":"by their MACs or `id` field matching OS device naming), set up static network"}],"source_content_type":"text/x-rst","patch_set":26,"id":"3fa7e38b_f31605f3","line":241,"in_reply_to":"3fa7e38b_8c332061","updated":"2019-11-27 15:52:28.000000000","message":"Someone contributed/added supporting code to generate the same format in bifrost quite a long time ago, so we\u0027ve been using essentially the same data format for a while.\n\nWith that context, this feels informational more than anything else, although it is good to codify it someplace, except since it is already a thing.","commit_id":"c4341571107492648a6c7ba889b453f3b837288e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            }"},{"line_number":239,"context_line":"        ]"},{"line_number":240,"context_line":"    }"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"The booted image can use `network_data.json` to bring up local NICs (chosen"},{"line_number":244,"context_line":"by their MACs or `id` field matching OS device naming), set up static network"}],"source_content_type":"text/x-rst","patch_set":26,"id":"3fa7e38b_57a06c36","line":241,"in_reply_to":"3fa7e38b_f31605f3","updated":"2020-01-08 18:06:32.000000000","message":"JSON schema might solve this.","commit_id":"c4341571107492648a6c7ba889b453f3b837288e"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"6d9f9f346c1c40dee2b56ef25aedb70758ba29f7","unresolved":false,"context_lines":[{"line_number":388,"context_line":""},{"line_number":389,"context_line":"Neutron-based scenario won\u0027t be significantly affected by any of these"},{"line_number":390,"context_line":"changes because configuration information comes from Neutron, rather than"},{"line_number":391,"context_line":"from operator-supplied bits."},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"Other alternatives"},{"line_number":394,"context_line":"++++++++++++++++++"}],"source_content_type":"text/x-rst","patch_set":26,"id":"3fa7e38b_a74cfd75","line":391,"updated":"2019-11-23 07:04:43.000000000","message":"in case of neutron network, how do we know whether we want to do a dhcp-less boot or a dhcp boot? and what we do if operator supplied network data in this case?\ni feel like asked this question before, but can\u0027t remember..","commit_id":"c4341571107492648a6c7ba889b453f3b837288e"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4aa870cd3b792ed4260dd91ed8c00f8a3e6f7443","unresolved":false,"context_lines":[{"line_number":388,"context_line":""},{"line_number":389,"context_line":"Neutron-based scenario won\u0027t be significantly affected by any of these"},{"line_number":390,"context_line":"changes because configuration information comes from Neutron, rather than"},{"line_number":391,"context_line":"from operator-supplied bits."},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"Other alternatives"},{"line_number":394,"context_line":"++++++++++++++++++"}],"source_content_type":"text/x-rst","patch_set":26,"id":"3fa7e38b_6c57c45b","line":391,"in_reply_to":"3fa7e38b_a74cfd75","updated":"2019-11-25 12:49:49.000000000","message":"Presently, ironic will gather network information and build config drive if config-drive is not already provided by nova/operator. The ramdisk may or may not use provided configuration, the end result should be the same.\n\nDo you think it makes sense to save on building config-drive if it\u0027s not going to be used? Perhaps a new node property would suffice?","commit_id":"c4341571107492648a6c7ba889b453f3b837288e"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":83,"context_line":"All these capabilities together largely solve problems (2) and (3) for"},{"line_number":84,"context_line":"the tenants."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"However, OpenStack infrastructure does not presently offer much in part of"},{"line_number":87,"context_line":"configuring ramdisk networking without DHCP. This spec proposes:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"* Allowing the operator to manually associate static node network configuration"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_7da40d4d","line":86,"range":{"start_line":86,"start_character":9,"end_line":86,"end_character":33},"updated":"2020-02-03 23:00:20.000000000","message":"This is a total nit, but it is not just OpenStack with ironic since we have an entire use model that doesn\u0027t require it. I would suggest changing this to \"However, our software infrastructure\"","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":83,"context_line":"All these capabilities together largely solve problems (2) and (3) for"},{"line_number":84,"context_line":"the tenants."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"However, OpenStack infrastructure does not presently offer much in part of"},{"line_number":87,"context_line":"configuring ramdisk networking without DHCP. This spec proposes:"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"* Allowing the operator to manually associate static node network configuration"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_72a748bd","line":86,"range":{"start_line":86,"start_character":9,"end_line":86,"end_character":33},"in_reply_to":"3fa7e38b_7da40d4d","updated":"2020-02-04 18:03:21.000000000","message":"Done","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"  with ironic port or portgroup object. The assumption is that the operator"},{"line_number":91,"context_line":"  would use some other mechanism for baremetal IP address management."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":94,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_5d2fd1a5","line":93,"range":{"start_line":93,"start_character":2,"end_line":93,"end_character":9},"updated":"2020-02-03 23:00:20.000000000","message":"Nit: the tenses seem different between the sentences. Perhaps s/Making/Enable/ and s/using/to leverage/","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":90,"context_line":"  with ironic port or portgroup object. The assumption is that the operator"},{"line_number":91,"context_line":"  would use some other mechanism for baremetal IP address management."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"* Making ironic using Neutron for building static network configuration"},{"line_number":94,"context_line":"  for the node being deployed out of Neutron information."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Provisioning node configuration"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_3272304d","line":93,"range":{"start_line":93,"start_character":2,"end_line":93,"end_character":9},"in_reply_to":"3fa7e38b_5d2fd1a5","updated":"2020-02-04 18:03:21.000000000","message":"Done","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a29cabcc734a749f87b10d650cb6967c15c479da","unresolved":false,"context_lines":[{"line_number":188,"context_line":"Some fields, such as `id` and `ethernet_mac_address`, can be used at the"},{"line_number":189,"context_line":"time of applying network configuration to the node for NIC selection."},{"line_number":190,"context_line":"For example, the node might match its NICs against `network_data.json`"},{"line_number":191,"context_line":"contents by NIC device name or MAC address respectively."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"For example, if these two `network_data.json` instances are attached to two"},{"line_number":194,"context_line":"ironic ports/portgroups (just MTU setting, for illustration purposes):"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_001d89bd","line":191,"updated":"2019-11-27 15:48:20.000000000","message":"Device name is functionally unreliable, so everything I\u0027ve seen out there seems to lean towards MAC address for good reason.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":188,"context_line":"Some fields, such as `id` and `ethernet_mac_address`, can be used at the"},{"line_number":189,"context_line":"time of applying network configuration to the node for NIC selection."},{"line_number":190,"context_line":"For example, the node might match its NICs against `network_data.json`"},{"line_number":191,"context_line":"contents by NIC device name or MAC address respectively."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"For example, if these two `network_data.json` instances are attached to two"},{"line_number":194,"context_line":"ironic ports/portgroups (just MTU setting, for illustration purposes):"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_a277208e","line":191,"in_reply_to":"3fa7e38b_001d89bd","updated":"2020-01-08 18:06:32.000000000","message":"With Glean adoption this problem is handed over to Glean.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"46156a6097b103e2aafa27a05b13f08867d09ade","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    {"},{"line_number":199,"context_line":"        \"links\": ["},{"line_number":200,"context_line":"            {"},{"line_number":201,"context_line":"                \"id\": \"interface0\","},{"line_number":202,"context_line":"                \"type\": \"phy\","},{"line_number":203,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":204,"context_line":"                \"mtu\": 1500"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_ed4dddc5","line":201,"range":{"start_line":201,"start_character":16,"end_line":201,"end_character":35},"updated":"2019-11-26 12:42:19.000000000","message":"What is ID in this context at all? Since we will always have a MAC (it\u0027s on the port/port group), there is no need to use less reliable names for matching. I\u0027d still prefer to use UUID for our internal purposes.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    {"},{"line_number":199,"context_line":"        \"links\": ["},{"line_number":200,"context_line":"            {"},{"line_number":201,"context_line":"                \"id\": \"interface0\","},{"line_number":202,"context_line":"                \"type\": \"phy\","},{"line_number":203,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":204,"context_line":"                \"mtu\": 1500"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_22e01027","line":201,"range":{"start_line":201,"start_character":16,"end_line":201,"end_character":35},"in_reply_to":"3fa7e38b_2070c540","updated":"2020-01-08 18:06:32.000000000","message":"Yes, this is the key.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dcd22d3e92b1cbd634d45ba964905f1abefb1774","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    {"},{"line_number":199,"context_line":"        \"links\": ["},{"line_number":200,"context_line":"            {"},{"line_number":201,"context_line":"                \"id\": \"interface0\","},{"line_number":202,"context_line":"                \"type\": \"phy\","},{"line_number":203,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":204,"context_line":"                \"mtu\": 1500"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_2070c540","line":201,"range":{"start_line":201,"start_character":16,"end_line":201,"end_character":35},"in_reply_to":"3fa7e38b_ed4dddc5","updated":"2019-11-27 15:00:42.000000000","message":"This sounds reasonable, and I believe it only gets used as a key to link network to a physical link.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    {"},{"line_number":199,"context_line":"        \"links\": ["},{"line_number":200,"context_line":"            {"},{"line_number":201,"context_line":"                \"id\": \"interface0\","},{"line_number":202,"context_line":"                \"type\": \"phy\","},{"line_number":203,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":204,"context_line":"                \"mtu\": 1500"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_228b3069","line":201,"range":{"start_line":201,"start_character":16,"end_line":201,"end_character":35},"in_reply_to":"3fa7e38b_ed4dddc5","updated":"2020-01-08 18:06:32.000000000","message":"Yes, however it\u0027s now up to Glean to consider.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"46156a6097b103e2aafa27a05b13f08867d09ade","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            {"},{"line_number":201,"context_line":"                \"id\": \"interface0\","},{"line_number":202,"context_line":"                \"type\": \"phy\","},{"line_number":203,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":204,"context_line":"                \"mtu\": 1500"},{"line_number":205,"context_line":"            }"},{"line_number":206,"context_line":"        ],"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_2dd1b5cd","line":203,"range":{"start_line":203,"start_character":0,"end_line":203,"end_character":60},"updated":"2019-11-26 12:42:19.000000000","message":"I\u0027m not sure I got your arguments, but I think this should be populated by ironic, not the operator. We have the MACs on ports and port groups.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ac71a70e9881d33ee46cf9ff4254a0fab09ceed1","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            {"},{"line_number":201,"context_line":"                \"id\": \"interface0\","},{"line_number":202,"context_line":"                \"type\": \"phy\","},{"line_number":203,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":204,"context_line":"                \"mtu\": 1500"},{"line_number":205,"context_line":"            }"},{"line_number":206,"context_line":"        ],"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_bf7327e8","line":203,"range":{"start_line":203,"start_character":0,"end_line":203,"end_character":60},"in_reply_to":"3fa7e38b_2dd1b5cd","updated":"2019-12-03 22:32:09.000000000","message":"I concur, plus the possible issue with portgroups is that it is user definable, but I like your idea of splitting out the possibility into a separate RFE. Largely that work was built on the pretense of using neutron ml2.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            {"},{"line_number":201,"context_line":"                \"id\": \"interface0\","},{"line_number":202,"context_line":"                \"type\": \"phy\","},{"line_number":203,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":204,"context_line":"                \"mtu\": 1500"},{"line_number":205,"context_line":"            }"},{"line_number":206,"context_line":"        ],"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_62712877","line":203,"range":{"start_line":203,"start_character":0,"end_line":203,"end_character":60},"in_reply_to":"3fa7e38b_2dd1b5cd","updated":"2020-01-08 18:06:32.000000000","message":"With network_data.json relocation from port to node object in ironic, ethernet_mac_address field can\u0027t be populated by ironic any more.\n\nAlternatively, we can move network_data.json back to ironic port, then this network_data field could be populated or validated by ironic.\n\nThe reason why I moved network_data to node object is to avoid the hassle of network_data.json files reduction/merging into one and make ramdisk bootstrapping more unified with instance bootstrapping from operator\u0027s PoV.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            {"},{"line_number":201,"context_line":"                \"id\": \"interface0\","},{"line_number":202,"context_line":"                \"type\": \"phy\","},{"line_number":203,"context_line":"                \"ethernet_mac_address\": \"a0:36:9f:2c:e8:80\","},{"line_number":204,"context_line":"                \"mtu\": 1500"},{"line_number":205,"context_line":"            }"},{"line_number":206,"context_line":"        ],"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_a2216051","line":203,"range":{"start_line":203,"start_character":0,"end_line":203,"end_character":60},"in_reply_to":"3fa7e38b_bf7327e8","updated":"2020-01-08 18:06:32.000000000","message":"With network_data.json move from port/portgroup object to node object, this concern is effectively obsolete.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"58656beaca7264419c3e55809c7340443253e2c4","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            {"},{"line_number":209,"context_line":"                \"id\": \"provisioning IPv4\","},{"line_number":210,"context_line":"                \"type\": \"ipv4\","},{"line_number":211,"context_line":"                \"link\": \"interface0\","},{"line_number":212,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":213,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":214,"context_line":"                \"routes\": ["}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_7e5c95ef","line":211,"updated":"2020-01-03 16:08:16.000000000","message":"I have quite hard feelings against passing free-form data, especially since the receiver is also us.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"46156a6097b103e2aafa27a05b13f08867d09ade","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            {"},{"line_number":209,"context_line":"                \"id\": \"provisioning IPv4\","},{"line_number":210,"context_line":"                \"type\": \"ipv4\","},{"line_number":211,"context_line":"                \"link\": \"interface0\","},{"line_number":212,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":213,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":214,"context_line":"                \"routes\": ["}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_cdd581ba","line":211,"range":{"start_line":211,"start_character":0,"end_line":211,"end_character":37},"updated":"2019-11-26 12:42:19.000000000","message":"No need for this, it\u0027s tied to a port.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"50c3b70ebf1bc99276b4319ce96370b54058d14d","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            {"},{"line_number":209,"context_line":"                \"id\": \"provisioning IPv4\","},{"line_number":210,"context_line":"                \"type\": \"ipv4\","},{"line_number":211,"context_line":"                \"link\": \"interface0\","},{"line_number":212,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":213,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":214,"context_line":"                \"routes\": ["}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_85862b16","line":211,"updated":"2019-12-03 11:14:12.000000000","message":"This is an API example. Our API should make sense, not just being driven by whatever backend we invision.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fe5157b83e65dcdb18cf4ad8a689581ad575093e","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            {"},{"line_number":209,"context_line":"                \"id\": \"provisioning IPv4\","},{"line_number":210,"context_line":"                \"type\": \"ipv4\","},{"line_number":211,"context_line":"                \"link\": \"interface0\","},{"line_number":212,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":213,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":214,"context_line":"                \"routes\": ["}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_c1dc2819","line":211,"range":{"start_line":211,"start_character":0,"end_line":211,"end_character":37},"in_reply_to":"3fa7e38b_531a7918","updated":"2019-12-02 13:36:31.000000000","message":"Why would ironic deduce anything? The example here is the data that would be processed by cloud-init, an the actual value doesn\u0027t matter as long as it matches the other element containing the MAC address.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            {"},{"line_number":209,"context_line":"                \"id\": \"provisioning IPv4\","},{"line_number":210,"context_line":"                \"type\": \"ipv4\","},{"line_number":211,"context_line":"                \"link\": \"interface0\","},{"line_number":212,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":213,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":214,"context_line":"                \"routes\": ["}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_02a2b4ad","line":211,"in_reply_to":"3fa7e38b_7e5c95ef","updated":"2020-01-08 18:06:32.000000000","message":"I still feel strongly against interpreting network_data.json by ironic conductor. In that sense I share Julia\u0027s opinion on the matter.\n\nI do agree, however, that validation of user-supplied network_data.json is a good thing not only for ramdisk, but also for the instance.\n\nThe mid ground solution I\u0027m trying to convey is to offer a way to the operator to validate the data before it hits ironic API (it\u0027s now in Alternatives).","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1eb17d12ecaa670e0d0691108392fa8bd0a9de85","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            {"},{"line_number":209,"context_line":"                \"id\": \"provisioning IPv4\","},{"line_number":210,"context_line":"                \"type\": \"ipv4\","},{"line_number":211,"context_line":"                \"link\": \"interface0\","},{"line_number":212,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":213,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":214,"context_line":"                \"routes\": ["}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_531a7918","line":211,"range":{"start_line":211,"start_character":0,"end_line":211,"end_character":37},"in_reply_to":"3fa7e38b_80e2d9d3","updated":"2019-11-27 15:54:15.000000000","message":"I don\u0027t suggest skipping it completely, I suggest that ironic can deduce it since this record is attached to a port (i.e. just use port.uuid?).","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ac71a70e9881d33ee46cf9ff4254a0fab09ceed1","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            {"},{"line_number":209,"context_line":"                \"id\": \"provisioning IPv4\","},{"line_number":210,"context_line":"                \"type\": \"ipv4\","},{"line_number":211,"context_line":"                \"link\": \"interface0\","},{"line_number":212,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":213,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":214,"context_line":"                \"routes\": ["}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_9f266bcb","line":211,"in_reply_to":"3fa7e38b_85862b16","updated":"2019-12-03 22:32:09.000000000","message":"The point is not our API when it is just a field we wanted to be stored/handled and passed through as a dictionary. The point was to offer the ability for someone to drop in the definition they need to pass through. The hope was to try and minimize work and maximize flexibility with an existing known model.\n\nOne reason TO explicitly just pass through additional data is not just different link and address types, but also different media types which require different parameters.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dcd22d3e92b1cbd634d45ba964905f1abefb1774","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            {"},{"line_number":209,"context_line":"                \"id\": \"provisioning IPv4\","},{"line_number":210,"context_line":"                \"type\": \"ipv4\","},{"line_number":211,"context_line":"                \"link\": \"interface0\","},{"line_number":212,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":213,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":214,"context_line":"                \"routes\": ["}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_80e2d9d3","line":211,"range":{"start_line":211,"start_character":0,"end_line":211,"end_character":37},"in_reply_to":"3fa7e38b_cdd581ba","updated":"2019-11-27 15:00:42.000000000","message":"I\u0027m 95% sure that this is needed because I remember when this was done in bifrost, there was need to cross-link the items with matching values link to id value fields. The bond example that was pasted in to the discussion by Kaifeng has an example of this with bonds.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fe5157b83e65dcdb18cf4ad8a689581ad575093e","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            }"},{"line_number":206,"context_line":"        ],"},{"line_number":207,"context_line":"        \"networks\": ["},{"line_number":208,"context_line":"            {"},{"line_number":209,"context_line":"                \"id\": \"provisioning IPv4\","},{"line_number":210,"context_line":"                \"type\": \"ipv4\","},{"line_number":211,"context_line":"                \"link\": \"interface0\","},{"line_number":212,"context_line":"                \"ip_address\": \"10.184.0.244\","},{"line_number":213,"context_line":"                \"netmask\": \"255.255.240.0\","},{"line_number":214,"context_line":"                \"routes\": ["},{"line_number":215,"context_line":"                    {"},{"line_number":216,"context_line":"                        \"network\": \"10.0.0.0\","},{"line_number":217,"context_line":"                        \"netmask\": \"255.0.0.0\","},{"line_number":218,"context_line":"                        \"gateway\": \"11.0.0.1\""},{"line_number":219,"context_line":"                    },"},{"line_number":220,"context_line":"                    {"},{"line_number":221,"context_line":"                        \"network\": \"0.0.0.0\","},{"line_number":222,"context_line":"                        \"netmask\": \"0.0.0.0\","},{"line_number":223,"context_line":"                        \"gateway\": \"23.253.157.1\""},{"line_number":224,"context_line":"                    }"},{"line_number":225,"context_line":"                ],"},{"line_number":226,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":227,"context_line":"            }"},{"line_number":228,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_41f11896","line":225,"range":{"start_line":208,"start_character":0,"end_line":225,"end_character":18},"updated":"2019-12-02 13:36:31.000000000","message":"This dictionary is all that is _needed_, the rest can be assembled by ironic.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"50c3b70ebf1bc99276b4319ce96370b54058d14d","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                        \"netmask\": \"0.0.0.0\","},{"line_number":223,"context_line":"                        \"gateway\": \"23.253.157.1\""},{"line_number":224,"context_line":"                    }"},{"line_number":225,"context_line":"                ],"},{"line_number":226,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":227,"context_line":"            }"},{"line_number":228,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_a589e725","line":225,"updated":"2019-12-03 11:14:12.000000000","message":"Well, no, this dictionary is currently quite redundant.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"ac71a70e9881d33ee46cf9ff4254a0fab09ceed1","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                        \"netmask\": \"0.0.0.0\","},{"line_number":223,"context_line":"                        \"gateway\": \"23.253.157.1\""},{"line_number":224,"context_line":"                    }"},{"line_number":225,"context_line":"                ],"},{"line_number":226,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":227,"context_line":"            }"},{"line_number":228,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_ff699ff7","line":225,"in_reply_to":"3fa7e38b_a589e725","updated":"2019-12-03 22:32:09.000000000","message":"not if there is no neutron...","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                        \"netmask\": \"0.0.0.0\","},{"line_number":223,"context_line":"                        \"gateway\": \"23.253.157.1\""},{"line_number":224,"context_line":"                    }"},{"line_number":225,"context_line":"                ],"},{"line_number":226,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":227,"context_line":"            }"},{"line_number":228,"context_line":"        ]"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_828d4436","line":225,"in_reply_to":"3fa7e38b_ff699ff7","updated":"2020-01-08 18:06:32.000000000","message":"With newly proposed Glean dependency, it\u0027s now up to Glean to judge.\n\nI consider that being a good thing - I\u0027d better not to have ironic depending on or demanding anything specific in the area of networking. Serving the role of a dump carrier seems much easier to maintain and future proof.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"46156a6097b103e2aafa27a05b13f08867d09ade","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                        \"gateway\": \"23.253.157.1\""},{"line_number":224,"context_line":"                    }"},{"line_number":225,"context_line":"                ],"},{"line_number":226,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":227,"context_line":"            }"},{"line_number":228,"context_line":"        ]"},{"line_number":229,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_8ddf89d6","line":226,"range":{"start_line":226,"start_character":0,"end_line":226,"end_character":68},"updated":"2019-11-26 12:42:19.000000000","message":"Do we need this? We won\u0027t have a network ID in a standalone case.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dcd22d3e92b1cbd634d45ba964905f1abefb1774","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                        \"gateway\": \"23.253.157.1\""},{"line_number":224,"context_line":"                    }"},{"line_number":225,"context_line":"                ],"},{"line_number":226,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":227,"context_line":"            }"},{"line_number":228,"context_line":"        ]"},{"line_number":229,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_a0b275e4","line":226,"range":{"start_line":226,"start_character":0,"end_line":226,"end_character":68},"in_reply_to":"3fa7e38b_8ddf89d6","updated":"2019-11-27 15:00:42.000000000","message":"It is just an example blob of what network_json sends over. This field is, afaik, not required at all and is purely informational.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                        \"gateway\": \"23.253.157.1\""},{"line_number":224,"context_line":"                    }"},{"line_number":225,"context_line":"                ],"},{"line_number":226,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":227,"context_line":"            }"},{"line_number":228,"context_line":"        ]"},{"line_number":229,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_42a18c91","line":226,"range":{"start_line":226,"start_character":0,"end_line":226,"end_character":68},"in_reply_to":"3fa7e38b_8ddf89d6","updated":"2020-01-08 18:06:32.000000000","message":"No, we do not. However Glean might want that. But, luckily, it\u0027s not out business any more! \\o/","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                        \"gateway\": \"23.253.157.1\""},{"line_number":224,"context_line":"                    }"},{"line_number":225,"context_line":"                ],"},{"line_number":226,"context_line":"                \"network_id\": \"da5bb487-5193-4a65-a3df-4a0055a8c0d7\""},{"line_number":227,"context_line":"            }"},{"line_number":228,"context_line":"        ]"},{"line_number":229,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_82c46442","line":226,"range":{"start_line":226,"start_character":0,"end_line":226,"end_character":68},"in_reply_to":"3fa7e38b_a0b275e4","updated":"2020-01-08 18:06:32.000000000","message":"I think so as well.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"46156a6097b103e2aafa27a05b13f08867d09ade","unresolved":false,"context_lines":[{"line_number":383,"context_line":"   the boot ISO image as one of the config drive files."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"   User instance invokes cloud-init that probes all node storage devices in"},{"line_number":386,"context_line":"   search for a file system labeled `config-2`. Eventually, cloud-init hits"},{"line_number":387,"context_line":"   virtual media drive, finds boot ISO there, then `network-data.json` as part"},{"line_number":388,"context_line":"   of custom data source and applies it."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Ironic within OpenStack"},{"line_number":391,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_4d90b1f4","line":388,"range":{"start_line":386,"start_character":48,"end_line":388,"end_character":40},"updated":"2019-11-26 12:42:19.000000000","message":"Is it implemented or should we update cloud-init and/or boot scripts?","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dcd22d3e92b1cbd634d45ba964905f1abefb1774","unresolved":false,"context_lines":[{"line_number":383,"context_line":"   the boot ISO image as one of the config drive files."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"   User instance invokes cloud-init that probes all node storage devices in"},{"line_number":386,"context_line":"   search for a file system labeled `config-2`. Eventually, cloud-init hits"},{"line_number":387,"context_line":"   virtual media drive, finds boot ISO there, then `network-data.json` as part"},{"line_number":388,"context_line":"   of custom data source and applies it."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Ironic within OpenStack"},{"line_number":391,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_60f23d9e","line":388,"range":{"start_line":386,"start_character":48,"end_line":388,"end_character":40},"in_reply_to":"3fa7e38b_4d90b1f4","updated":"2019-11-27 15:00:42.000000000","message":"Seems like a pure implementation detail to me. I feel like doing it in IPA makes it more portable in the grand scheme of the universe.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1eb17d12ecaa670e0d0691108392fa8bd0a9de85","unresolved":false,"context_lines":[{"line_number":383,"context_line":"   the boot ISO image as one of the config drive files."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"   User instance invokes cloud-init that probes all node storage devices in"},{"line_number":386,"context_line":"   search for a file system labeled `config-2`. Eventually, cloud-init hits"},{"line_number":387,"context_line":"   virtual media drive, finds boot ISO there, then `network-data.json` as part"},{"line_number":388,"context_line":"   of custom data source and applies it."},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"Ironic within OpenStack"},{"line_number":391,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_53dfd937","line":388,"range":{"start_line":386,"start_character":48,"end_line":388,"end_character":40},"in_reply_to":"3fa7e38b_60f23d9e","updated":"2019-11-27 15:54:15.000000000","message":"My question is about the scope of this work. If we have to patch cloud-init, we better say that up-front.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"46156a6097b103e2aafa27a05b13f08867d09ade","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"  To keep ramdisk neutral with regards to Linux distribution, this new script"},{"line_number":653,"context_line":"  should solely rely on `iproute2` toolset when conveying network configuration"},{"line_number":654,"context_line":"  to the kernel."},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"* Update diskimage-builder tool to control the inclusion and the options of"},{"line_number":657,"context_line":"  of the new static network configuration processing features."}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_8da6a954","line":654,"updated":"2019-11-26 12:42:19.000000000","message":"Just to double-check: are you sure that iproute2 can handle bonding?","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1eb17d12ecaa670e0d0691108392fa8bd0a9de85","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"  To keep ramdisk neutral with regards to Linux distribution, this new script"},{"line_number":653,"context_line":"  should solely rely on `iproute2` toolset when conveying network configuration"},{"line_number":654,"context_line":"  to the kernel."},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"* Update diskimage-builder tool to control the inclusion and the options of"},{"line_number":657,"context_line":"  of the new static network configuration processing features."}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_b3b72df9","line":654,"in_reply_to":"3fa7e38b_13b8810f","updated":"2019-11-27 15:54:15.000000000","message":"Nice, thanks!","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a29cabcc734a749f87b10d650cb6967c15c479da","unresolved":false,"context_lines":[{"line_number":651,"context_line":""},{"line_number":652,"context_line":"  To keep ramdisk neutral with regards to Linux distribution, this new script"},{"line_number":653,"context_line":"  should solely rely on `iproute2` toolset when conveying network configuration"},{"line_number":654,"context_line":"  to the kernel."},{"line_number":655,"context_line":""},{"line_number":656,"context_line":"* Update diskimage-builder tool to control the inclusion and the options of"},{"line_number":657,"context_line":"  of the new static network configuration processing features."}],"source_content_type":"text/x-rst","patch_set":27,"id":"3fa7e38b_13b8810f","line":654,"in_reply_to":"3fa7e38b_8da6a954","updated":"2019-11-27 15:48:20.000000000","message":"https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-vlan_on_bond_and_bridge_using_ip_commands\n\nIt can.","commit_id":"df65b96494c8d0d7e335172a41936e0c4cd05a2d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"822fe64e5a57563b786397f41d1f91d9b0169024","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"This spec suggests associating the content of `network_data.json`"},{"line_number":189,"context_line":"document with ironic node object by introducing two new fields to node"},{"line_number":190,"context_line":"object: `ramdisk_network_data` and `deploy_network_data` to contain"},{"line_number":191,"context_line":"`network_data.json` information for deploy and instance booting phases of"},{"line_number":192,"context_line":"ironic workflow."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_76c9ffa8","line":190,"updated":"2020-01-07 13:37:54.000000000","message":"\"ramdisk\" vs \"deploy\" is completely confusing here (which one if for IPA even?). And given that we have an ability to populate configdrives in deploy-time already, I\u0027m somewhat against providing a second way for the instance network_data.","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"d8403d80962c86d534fb61a52d8ecf97eff34864","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"This spec suggests associating the content of `network_data.json`"},{"line_number":189,"context_line":"document with ironic node object by introducing two new fields to node"},{"line_number":190,"context_line":"object: `ramdisk_network_data` and `deploy_network_data` to contain"},{"line_number":191,"context_line":"`network_data.json` information for deploy and instance booting phases of"},{"line_number":192,"context_line":"ironic workflow."},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_16cc4b88","line":190,"in_reply_to":"3fa7e38b_76c9ffa8","updated":"2020-01-08 11:22:02.000000000","message":"\u003e \"ramdisk\" vs \"deploy\" is completely confusing here (which one if for IPA even?). \n\nSorry, that\u0027s a typo. It should be `deploy_network_data` for everything ramdisk and `instance_network_data` for user instances.\n\n\u003e And given that we have an ability to populate configdrives in deploy-time already, I\u0027m somewhat against providing a second way for the instance network_data.\n\nYeah, I personally found deploy/ramdisk config-drive way more consistent, easier and future proof. But second config-drive idea has been downvoted in the past, that\u0027s why I reverted to file injection approach.","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"822fe64e5a57563b786397f41d1f91d9b0169024","unresolved":false,"context_lines":[{"line_number":189,"context_line":"document with ironic node object by introducing two new fields to node"},{"line_number":190,"context_line":"object: `ramdisk_network_data` and `deploy_network_data` to contain"},{"line_number":191,"context_line":"`network_data.json` information for deploy and instance booting phases of"},{"line_number":192,"context_line":"ironic workflow."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Conveying network information via `network_data.json` file does not imply,"},{"line_number":195,"context_line":"however, that deploy ramdisk boot sequence has to employ specialized tools like"}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_16c20b87","line":192,"updated":"2020-01-07 13:37:54.000000000","message":"Now that you\u0027ve removed the API samples completely, please explain how you\u0027re planning to validate the input here (keeping in mind that the answer \"we won\u0027t\" will make me -2 this change).\n\nI\u0027ll explain the harshness of my position: the goal of this work is to provide *API*, not a way to inject files into ISO images. API has to be validated, (ideally) versioned and correctly processed in a vendor and OS agnostic way. This spec seems to drift further and further away from the request we have (\"API for providing IP addresses without DHCP\") to the extent I\u0027m starting to like the original version better.\n\nOr we can just start accepting configdrives for the deploy process. It won\u0027t be API, but it at least will be consistent with what we do for the final instances.","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":189,"context_line":"document with ironic node object by introducing two new fields to node"},{"line_number":190,"context_line":"object: `ramdisk_network_data` and `deploy_network_data` to contain"},{"line_number":191,"context_line":"`network_data.json` information for deploy and instance booting phases of"},{"line_number":192,"context_line":"ironic workflow."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Conveying network information via `network_data.json` file does not imply,"},{"line_number":195,"context_line":"however, that deploy ramdisk boot sequence has to employ specialized tools like"}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_2249f0b6","line":192,"in_reply_to":"3fa7e38b_16c20b87","updated":"2020-01-08 18:06:32.000000000","message":"I\u0027ve put the validation part in the latest spec. However, I am still not convinced this is a good move. Mostly because I fear making ironic dependent on Glean input requirements as it makes ironic rigid and dependent on Glean changes.\n\nAs an alternative (noted in the spec), I\u0027ve proposed an external validator for both ramdisk and instance network configuration information.","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"822fe64e5a57563b786397f41d1f91d9b0169024","unresolved":false,"context_lines":[{"line_number":195,"context_line":"however, that deploy ramdisk boot sequence has to employ specialized tools like"},{"line_number":196,"context_line":"`os-net-config` or `cloud-init` behemoth - for sake of low resource footprint,"},{"line_number":197,"context_line":"some ramdisk implementations might choose to implement its own way of network"},{"line_number":198,"context_line":"configuration application."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"At the same time, images, configured to invoke `cloud-init` on boot, the"},{"line_number":201,"context_line":"`network_data.json` file that ironic serves will be automatically discovered"}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_36bf07fd","line":198,"updated":"2020-01-07 13:37:54.000000000","message":"Since we\u0027re practically the only party that provides ramdisks, let\u0027s rephrase it to talk about 1. our choices, 2. the way they can be overridden (if needed).","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":195,"context_line":"however, that deploy ramdisk boot sequence has to employ specialized tools like"},{"line_number":196,"context_line":"`os-net-config` or `cloud-init` behemoth - for sake of low resource footprint,"},{"line_number":197,"context_line":"some ramdisk implementations might choose to implement its own way of network"},{"line_number":198,"context_line":"configuration application."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"At the same time, images, configured to invoke `cloud-init` on boot, the"},{"line_number":201,"context_line":"`network_data.json` file that ironic serves will be automatically discovered"}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_3d111151","line":198,"in_reply_to":"3fa7e38b_36bf07fd","updated":"2020-01-08 18:06:32.000000000","message":"Added (2).\n\nThis reminds me that if we do not force specific, Glean-compliant, input on ironic conductor side (offering some external input validation instead), that would make it easier for alien ramdisk implementations to bootstrap differently.","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"822fe64e5a57563b786397f41d1f91d9b0169024","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"At the same time, images, configured to invoke `cloud-init` on boot, the"},{"line_number":201,"context_line":"`network_data.json` file that ironic serves will be automatically discovered"},{"line_number":202,"context_line":"and processed by `cloud-init`."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"To summarize - in the area of provisioning node network configuration this spec"},{"line_number":205,"context_line":"proposes:"}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_d6b79321","line":202,"updated":"2020-01-07 13:37:54.000000000","message":"This is how configdrives work, let\u0027s skip it for the sake of brevity.","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"At the same time, images, configured to invoke `cloud-init` on boot, the"},{"line_number":201,"context_line":"`network_data.json` file that ironic serves will be automatically discovered"},{"line_number":202,"context_line":"and processed by `cloud-init`."},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"To summarize - in the area of provisioning node network configuration this spec"},{"line_number":205,"context_line":"proposes:"}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_fd285985","line":202,"in_reply_to":"3fa7e38b_d6b79321","updated":"2020-01-08 18:06:32.000000000","message":"Done","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"822fe64e5a57563b786397f41d1f91d9b0169024","unresolved":false,"context_lines":[{"line_number":207,"context_line":"* Reusing Nova metadata representation for provisioning network configuration"},{"line_number":208,"context_line":"  via ramdisk and instance images"},{"line_number":209,"context_line":"* Adding two new fields to ironic node object: `ramdisk_network_data` and"},{"line_number":210,"context_line":"  `instance_network_data`"},{"line_number":211,"context_line":"* Creating a new `config-drive` or modifying the passed one to have it"},{"line_number":212,"context_line":"  including `network-data.json` file"},{"line_number":213,"context_line":"* Unpacking the contents of `config-drive` image into root of the ISO file"}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_f6b40f1f","line":210,"updated":"2020-01-07 13:37:54.000000000","message":"Aha, so it\u0027s \"instance_network_data\". clearer, but I still object to its existence. We already have one way to do the same.","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"09a1fb10a594b9e69f6ba4c7245ddcbf6e93cddb","unresolved":false,"context_lines":[{"line_number":207,"context_line":"* Reusing Nova metadata representation for provisioning network configuration"},{"line_number":208,"context_line":"  via ramdisk and instance images"},{"line_number":209,"context_line":"* Adding two new fields to ironic node object: `ramdisk_network_data` and"},{"line_number":210,"context_line":"  `instance_network_data`"},{"line_number":211,"context_line":"* Creating a new `config-drive` or modifying the passed one to have it"},{"line_number":212,"context_line":"  including `network-data.json` file"},{"line_number":213,"context_line":"* Unpacking the contents of `config-drive` image into root of the ISO file"}],"source_content_type":"text/x-rst","patch_set":28,"id":"3fa7e38b_bd1e615b","line":210,"in_reply_to":"3fa7e38b_f6b40f1f","updated":"2020-01-08 18:06:32.000000000","message":"Sorry for the typo.\n\nI removed instance_network_data entirely in favor of provision state config-drive.\n\nThat makes passing the entire config-drive for ramdisk bootstrapping more appealing to me. More unified - easier to comprehend, more flexible - future proof.\n\nI noted that option in Alternatives.","commit_id":"e527296363fd1448d82d965152c933afcaf35681"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"73fa054e8308d79942206778892298f77eb02690","unresolved":false,"context_lines":[{"line_number":190,"context_line":"On ironic ramdisk side, this spec proposes using Glean [13]_ for consuming"},{"line_number":191,"context_line":"and applying network configuration to the OS running ironic ramdisk. The main"},{"line_number":192,"context_line":"consideration here is that, unlike `cloud-init`, `Glean` is lean, and readily"},{"line_number":193,"context_line":"supports a subset of `cloud-init` features."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Alternative ramdisk implementations can choose other ways of bootstrapping"},{"line_number":196,"context_line":"OS networking based on `network_data.json` information."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3fa7e38b_3f4ede38","line":193,"updated":"2020-01-09 03:16:26.000000000","message":"Sorry for not following for a while, I read the irc discussion recently (challenging long) and agree with Dmitry that we build APIs and API needs validation. I have no knowledge on Glean, but this sounds like a implementation backend/detail to me, this is not good when we want to change the backend, I think we should avoid tieing our API input into some specific tool like Glean.\n\nMaybe let\u0027s think this way:\n\n- What network information is required for a dhcpless deployment?\n- What information does ironic have already in standalone or with openstack respectively?\n- The missing parts should be what we demand in the API, and in case of ironic with openstack, which config source takes precedence when user provided overlapped with neutron allocated (e.g. IP address)?\n\nWe can use Glean as an initial iteration, so I think what we need to do in the scope is: building network config data into Glean compatible format and inject into ramdisk.\n(Do we need to patch IPA to trigger the Glean, or just put it into somewhere in the ramdisk? I am not sure here.)\n\nSuppose one day user has demand on tools other than Glean, no, I don\u0027t advocate for cloud-init :) just it\u0027s our only use case. let\u0027s say Cloud-daemon-a-fake, we just do the same for Glean, build available network config information into Cloud-daemon-a-fake compatible one. If some vendor wants do the same, just go ahead and help yourself.","commit_id":"991d00f5a090422544862ba6e7eba6c8f6d5f925"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e7db67171a9ddb9df77a17458a7d10c5b4cedd21","unresolved":false,"context_lines":[{"line_number":190,"context_line":"On ironic ramdisk side, this spec proposes using Glean [13]_ for consuming"},{"line_number":191,"context_line":"and applying network configuration to the OS running ironic ramdisk. The main"},{"line_number":192,"context_line":"consideration here is that, unlike `cloud-init`, `Glean` is lean, and readily"},{"line_number":193,"context_line":"supports a subset of `cloud-init` features."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Alternative ramdisk implementations can choose other ways of bootstrapping"},{"line_number":196,"context_line":"OS networking based on `network_data.json` information."}],"source_content_type":"text/x-rst","patch_set":30,"id":"3fa7e38b_a1d37e36","line":193,"in_reply_to":"3fa7e38b_3f4ede38","updated":"2020-01-10 12:21:10.000000000","message":"\u003e Sorry for not following for a while, I read the irc discussion recently (challenging long) and agree with Dmitry that we build APIs and API needs validation. I have no knowledge on Glean, but this sounds like a implementation backend/detail to me, this is not good when we want to change the backend, I think we should avoid tieing our API input into some specific tool like Glean.\n\nI have the same gut feeling - I do not like Glean details be tied up with ironic in any way.\n\nAs per discussions on IRC and here, the other idea that came up so far is:\n\n* Consider ironic being a dumb path-through carrier of network configuration data i.e. no interpretation in ironic\n* Oblige the operator to pass a well-formed config through ironic minimize  deployment failures. For that we can provide Glean schema to validate their data against\n\nHowever, the operator may ignore or mess up this validation requirements that would lead to havoc in ramdisk. If we had Glean validation built into ironic, the operator won\u0027t be able to completely ignore us.\n\n\u003e Maybe let\u0027s think this way:\n\u003e What network information is required for a dhcpless deployment?\n\u003e What information does ironic have already in standalone or with openstack respectively?\n\u003e The missing parts should be what we demand in the API, and in case of ironic with openstack, which config source takes precedence when user provided overlapped with neutron allocated (e.g. IP address)?\n\nFor stand-alone ironic we know nothing, we need everything to come from the operator. For OpenStack ironic, we know everything at least for most common scenarios.\n\n\u003e (Do we need to patch IPA to trigger the Glean, or just put it into somewhere in the ramdisk? I am not sure here.)\n\nMy understanding is that Glean should be invoked early on system boot to configure the OS. So it\u0027s likely to be a systemd unit file.\n\n\u003e Suppose one day user has demand on tools other than Glean, no, I don\u0027t advocate for cloud-init :) just it\u0027s our only use case. let\u0027s say Cloud-daemon-a-fake, we just do the same for Glean, build available network config information into Cloud-daemon-a-fake compatible one. If some vendor wants do the same, just go ahead and help yourself.\n \nThis sounds very reasonable to me.\n\nHowever, the other opinion I am aware of is that ramdisk in its entirety is our (ironic team\u0027s) business. It is very unlikely that the operator ever wants to touch it.\n\nIf we consider ironic being a pass-through carrier of network configuration (ie. no validation in ironic), that requirement would be fulfilled for stand-alone ironic.\n\nFor OpenStack ironic I can think of having network data configuration rendered from a user-supplied template.","commit_id":"991d00f5a090422544862ba6e7eba6c8f6d5f925"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":74,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":75,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":76,"context_line":"both boot operations should not depend on DHCP availability on the network."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":79,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_b7c13933","line":76,"range":{"start_line":75,"start_character":69,"end_line":76,"end_character":75},"updated":"2020-02-03 23:00:20.000000000","message":"I\u0027m not sure this statement is required, tbh.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Typical ironic workflow involves booting two operating systems. First,"},{"line_number":74,"context_line":"Ironic Python Agent (known as IPA or ramdisk) has to be booted to prepare the"},{"line_number":75,"context_line":"node. Once set up by IPA, the tenant operating system is brought up. Ideally,"},{"line_number":76,"context_line":"both boot operations should not depend on DHCP availability on the network."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"In the context of OpenStack, existing cloud infrastructure is capable to"},{"line_number":79,"context_line":"manage tenant network configuration (e.g. Neutron), to deliver network"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_b28b8014","line":76,"range":{"start_line":75,"start_character":69,"end_line":76,"end_character":75},"in_reply_to":"3fa7e38b_b7c13933","updated":"2020-02-04 18:03:21.000000000","message":"Done","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":100,"context_line":"metadata via `config-drive` for the case of local disk deployment"},{"line_number":101,"context_line":"(`config-drive` on a dedicated partition). However, there seems to be no"},{"line_number":102,"context_line":"obvious way, with OpenStack, to supply network configuration to ironic"},{"line_number":103,"context_line":"ramdisk without DHCP."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"This spec proposes burning the contents of `config-drive` containing Nova"},{"line_number":106,"context_line":"metadata into the ISO image the node has been booted from. If no"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_77e981a9","line":103,"range":{"start_line":101,"start_character":42,"end_line":103,"end_character":21},"updated":"2020-02-03 23:00:20.000000000","message":"nit: This is just a restatement that seems un-necessary.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":98,"context_line":""},{"line_number":99,"context_line":"OpenStack can supply network configuration to tenants in form of Nova"},{"line_number":100,"context_line":"metadata via `config-drive` for the case of local disk deployment"},{"line_number":101,"context_line":"(`config-drive` on a dedicated partition). However, there seems to be no"},{"line_number":102,"context_line":"obvious way, with OpenStack, to supply network configuration to ironic"},{"line_number":103,"context_line":"ramdisk without DHCP."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"This spec proposes burning the contents of `config-drive` containing Nova"},{"line_number":106,"context_line":"metadata into the ISO image the node has been booted from. If no"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_72950831","line":103,"range":{"start_line":101,"start_character":42,"end_line":103,"end_character":21},"in_reply_to":"3fa7e38b_77e981a9","updated":"2020-02-04 18:03:21.000000000","message":"Done","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":103,"context_line":"ramdisk without DHCP."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"This spec proposes burning the contents of `config-drive` containing Nova"},{"line_number":106,"context_line":"metadata into the ISO image the node has been booted from. If no"},{"line_number":107,"context_line":"`config-drive` information is supplied to ironic by operator, ironic"},{"line_number":108,"context_line":"will create one."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_b734d948","line":106,"range":{"start_line":106,"start_character":32,"end_line":106,"end_character":58},"updated":"2020-02-03 23:00:20.000000000","message":"Could we change this to focus on the node in provisioning state? This seems like it is easy to think of as a deployed node.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":103,"context_line":"ramdisk without DHCP."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"This spec proposes burning the contents of `config-drive` containing Nova"},{"line_number":106,"context_line":"metadata into the ISO image the node has been booted from. If no"},{"line_number":107,"context_line":"`config-drive` information is supplied to ironic by operator, ironic"},{"line_number":108,"context_line":"will create one."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_e015a23f","line":106,"range":{"start_line":106,"start_character":32,"end_line":106,"end_character":58},"in_reply_to":"3fa7e38b_b734d948","updated":"2020-02-04 18:03:21.000000000","message":"Actually, I thought of both provisioning and provisioned states here. For the latter, it can be  functional replacement of a config-drive partition on a local HDD.\n\nFor nodes with local drives config-drive partition is still possible, however dumping config-drive onto boot ISO (assuming non-local boot) makes network configuration manageable at a post-deploy time. Can be a useful feature?\n\nFor diskless nodes, boot ISO would be the only home for config-drive.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fecf3de7d2a42f7f5944b262cbc0e33ffd179d66","unresolved":false,"context_lines":[{"line_number":103,"context_line":"ramdisk without DHCP."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"This spec proposes burning the contents of `config-drive` containing Nova"},{"line_number":106,"context_line":"metadata into the ISO image the node has been booted from. If no"},{"line_number":107,"context_line":"`config-drive` information is supplied to ironic by operator, ironic"},{"line_number":108,"context_line":"will create one."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_428273a8","line":106,"range":{"start_line":106,"start_character":32,"end_line":106,"end_character":58},"in_reply_to":"3fa7e38b_e015a23f","updated":"2020-02-04 22:49:56.000000000","message":"I\u0027d like us to stay focused on provisioning and not supporting the \"ramdisk\" style case for this. While yes, in theory, vmedia could provide the config drive, it is beyond the scope of making provisioning functional.\n\nWe don\u0027t support, nor does nova really support updating the config drive for deploy. In fact, it wasn\u0027t until ?rocky? until it would even rebuild the config drive and send it across. Previously we just re-used a config drive on rebuild.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"This spec proposes burning the contents of `config-drive` containing Nova"},{"line_number":106,"context_line":"metadata into the ISO image the node has been booted from. If no"},{"line_number":107,"context_line":"`config-drive` information is supplied to ironic by operator, ironic"},{"line_number":108,"context_line":"will create one."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"To facilitate network configuration processing and application, this spec"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_b71db9c0","line":107,"range":{"start_line":107,"start_character":42,"end_line":107,"end_character":48},"updated":"2020-02-03 23:00:20.000000000","message":"nit: Your upper casing the project names Nova/Neutron elsewhere and lower casing it here. Doc guidelines are lower cased project names and upper cased official service names.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fecf3de7d2a42f7f5944b262cbc0e33ffd179d66","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"This spec proposes burning the contents of `config-drive` containing Nova"},{"line_number":106,"context_line":"metadata into the ISO image the node has been booted from. If no"},{"line_number":107,"context_line":"`config-drive` information is supplied to ironic by operator, ironic"},{"line_number":108,"context_line":"will create one."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"To facilitate network configuration processing and application, this spec"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_627d2fc2","line":107,"range":{"start_line":107,"start_character":42,"end_line":107,"end_character":48},"in_reply_to":"3fa7e38b_2682f2a7","updated":"2020-02-04 22:49:56.000000000","message":"Thanks!","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"This spec proposes burning the contents of `config-drive` containing Nova"},{"line_number":106,"context_line":"metadata into the ISO image the node has been booted from. If no"},{"line_number":107,"context_line":"`config-drive` information is supplied to ironic by operator, ironic"},{"line_number":108,"context_line":"will create one."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"To facilitate network configuration processing and application, this spec"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_2682f2a7","line":107,"range":{"start_line":107,"start_character":42,"end_line":107,"end_character":48},"in_reply_to":"3fa7e38b_b71db9c0","updated":"2020-02-04 18:03:21.000000000","message":"I tried to change that where referring to Ironic (as a service) makes more sense. The borderline is blurred sometimes.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ]"},{"line_number":180,"context_line":"    }"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"This spec suggests associating the content of `network_data.json`"},{"line_number":183,"context_line":"document with ironic node object by introducing a new `network_data` field"},{"line_number":184,"context_line":"to the node object to contain `network_data.json` information for ironic"},{"line_number":185,"context_line":"ramdisk booting."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_d77b95f0","line":182,"range":{"start_line":182,"start_character":10,"end_line":182,"end_character":18},"updated":"2020-02-03 23:00:20.000000000","message":"Nit: The spec is not suggesting, the spec is stating how it is viewed as working. Actual implementation might differ some.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fecf3de7d2a42f7f5944b262cbc0e33ffd179d66","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ]"},{"line_number":180,"context_line":"    }"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"This spec suggests associating the content of `network_data.json`"},{"line_number":183,"context_line":"document with ironic node object by introducing a new `network_data` field"},{"line_number":184,"context_line":"to the node object to contain `network_data.json` information for ironic"},{"line_number":185,"context_line":"ramdisk booting."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_028c7bd6","line":182,"range":{"start_line":182,"start_character":10,"end_line":182,"end_character":18},"in_reply_to":"3fa7e38b_261e7275","updated":"2020-02-04 22:49:56.000000000","message":"yes!","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ]"},{"line_number":180,"context_line":"    }"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"This spec suggests associating the content of `network_data.json`"},{"line_number":183,"context_line":"document with ironic node object by introducing a new `network_data` field"},{"line_number":184,"context_line":"to the node object to contain `network_data.json` information for ironic"},{"line_number":185,"context_line":"ramdisk booting."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_261e7275","line":182,"range":{"start_line":182,"start_character":10,"end_line":182,"end_character":18},"in_reply_to":"3fa7e38b_d77b95f0","updated":"2020-02-04 18:03:21.000000000","message":"Will \u0027anticipates\u0027 be a better word?","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":182,"context_line":"This spec suggests associating the content of `network_data.json`"},{"line_number":183,"context_line":"document with ironic node object by introducing a new `network_data` field"},{"line_number":184,"context_line":"to the node object to contain `network_data.json` information for ironic"},{"line_number":185,"context_line":"ramdisk booting."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"DHCP-less instance booting can already be performed via ironic provision"},{"line_number":188,"context_line":"state API [12]_."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_3760e934","line":185,"updated":"2020-02-03 23:00:20.000000000","message":"It might be worthwhile to note that this was the consensus reached over trying to massage data for different ports together into a consistent schema. It makes this largely a pass-through requiring that the operator properly assemble the information for their environment.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fecf3de7d2a42f7f5944b262cbc0e33ffd179d66","unresolved":false,"context_lines":[{"line_number":182,"context_line":"This spec suggests associating the content of `network_data.json`"},{"line_number":183,"context_line":"document with ironic node object by introducing a new `network_data` field"},{"line_number":184,"context_line":"to the node object to contain `network_data.json` information for ironic"},{"line_number":185,"context_line":"ramdisk booting."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"DHCP-less instance booting can already be performed via ironic provision"},{"line_number":188,"context_line":"state API [12]_."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_2275f7c9","line":185,"in_reply_to":"3fa7e38b_21917c9c","updated":"2020-02-04 22:49:56.000000000","message":"I know, I know. Configuration drives are actually good examples where we didn\u0027t force strict requirements and it is largely a pass-through but there is a documented standard of construction and all. \n\nTruthfully, wouldn\u0027t validation look like:\n1. is there links and networks?\n2. For every network attachment, is there a corresponding link?","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":182,"context_line":"This spec suggests associating the content of `network_data.json`"},{"line_number":183,"context_line":"document with ironic node object by introducing a new `network_data` field"},{"line_number":184,"context_line":"to the node object to contain `network_data.json` information for ironic"},{"line_number":185,"context_line":"ramdisk booting."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"DHCP-less instance booting can already be performed via ironic provision"},{"line_number":188,"context_line":"state API [12]_."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_21917c9c","line":185,"in_reply_to":"3fa7e38b_3760e934","updated":"2020-02-04 18:03:21.000000000","message":"\u003e It might be worthwhile to note that this was the consensus reached over trying to massage data for different ports together into a consistent schema. \n\nAdded too Alternatives.\n\n\u003e  It makes this largely a pass-through requiring that the operator properly assemble the information for their environment.\n\nBy saying pass-through you are fearlessly stepping into a contagious topic!\n\nI personally feel in favor of metadata path-through ironic leaving the operator solely in charge for consistent and correct metadata.\n\nThe alternative thinking is to let ironic to enforce consistent data as much as possible. Of course, it\u0027s impossible to bullet-proof network_data.json, but ironic could at least run schema validation plus some ad-hoc tests. At the expense of being metadata-neutral.\n\nThe mid-ground can be to provide some tooling to the operator to to apply the same partial checks (as ironic would do), but externally i.e. before passing metatada to Ironic.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":184,"context_line":"to the node object to contain `network_data.json` information for ironic"},{"line_number":185,"context_line":"ramdisk booting."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"DHCP-less instance booting can already be performed via ironic provision"},{"line_number":188,"context_line":"state API [12]_."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"On ironic ramdisk side, this spec proposes using Glean [13]_ for consuming"},{"line_number":191,"context_line":"and applying network configuration to the OS running ironic ramdisk. The main"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_974e7dc1","line":188,"range":{"start_line":187,"start_character":0,"end_line":188,"end_character":16},"updated":"2020-02-03 23:00:20.000000000","message":"I\u0027m unsure what this means in this context. If the intent is that no change is required to the state machine, then an explicit statement of such should go there and not be called out mid-document unless absolutely necessary.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fecf3de7d2a42f7f5944b262cbc0e33ffd179d66","unresolved":false,"context_lines":[{"line_number":184,"context_line":"to the node object to contain `network_data.json` information for ironic"},{"line_number":185,"context_line":"ramdisk booting."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"DHCP-less instance booting can already be performed via ironic provision"},{"line_number":188,"context_line":"state API [12]_."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"On ironic ramdisk side, this spec proposes using Glean [13]_ for consuming"},{"line_number":191,"context_line":"and applying network configuration to the OS running ironic ramdisk. The main"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_a237a7fd","line":188,"range":{"start_line":187,"start_character":0,"end_line":188,"end_character":16},"in_reply_to":"3fa7e38b_218e5c33","updated":"2020-02-04 22:49:56.000000000","message":"I\u0027ve been -1 for instance/ramdisk booting to be in-scope. The intent, at least as originally discussed was to facilitate deployment operations. I get we have a difference in opinion here though.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":184,"context_line":"to the node object to contain `network_data.json` information for ironic"},{"line_number":185,"context_line":"ramdisk booting."},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"DHCP-less instance booting can already be performed via ironic provision"},{"line_number":188,"context_line":"state API [12]_."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"On ironic ramdisk side, this spec proposes using Glean [13]_ for consuming"},{"line_number":191,"context_line":"and applying network configuration to the OS running ironic ramdisk. The main"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_218e5c33","line":188,"range":{"start_line":187,"start_character":0,"end_line":188,"end_character":16},"in_reply_to":"3fa7e38b_974e7dc1","updated":"2020-02-04 18:03:21.000000000","message":"Since the beginning of this spec, two boots is being considered - ramdisk and instance. That\u0027s why instance booting pops up here.\n\nMoved to State machine impact.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":190,"context_line":"On ironic ramdisk side, this spec proposes using Glean [13]_ for consuming"},{"line_number":191,"context_line":"and applying network configuration to the OS running ironic ramdisk. The main"},{"line_number":192,"context_line":"consideration here is that, unlike `cloud-init`, `Glean` is lean, and readily"},{"line_number":193,"context_line":"supports a subset of `cloud-init` features."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Alternative ramdisk implementations can choose other ways of bootstrapping"},{"line_number":196,"context_line":"OS networking based on `network_data.json` information."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_7745019b","line":193,"updated":"2020-02-03 23:00:20.000000000","message":"May also be worth noting cloud-init largely expects to always be able to DHCP interfaces, which is not expected in this scenario.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":192,"context_line":"consideration here is that, unlike `cloud-init`, `Glean` is lean, and readily"},{"line_number":193,"context_line":"supports a subset of `cloud-init` features."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Alternative ramdisk implementations can choose other ways of bootstrapping"},{"line_number":196,"context_line":"OS networking based on `network_data.json` information."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"To summarize - in the area of provisioning node network configuration this spec"},{"line_number":199,"context_line":"proposes:"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_97d3ddd4","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":55},"updated":"2020-02-03 23:00:20.000000000","message":"You may want to make this a subsection or just a note object.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fecf3de7d2a42f7f5944b262cbc0e33ffd179d66","unresolved":false,"context_lines":[{"line_number":192,"context_line":"consideration here is that, unlike `cloud-init`, `Glean` is lean, and readily"},{"line_number":193,"context_line":"supports a subset of `cloud-init` features."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Alternative ramdisk implementations can choose other ways of bootstrapping"},{"line_number":196,"context_line":"OS networking based on `network_data.json` information."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"To summarize - in the area of provisioning node network configuration this spec"},{"line_number":199,"context_line":"proposes:"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_2223b7bd","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":55},"in_reply_to":"3fa7e38b_41eef8b6","updated":"2020-02-04 22:49:56.000000000","message":"It seems worthy of a:\n\n .. note:\n\nstyle syntax.\n\nThe summary section, rehashes below, so note syntax seems best, as it reads as an \"aside\", not essential contextual information.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":192,"context_line":"consideration here is that, unlike `cloud-init`, `Glean` is lean, and readily"},{"line_number":193,"context_line":"supports a subset of `cloud-init` features."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Alternative ramdisk implementations can choose other ways of bootstrapping"},{"line_number":196,"context_line":"OS networking based on `network_data.json` information."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"To summarize - in the area of provisioning node network configuration this spec"},{"line_number":199,"context_line":"proposes:"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_41eef8b6","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":55},"in_reply_to":"3fa7e38b_97d3ddd4","updated":"2020-02-04 18:03:21.000000000","message":"I beg your pardon, but I am not sure what do you mean here?","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":202,"context_line":"  via ramdisk and instance images."},{"line_number":203,"context_line":"* Adding a new field to ironic node object: `network_data` to use for ramdisk"},{"line_number":204,"context_line":"  bootstrapping. The contents of this field should be validated against"},{"line_number":205,"context_line":"  `Glean` JSON schema and some ad-hoc checks the implementers deem reasonable."},{"line_number":206,"context_line":"* Creating a new `config-drive` or modifying the passed one to have it"},{"line_number":207,"context_line":"  including `network-data.json` file."},{"line_number":208,"context_line":"* Unpacking the contents of `config-drive` image into the root of the ISO file"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_57dd65dc","line":205,"range":{"start_line":205,"start_character":2,"end_line":205,"end_character":10},"updated":"2020-02-03 23:00:20.000000000","message":"network_data json schema. Glean just tries to parse what the data is...","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":202,"context_line":"  via ramdisk and instance images."},{"line_number":203,"context_line":"* Adding a new field to ironic node object: `network_data` to use for ramdisk"},{"line_number":204,"context_line":"  bootstrapping. The contents of this field should be validated against"},{"line_number":205,"context_line":"  `Glean` JSON schema and some ad-hoc checks the implementers deem reasonable."},{"line_number":206,"context_line":"* Creating a new `config-drive` or modifying the passed one to have it"},{"line_number":207,"context_line":"  including `network-data.json` file."},{"line_number":208,"context_line":"* Unpacking the contents of `config-drive` image into the root of the ISO file"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_e11a84c5","line":205,"range":{"start_line":205,"start_character":2,"end_line":205,"end_character":10},"in_reply_to":"3fa7e38b_57dd65dc","updated":"2020-02-04 18:03:21.000000000","message":"If Glean supports a subset of otherwise valid Nova metadata fields, will we want to disallow unsupported fields to turn down user\u0027s unrealistic desires?","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fecf3de7d2a42f7f5944b262cbc0e33ffd179d66","unresolved":false,"context_lines":[{"line_number":202,"context_line":"  via ramdisk and instance images."},{"line_number":203,"context_line":"* Adding a new field to ironic node object: `network_data` to use for ramdisk"},{"line_number":204,"context_line":"  bootstrapping. The contents of this field should be validated against"},{"line_number":205,"context_line":"  `Glean` JSON schema and some ad-hoc checks the implementers deem reasonable."},{"line_number":206,"context_line":"* Creating a new `config-drive` or modifying the passed one to have it"},{"line_number":207,"context_line":"  including `network-data.json` file."},{"line_number":208,"context_line":"* Unpacking the contents of `config-drive` image into the root of the ISO file"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_bdf82818","line":205,"range":{"start_line":205,"start_character":2,"end_line":205,"end_character":10},"in_reply_to":"3fa7e38b_e11a84c5","updated":"2020-02-04 22:49:56.000000000","message":"The best path forward is for the scenarios to be detailed, otherwise I think this becomes an easy bikeshed topic as we\u0027ve learned. I don\u0027t remember what the extra variations look like, so it makes it hard to even really think about.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":203,"context_line":"* Adding a new field to ironic node object: `network_data` to use for ramdisk"},{"line_number":204,"context_line":"  bootstrapping. The contents of this field should be validated against"},{"line_number":205,"context_line":"  `Glean` JSON schema and some ad-hoc checks the implementers deem reasonable."},{"line_number":206,"context_line":"* Creating a new `config-drive` or modifying the passed one to have it"},{"line_number":207,"context_line":"  including `network-data.json` file."},{"line_number":208,"context_line":"* Unpacking the contents of `config-drive` image into the root of the ISO file"},{"line_number":209,"context_line":"  system (along with ramdisk and kernel blobs), then making a bootable ISO"},{"line_number":210,"context_line":"  image."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_b7f93950","line":207,"range":{"start_line":206,"start_character":2,"end_line":207,"end_character":37},"updated":"2020-02-03 23:00:20.000000000","message":"This feels like it needs to be expanded upon. I think the idea, from discussion like a month ago was that it was reasonable to possibly using a user supplied configuration drive contents. Would the entire contents of a user supplied config-drive always be supplied and embedded into the ramdisk?","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fecf3de7d2a42f7f5944b262cbc0e33ffd179d66","unresolved":false,"context_lines":[{"line_number":203,"context_line":"* Adding a new field to ironic node object: `network_data` to use for ramdisk"},{"line_number":204,"context_line":"  bootstrapping. The contents of this field should be validated against"},{"line_number":205,"context_line":"  `Glean` JSON schema and some ad-hoc checks the implementers deem reasonable."},{"line_number":206,"context_line":"* Creating a new `config-drive` or modifying the passed one to have it"},{"line_number":207,"context_line":"  including `network-data.json` file."},{"line_number":208,"context_line":"* Unpacking the contents of `config-drive` image into the root of the ISO file"},{"line_number":209,"context_line":"  system (along with ramdisk and kernel blobs), then making a bootable ISO"},{"line_number":210,"context_line":"  image."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_9d1e8c5c","line":207,"range":{"start_line":206,"start_character":2,"end_line":207,"end_character":37},"in_reply_to":"3fa7e38b_b6f84d18","updated":"2020-02-04 22:49:56.000000000","message":"\u003e \n \u003e However I am proponent of config-drive grain configuration (as\n \u003e opposed to just network_data.json).\n\nI could have sworn we had consensus that this seemed like a reasonable path.\n\n \u003e \n \u003e My reasoning is that config-drive based workflow would align nicely\n \u003e with instance booting workflow from user\u0027s perspective. Also,\n \u003e accepting the entire config-drive would allow for passing other\n \u003e items into the ramdisk such as TLS certificates/keys.\n\nMakes sense, although I feel like we have to tread carefully to make that an advertised configuration and happy path that may be useful.\n\n \u003e From the discussion upstream I gathered that config-drive idea does\n \u003e not get much support, so I only mention it in Alternatives mostly\n \u003e focusing on `network-data.json` in the spec, as a operator-\u003eramdisk\n \u003e communication channel.\n\nOh, I thought the complete opposite when we discussed it in irc a few weeks back. Regardless, either path seems reasonable to me as long as it is usable to provision a host.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":203,"context_line":"* Adding a new field to ironic node object: `network_data` to use for ramdisk"},{"line_number":204,"context_line":"  bootstrapping. The contents of this field should be validated against"},{"line_number":205,"context_line":"  `Glean` JSON schema and some ad-hoc checks the implementers deem reasonable."},{"line_number":206,"context_line":"* Creating a new `config-drive` or modifying the passed one to have it"},{"line_number":207,"context_line":"  including `network-data.json` file."},{"line_number":208,"context_line":"* Unpacking the contents of `config-drive` image into the root of the ISO file"},{"line_number":209,"context_line":"  system (along with ramdisk and kernel blobs), then making a bootable ISO"},{"line_number":210,"context_line":"  image."}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_b6f84d18","line":207,"range":{"start_line":206,"start_character":2,"end_line":207,"end_character":37},"in_reply_to":"3fa7e38b_b7f93950","updated":"2020-02-04 18:03:21.000000000","message":"Yeah, that was partially remnants of previous spec... Fixed.\n\nThe most current spec proposes taking user-supplied network_data.json and creating config-drive with it inside. If not network_data.json is supplied, no config-drive will be created.\n\nHowever I am proponent of config-drive grain configuration (as opposed to just network_data.json).\n\nMy reasoning is that config-drive based workflow would align nicely with instance booting workflow from user\u0027s perspective. Also, accepting the entire config-drive would allow for passing other items into the ramdisk such as TLS certificates/keys.\n\nFrom the discussion upstream I gathered that config-drive idea does not get much support, so I only mention it in Alternatives mostly focusing on `network-data.json` in the spec, as a operator-\u003eramdisk communication channel.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":211,"context_line":"* Including `Glean` dependency to ramdisk image for managed OS bootstrapping."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"However, ironic rescue operation, at least in its current implementation, will"},{"line_number":214,"context_line":"only work if user and provisioning networks are the same network. That\u0027s"},{"line_number":215,"context_line":"because rescue ramdisk will try to renumber NICs of ramdisk by restarting DHCP"},{"line_number":216,"context_line":"client. We can address this limitation separately in the future."},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_f79c910e","line":214,"range":{"start_line":214,"start_character":66,"end_line":214,"end_character":72},"updated":"2020-02-03 23:00:20.000000000","message":"nit: You may want to remove the contraction and start it on the next line.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":211,"context_line":"* Including `Glean` dependency to ramdisk image for managed OS bootstrapping."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"However, ironic rescue operation, at least in its current implementation, will"},{"line_number":214,"context_line":"only work if user and provisioning networks are the same network. That\u0027s"},{"line_number":215,"context_line":"because rescue ramdisk will try to renumber NICs of ramdisk by restarting DHCP"},{"line_number":216,"context_line":"client. We can address this limitation separately in the future."},{"line_number":217,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_b6212da4","line":214,"range":{"start_line":214,"start_character":66,"end_line":214,"end_character":72},"in_reply_to":"3fa7e38b_f79c910e","updated":"2020-02-04 18:03:21.000000000","message":"Done","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":213,"context_line":"However, ironic rescue operation, at least in its current implementation, will"},{"line_number":214,"context_line":"only work if user and provisioning networks are the same network. That\u0027s"},{"line_number":215,"context_line":"because rescue ramdisk will try to renumber NICs of ramdisk by restarting DHCP"},{"line_number":216,"context_line":"client. We can address this limitation separately in the future."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"Deployment workflow"},{"line_number":219,"context_line":"+++++++++++++++++++"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_37bc696a","line":216,"range":{"start_line":216,"start_character":7,"end_line":216,"end_character":64},"updated":"2020-02-03 23:00:20.000000000","message":"maybe just say it is beyond the scope of this feature, but that does not preclude it being supported in the future.\n\nTruthfully, it feels like it is just not a possible path","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":213,"context_line":"However, ironic rescue operation, at least in its current implementation, will"},{"line_number":214,"context_line":"only work if user and provisioning networks are the same network. That\u0027s"},{"line_number":215,"context_line":"because rescue ramdisk will try to renumber NICs of ramdisk by restarting DHCP"},{"line_number":216,"context_line":"client. We can address this limitation separately in the future."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"Deployment workflow"},{"line_number":219,"context_line":"+++++++++++++++++++"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_f62ec58b","line":216,"range":{"start_line":216,"start_character":7,"end_line":216,"end_character":64},"in_reply_to":"3fa7e38b_37bc696a","updated":"2020-02-04 18:03:21.000000000","message":"Done","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":266,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":267,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":268,"context_line":"   `network-data.json` and applies it."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Ironic within OpenStack"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_17136d6a","line":267,"range":{"start_line":267,"start_character":4,"end_line":267,"end_character":15},"updated":"2020-02-03 23:00:20.000000000","message":"does you mean glean?","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":266,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":267,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":268,"context_line":"   `network-data.json` and applies it."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Ironic within OpenStack"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_f643253f","line":267,"range":{"start_line":267,"start_character":4,"end_line":267,"end_character":15},"in_reply_to":"3fa7e38b_17136d6a","updated":"2020-02-04 18:03:21.000000000","message":"No! Glean fires up at step #4. Here we boot the instance (non-local boot).","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fecf3de7d2a42f7f5944b262cbc0e33ffd179d66","unresolved":false,"context_lines":[{"line_number":264,"context_line":""},{"line_number":265,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":266,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":267,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":268,"context_line":"   `network-data.json` and applies it."},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"Ironic within OpenStack"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_dd496465","line":267,"range":{"start_line":267,"start_character":4,"end_line":267,"end_character":15},"in_reply_to":"3fa7e38b_f643253f","updated":"2020-02-04 22:49:56.000000000","message":"Lets just leave it at \"machine reboots\" instance boots as it normally would with supplied configuration drive information.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7a2b866cca1669dcb3a88d36d22cbe5e864dc60f","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"4. Prior to booting the instance, ironic gathers network configuration for each"},{"line_number":290,"context_line":"   ironic port/portgroup, associated with the node being booted, by talking"},{"line_number":291,"context_line":"   with Neutron. Then ironic builds instance network configuration in form"},{"line_number":292,"context_line":"   of a `network-data.json` file."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"5. Unless `config-drive` is supplied by Nova, ironic builds a new"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_fa06b81b","line":291,"range":{"start_line":291,"start_character":36,"end_line":291,"end_character":46},"updated":"2020-02-03 23:00:20.000000000","message":"s/instance//, otherwise it is confusing with-in the scope of deployment and networking data may differ depending on networking mode.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"956e2e7f19bcc4039c80be0a60b2b178bd53ff36","unresolved":false,"context_lines":[{"line_number":288,"context_line":""},{"line_number":289,"context_line":"4. Prior to booting the instance, ironic gathers network configuration for each"},{"line_number":290,"context_line":"   ironic port/portgroup, associated with the node being booted, by talking"},{"line_number":291,"context_line":"   with Neutron. Then ironic builds instance network configuration in form"},{"line_number":292,"context_line":"   of a `network-data.json` file."},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"5. Unless `config-drive` is supplied by Nova, ironic builds a new"}],"source_content_type":"text/x-rst","patch_set":31,"id":"3fa7e38b_b694cd99","line":291,"range":{"start_line":291,"start_character":36,"end_line":291,"end_character":46},"in_reply_to":"3fa7e38b_fa06b81b","updated":"2020-02-04 18:03:21.000000000","message":"Would it be more confusing if we blur the difference between ramdisk/instance booting? This step is specifically for instance booting, not ramdisk.","commit_id":"6b90564bdc192995dc41d8d49b7954b3645bf950"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"959d926d9c6ca7778d806063b6a1dfce9e88c9d0","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   location within `config-drive` image."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"4. To boot deploy ramdisk, ironic builds bootable ISO out of `deploy_kernel`"},{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_b56eb8fb","line":239,"range":{"start_line":239,"start_character":29,"end_line":239,"end_character":38},"updated":"2020-02-10 09:29:50.000000000","message":"The unpacking seems unclear to me, if the content is unpacked, why Glean needs to mount?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"2e34f20733e46b73aef8bb0f25cc10be8e3cd8a0","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   location within `config-drive` image."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"4. To boot deploy ramdisk, ironic builds bootable ISO out of `deploy_kernel`"},{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_a0289135","line":239,"range":{"start_line":239,"start_character":29,"end_line":239,"end_character":38},"in_reply_to":"3fa7e38b_5bc76b98","updated":"2020-02-12 02:57:25.000000000","message":"Oh, from the text my understanding is that you are copying the content from configdrive iso to the root of the ramdisk ISO.. Hmm, so in the final state, combined with what Julia commented above, I guess we have a configdrive.iso in the ramdisk and fstab correctly setup to mount it into system, not sure I understand it correct :(","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   location within `config-drive` image."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"4. To boot deploy ramdisk, ironic builds bootable ISO out of `deploy_kernel`"},{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_db1230b3","line":239,"range":{"start_line":239,"start_character":29,"end_line":239,"end_character":38},"in_reply_to":"3fa7e38b_60d37937","updated":"2020-02-14 14:40:01.000000000","message":"Modifying fstab would mean building or modifying the root filesystem. That\u0027s too complicated. Luckily, cloud-init and glean just try to mount everything they can reach to see if they can find metadata there.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   location within `config-drive` image."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"4. To boot deploy ramdisk, ironic builds bootable ISO out of `deploy_kernel`"},{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_fbf2d7e3","line":239,"range":{"start_line":239,"start_character":29,"end_line":239,"end_character":38},"in_reply_to":"3fa7e38b_866d9131","updated":"2020-02-11 12:22:16.000000000","message":"For reference [1]:\n\n    Broadly, glean checks for configuration drive based information and, if found, uses that to configure the network. If config-drive is not found, it falls back to configuring any available interfaces with DHCP.\n\n    Specifically, it will mount the special block-device with label config-2 and parse the network_info.json and vendor_info.json files within. If appropriate network configuration is found, it will write out network configuration files.\n\n1. https://docs.openstack.org/infra/glean/","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"2e34f20733e46b73aef8bb0f25cc10be8e3cd8a0","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   location within `config-drive` image."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"4. To boot deploy ramdisk, ironic builds bootable ISO out of `deploy_kernel`"},{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_60d37937","line":239,"range":{"start_line":239,"start_character":29,"end_line":239,"end_character":38},"in_reply_to":"3fa7e38b_866d9131","updated":"2020-02-12 02:57:25.000000000","message":"One other thing I am not clear is who mounts the configdrive then? I can think of fstab, but maybe there is other way.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   location within `config-drive` image."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"4. To boot deploy ramdisk, ironic builds bootable ISO out of `deploy_kernel`"},{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_96032d0b","line":239,"range":{"start_line":239,"start_character":29,"end_line":239,"end_character":38},"in_reply_to":"3fa7e38b_a0289135","updated":"2020-02-14 14:40:01.000000000","message":"So we have bootable ISO with the following files on it:\n\n  /vmlinuz\n  /initrd\n  /openstack/latest/network_data.json","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   location within `config-drive` image."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"4. To boot deploy ramdisk, ironic builds bootable ISO out of `deploy_kernel`"},{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_5bc76b98","line":239,"range":{"start_line":239,"start_character":29,"end_line":239,"end_character":38},"in_reply_to":"3fa7e38b_b56eb8fb","updated":"2020-02-11 12:22:16.000000000","message":"By saying \"unpacking\" I have in mind that config-drive comes to ironic in a gzipped/base64 blob. On the other hand, config-drive can also come as a JSON doc. Either way, ironic needs to write it down to a disk file.\n\nIs there a better better verb? ;)","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1a49926000a637529cbf602617d545d6defe0bea","unresolved":false,"context_lines":[{"line_number":236,"context_line":"   location within `config-drive` image."},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"4. To boot deploy ramdisk, ironic builds bootable ISO out of `deploy_kernel`"},{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_866d9131","line":239,"range":{"start_line":239,"start_character":29,"end_line":239,"end_character":38},"in_reply_to":"3fa7e38b_b56eb8fb","updated":"2020-02-10 14:09:31.000000000","message":"glean looks for a device attached with a filesystem label of \"config-2\". That volume is mounted and the configuration data from it is utilized.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"28e7a200c177d2833ddddba37b20e40421c5fe7d","unresolved":false,"context_lines":[{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"},{"line_number":243,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"5. Operator supplies instance network configuration in form of"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_6788da19","line":242,"range":{"start_line":242,"start_character":45,"end_line":242,"end_character":50},"updated":"2020-02-05 09:42:28.000000000","message":"nit: replace with the","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":239,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":240,"context_line":"   of boot ISO image."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"},{"line_number":243,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"5. Operator supplies instance network configuration in form of"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_dbe35b02","line":242,"range":{"start_line":242,"start_character":45,"end_line":242,"end_character":50},"in_reply_to":"3fa7e38b_6788da19","updated":"2020-02-11 12:22:16.000000000","message":"Done","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"959d926d9c6ca7778d806063b6a1dfce9e88c9d0","unresolved":false,"context_lines":[{"line_number":243,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"5. Operator supplies instance network configuration in form of"},{"line_number":246,"context_line":"   `network-data.json` file in `config-drive` or as a stand-alone file via"},{"line_number":247,"context_line":"   Ironic provision API call."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"6. Unless `config-drive` is already supplied by the operator, ironic builds"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_f5419063","line":246,"range":{"start_line":246,"start_character":4,"end_line":246,"end_character":21},"updated":"2020-02-10 09:29:50.000000000","message":"is this the same data from node.network_data?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":243,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"5. Operator supplies instance network configuration in form of"},{"line_number":246,"context_line":"   `network-data.json` file in `config-drive` or as a stand-alone file via"},{"line_number":247,"context_line":"   Ironic provision API call."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"6. Unless `config-drive` is already supplied by the operator, ironic builds"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_764eb16d","line":246,"range":{"start_line":246,"start_character":4,"end_line":246,"end_character":21},"in_reply_to":"3fa7e38b_a0d731f4","updated":"2020-02-14 14:40:01.000000000","message":"\u003e Well, I get it now. I guess if instance has no configdrive/user\n \u003e provided network config, we will use the node.network_data then.\n\nYes, however the best precedence of network_data.json source (i.e. image/ironic) is up for discussion...","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"2e34f20733e46b73aef8bb0f25cc10be8e3cd8a0","unresolved":false,"context_lines":[{"line_number":243,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"5. Operator supplies instance network configuration in form of"},{"line_number":246,"context_line":"   `network-data.json` file in `config-drive` or as a stand-alone file via"},{"line_number":247,"context_line":"   Ironic provision API call."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"6. Unless `config-drive` is already supplied by the operator, ironic builds"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_a0d731f4","line":246,"range":{"start_line":246,"start_character":4,"end_line":246,"end_character":21},"in_reply_to":"3fa7e38b_dbcd9b5b","updated":"2020-02-12 02:57:25.000000000","message":"Well, I get it now. I guess if instance has no configdrive/user provided network config, we will use the node.network_data then.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":243,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"5. Operator supplies instance network configuration in form of"},{"line_number":246,"context_line":"   `network-data.json` file in `config-drive` or as a stand-alone file via"},{"line_number":247,"context_line":"   Ironic provision API call."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"6. Unless `config-drive` is already supplied by the operator, ironic builds"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_dbcd9b5b","line":246,"range":{"start_line":246,"start_character":4,"end_line":246,"end_character":21},"in_reply_to":"3fa7e38b_f5419063","updated":"2020-02-11 12:22:16.000000000","message":"In case provisioning and tenant networks are different, these files should be different. First goes to node object, second to instance config-drive.\n\nAs mentioned in Alternatives, we can make it more uniform and future-proof by always operating on config-drive. That is, for ramdisk it can be a config-drive as well.\n\nIn fact, I like uniform config-drive approach better than node.network_data for ramdisk and config-drive for instance.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":243,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"5. Operator supplies instance network configuration in form of"},{"line_number":246,"context_line":"   `network-data.json` file in `config-drive` or as a stand-alone file via"},{"line_number":247,"context_line":"   Ironic provision API call."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"6. Unless `config-drive` is already supplied by the operator, ironic builds"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_fba0a1f4","line":246,"range":{"start_line":246,"start_character":4,"end_line":246,"end_character":21},"in_reply_to":"3fa7e38b_f5419063","updated":"2020-02-10 10:47:45.000000000","message":"It can be, it can be not.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":243,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"5. Operator supplies instance network configuration in form of"},{"line_number":246,"context_line":"   `network-data.json` file in `config-drive` or as a stand-alone file via"},{"line_number":247,"context_line":"   Ironic provision API call."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"6. Unless `config-drive` is already supplied by the operator, ironic builds"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_9b05e37b","line":246,"range":{"start_line":246,"start_character":4,"end_line":246,"end_character":21},"in_reply_to":"3fa7e38b_fba0a1f4","updated":"2020-02-11 12:22:16.000000000","message":"Done","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"959d926d9c6ca7778d806063b6a1dfce9e88c9d0","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_20fa8810","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"updated":"2020-02-10 09:29:50.000000000","message":"I am also confused with this, do we perform a virtual media booting for instance? It would be reasonable if only this is a config-drive image then can be mounted by cloud-init as described below.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_3b84f95c","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"in_reply_to":"3fa7e38b_20fa8810","updated":"2020-02-10 10:47:45.000000000","message":"I\u0027m also confused by this. For final instances we already have working configdrive handling (via a separate partition), we don\u0027t need anything else.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_7b258715","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"in_reply_to":"3fa7e38b_20fa8810","updated":"2020-02-11 12:22:16.000000000","message":"Yes, this is the entire workflow i.e. deploy via ramdisk + deployed instance boot.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_3b04ef6b","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"in_reply_to":"3fa7e38b_3b84f95c","updated":"2020-02-11 12:22:16.000000000","message":"Config-drive once written on local HDD is a separate case.\n\nHere instance booting  workflow is targeting non-local boot and diskless boot scenarios.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1a49926000a637529cbf602617d545d6defe0bea","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_e68c853a","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"in_reply_to":"3fa7e38b_3b84f95c","updated":"2020-02-10 14:09:31.000000000","message":"He is referring to the ramdisk instance booting capability which is overlaps into the ramdisk code path. I\u0027d highly prefer we stop mentioning using this feature to boot instances. It adds un-necessary confusion.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_f15aab1c","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"in_reply_to":"3fa7e38b_5f8c2138","updated":"2020-02-14 14:40:01.000000000","message":"Done","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"2e34f20733e46b73aef8bb0f25cc10be8e3cd8a0","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_c0058d7a","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"in_reply_to":"3fa7e38b_5f8c2138","updated":"2020-02-12 02:57:25.000000000","message":"This is very reasonable, otherwise it keeps the spec growing, ends in more discussion and hard to land.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_5f8c2138","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"in_reply_to":"3fa7e38b_7b8fc7d2","updated":"2020-02-11 19:54:46.000000000","message":"I think we need to remove the instance booting workflow from this spec. While that falls under \"making it ramdisk bootable\" it is creeping the scope forth and causing confusion.\n\nI\u0027m trying to express, we should focus on deployment, nothing more for an MVP. If logical ramdisk patches land later, then I\u0027m not going to object, but this is a lot of complexity with minimal initial gain to forever support instance booting via virtual media.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_51605fd0","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"in_reply_to":"3fa7e38b_c0058d7a","updated":"2020-02-14 14:40:01.000000000","message":"Done","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":253,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":254,"context_line":"   location within `config-drive` image."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":257,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_7b8fc7d2","line":258,"range":{"start_line":256,"start_character":3,"end_line":258,"end_character":44},"in_reply_to":"3fa7e38b_e68c853a","updated":"2020-02-11 12:22:16.000000000","message":"Well, except that if we want to support non-local / ramdisk booting, we had to put some code into boot interface implementing that.\n\nWe can remove everything instance-related from this spec and implement the feature without any spec, or we can split instance booting off into a separate spec. Or just remove this feature from both spec and implementation.\n\nThoughts?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":262,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":263,"context_line":"   `network-data.json` and applies it."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_1be49d41","line":263,"range":{"start_line":261,"start_character":63,"end_line":263,"end_character":38},"updated":"2020-02-10 10:47:45.000000000","message":"Mmm, no. Instance configuration works by putting your configdrive to a separate partition. Let us not try changing that, it will only make things more confusing. What we may discuss is (re)building the configdrive to include network_data in it.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":262,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":263,"context_line":"   `network-data.json` and applies it."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_fb1e5773","line":263,"range":{"start_line":261,"start_character":63,"end_line":263,"end_character":38},"in_reply_to":"3fa7e38b_1be49d41","updated":"2020-02-11 12:22:16.000000000","message":"\u003e Instance configuration works by putting your configdrive to a separate partition.\n\nThis is true, but this spec proposes handling non-local/diskless boots along the same line as ramdisk booting.\n\nSo the scenario being discussed applies to non-local/diskless booting.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1a49926000a637529cbf602617d545d6defe0bea","unresolved":false,"context_lines":[{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":262,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":263,"context_line":"   `network-data.json` and applies it."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_668ad51a","line":263,"range":{"start_line":261,"start_character":63,"end_line":263,"end_character":38},"in_reply_to":"3fa7e38b_1be49d41","updated":"2020-02-10 14:09:31.000000000","message":"I\u0027d prefer to remove the entire paragraph to be honest, as I feel we\u0027ve grown the scope here well beyond the original scope and MVP of a feature usable in the field.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":262,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":263,"context_line":"   `network-data.json` and applies it."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_5e1d195f","line":263,"range":{"start_line":261,"start_character":63,"end_line":263,"end_character":38},"in_reply_to":"3fa7e38b_668ad51a","updated":"2020-02-11 12:22:16.000000000","message":"Well, as you say.\n\nWe have this already implemented and, to some extent, tested, but I can remove that code.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":262,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":263,"context_line":"   `network-data.json` and applies it."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_b17f5367","line":263,"range":{"start_line":261,"start_character":63,"end_line":263,"end_character":38},"in_reply_to":"3fa7e38b_7f7a3d27","updated":"2020-02-14 14:40:01.000000000","message":"Done","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":258,"context_line":"   contents into the root of boot ISO image."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":261,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":262,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":263,"context_line":"   `network-data.json` and applies it."},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_7f7a3d27","line":263,"range":{"start_line":261,"start_character":63,"end_line":263,"end_character":38},"in_reply_to":"3fa7e38b_fb1e5773","updated":"2020-02-11 19:54:46.000000000","message":"Yes, but that discussion of trying to lump it all together is causing confusion and ultimately resistance because people just don\u0027t comprehend all of those use cases and behavior by default. A separate, minimal addition makes sense after we have the minimal viable product.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"1. Prior to booting ramdisk, ironic gathers network configuration for each"},{"line_number":269,"context_line":"   ironic port/portgroup, associated with the node being deployed, by talking"},{"line_number":270,"context_line":"   with Neutron. Then ironic builds network configuration for ramdisk in form"},{"line_number":271,"context_line":"   of a `network-data.json` file."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"2. Ironic builds a new `config-drive` image and places `network-data.json`"},{"line_number":274,"context_line":"   file, as build at step (1), at a conventional location within `config-drive`"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_5bdd356c","line":271,"range":{"start_line":268,"start_character":0,"end_line":271,"end_character":33},"updated":"2020-02-10 10:47:45.000000000","message":"Something we have missed previously (sorry!): do we need any sort of a flag to enable this? Or are we going to provide this feature unconditionally from now on? Does it mean that we no longer use Neutron\u0027s DHCP with virtual media?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"1. Prior to booting ramdisk, ironic gathers network configuration for each"},{"line_number":269,"context_line":"   ironic port/portgroup, associated with the node being deployed, by talking"},{"line_number":270,"context_line":"   with Neutron. Then ironic builds network configuration for ramdisk in form"},{"line_number":271,"context_line":"   of a `network-data.json` file."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"2. Ironic builds a new `config-drive` image and places `network-data.json`"},{"line_number":274,"context_line":"   file, as build at step (1), at a conventional location within `config-drive`"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_deb26931","line":271,"range":{"start_line":268,"start_character":0,"end_line":271,"end_character":33},"in_reply_to":"3fa7e38b_06de810e","updated":"2020-02-11 12:22:16.000000000","message":"The edge case I can offer for consideration would be to have some nodes booting off DHCP while some over vmedia both sharing the same provision network. If we base DHCP-less enablement on network metadata, the above mentioned scenario might not work.\n\nSimilarly, can we have the same single network for provisioning and tenants? Effectively, sharing network property for enabling DHCP-less might be cumbersome in such exotic cases...","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"1. Prior to booting ramdisk, ironic gathers network configuration for each"},{"line_number":269,"context_line":"   ironic port/portgroup, associated with the node being deployed, by talking"},{"line_number":270,"context_line":"   with Neutron. Then ironic builds network configuration for ramdisk in form"},{"line_number":271,"context_line":"   of a `network-data.json` file."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"2. Ironic builds a new `config-drive` image and places `network-data.json`"},{"line_number":274,"context_line":"   file, as build at step (1), at a conventional location within `config-drive`"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_fe3ac5c2","line":271,"range":{"start_line":268,"start_character":0,"end_line":271,"end_character":33},"in_reply_to":"3fa7e38b_5bdd356c","updated":"2020-02-11 12:22:16.000000000","message":"\u003e Something we have missed previously (sorry!): do we need any sort of a flag to enable this?\n\nWith current spec/implementation, ironic collects network config unconditionally and offers it to ramdisk/image.\n\n\u003e Or are we going to provide this feature unconditionally from now on? Does it mean that we no longer use Neutron\u0027s DHCP with virtual media?\n\nPerhaps, we do not any DHCP.\n\nMay be we do not need to configure MAC address to ironic port as well.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1a49926000a637529cbf602617d545d6defe0bea","unresolved":false,"context_lines":[{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"1. Prior to booting ramdisk, ironic gathers network configuration for each"},{"line_number":269,"context_line":"   ironic port/portgroup, associated with the node being deployed, by talking"},{"line_number":270,"context_line":"   with Neutron. Then ironic builds network configuration for ramdisk in form"},{"line_number":271,"context_line":"   of a `network-data.json` file."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"2. Ironic builds a new `config-drive` image and places `network-data.json`"},{"line_number":274,"context_line":"   file, as build at step (1), at a conventional location within `config-drive`"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_06de810e","line":271,"range":{"start_line":268,"start_character":0,"end_line":271,"end_character":33},"in_reply_to":"3fa7e38b_5bdd356c","updated":"2020-02-10 14:09:31.000000000","message":"I believe if not supplied and performing a virtual media ramdisk deploy, we can check to see if the network itself has dhcp enabled. We could use that as the indicator as opposed to making the operator declare more. The whole idea here was that neutron really is just an IPAM system, and it knows the operating configuration of each network. If it is entirely based on the provisioning network, then we should do the right thing and we should have remote provisioning network data... Hmm..\n\nTruthfully, I feel like focusing on dual scenarios out of the gate is what is making this painful.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"1. Prior to booting ramdisk, ironic gathers network configuration for each"},{"line_number":269,"context_line":"   ironic port/portgroup, associated with the node being deployed, by talking"},{"line_number":270,"context_line":"   with Neutron. Then ironic builds network configuration for ramdisk in form"},{"line_number":271,"context_line":"   of a `network-data.json` file."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"2. Ironic builds a new `config-drive` image and places `network-data.json`"},{"line_number":274,"context_line":"   file, as build at step (1), at a conventional location within `config-drive`"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_71ea3b0d","line":271,"range":{"start_line":268,"start_character":0,"end_line":271,"end_character":33},"in_reply_to":"3fa7e38b_9fe299d2","updated":"2020-02-14 14:40:01.000000000","message":"Done","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":265,"context_line":"Ironic within OpenStack"},{"line_number":266,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"1. Prior to booting ramdisk, ironic gathers network configuration for each"},{"line_number":269,"context_line":"   ironic port/portgroup, associated with the node being deployed, by talking"},{"line_number":270,"context_line":"   with Neutron. Then ironic builds network configuration for ramdisk in form"},{"line_number":271,"context_line":"   of a `network-data.json` file."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"2. Ironic builds a new `config-drive` image and places `network-data.json`"},{"line_number":274,"context_line":"   file, as build at step (1), at a conventional location within `config-drive`"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_9fe299d2","line":271,"range":{"start_line":268,"start_character":0,"end_line":271,"end_character":33},"in_reply_to":"3fa7e38b_fe3ac5c2","updated":"2020-02-11 19:54:46.000000000","message":"\u003e \u003e Something we have missed previously (sorry!): do we need any sort\n \u003e of a flag to enable this?\n \u003e \n \u003e With current spec/implementation, ironic collects network config\n \u003e unconditionally and offers it to ramdisk/image.\n \u003e \n \u003e \u003e Or are we going to provide this feature unconditionally from now\n \u003e on? Does it mean that we no longer use Neutron\u0027s DHCP with virtual\n \u003e media?\n \u003e \n\nI feel like we need to make the smart decision, and we can\u0027t do that out of the gate. We need to have a minimal piece, and then add the next layer, and I suspect at some point it is going to end up that we will be checking if neutron supports DHCP or not on the network. \n\n\n \u003e Perhaps, we do not any DHCP.\n \u003e \n\nWe have operating cases now where dhcp may not be used. I can forsee neutron being just an IPAM to edge sites, and at which point it doesn\u0027t control DHCP... and DHCP can be disabled in those very same networks at a layer we\u0027re not even aware of inside of neutron.\n\n \u003e May be we do not need to configure MAC address to ironic port as\n \u003e well.\n\nRight now, this is a hard requirement, and to change it would take a period of at least a year of compatibility, and frankly knowing a single MAC of the machine adds an information requirement which DOES help far more than it hinders operators. This forces them to make sure they have the right machine.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"28e7a200c177d2833ddddba37b20e40421c5fe7d","unresolved":false,"context_lines":[{"line_number":278,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":279,"context_line":"   of boot ISO image."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"},{"line_number":282,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"4. Prior to booting the instance, ironic gathers network configuration for each"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_47959e30","line":281,"range":{"start_line":281,"start_character":45,"end_line":281,"end_character":50},"updated":"2020-02-05 09:42:28.000000000","message":"nit: replace with the","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":278,"context_line":"   and `deploy_ramdisk` also unpacking `config-drive` contents into the root"},{"line_number":279,"context_line":"   of boot ISO image."},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"   `Glean` running inside ramdisk will mount mount virtual CD drive, read"},{"line_number":282,"context_line":"   `network_data.json` and apply network configuration to the OS."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"4. Prior to booting the instance, ironic gathers network configuration for each"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_3e37fdb0","line":281,"range":{"start_line":281,"start_character":45,"end_line":281,"end_character":50},"in_reply_to":"3fa7e38b_47959e30","updated":"2020-02-11 12:22:16.000000000","message":"Done","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":286,"context_line":"   with Neutron. Then ironic builds instance network configuration in form"},{"line_number":287,"context_line":"   of a `network-data.json` file."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"5. Unless `config-drive` is supplied by Nova, ironic builds a new"},{"line_number":290,"context_line":"   `config-drive` image. Otherwise ironic unpacks and uses Nova-supplied"},{"line_number":291,"context_line":"   `config-drive`."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"   Either way, ironic places generated `network-data.json` file at a"},{"line_number":294,"context_line":"   conventional location within `config-drive` image."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"6. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":297,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":298,"context_line":"   contents into the root of boot ISO image."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":301,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":302,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":303,"context_line":"   `network-data.json` and applies it."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Alternatives"},{"line_number":306,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_dbc28588","line":303,"range":{"start_line":289,"start_character":0,"end_line":303,"end_character":38},"updated":"2020-02-10 10:47:45.000000000","message":"Same as before, #6 should just be removed, this functionality already exists. As to #5, it\u0027s an interesting idea, but it has a global impact going beyond only virtual media. Are we ready to start updating/replacing network_data on existing configdrives? Do we report conflicts with any existing data?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":286,"context_line":"   with Neutron. Then ironic builds instance network configuration in form"},{"line_number":287,"context_line":"   of a `network-data.json` file."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"5. Unless `config-drive` is supplied by Nova, ironic builds a new"},{"line_number":290,"context_line":"   `config-drive` image. Otherwise ironic unpacks and uses Nova-supplied"},{"line_number":291,"context_line":"   `config-drive`."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"   Either way, ironic places generated `network-data.json` file at a"},{"line_number":294,"context_line":"   conventional location within `config-drive` image."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"6. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":297,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":298,"context_line":"   contents into the root of boot ISO image."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":301,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":302,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":303,"context_line":"   `network-data.json` and applies it."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Alternatives"},{"line_number":306,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_7f047d6c","line":303,"range":{"start_line":289,"start_character":0,"end_line":303,"end_character":38},"in_reply_to":"3fa7e38b_1edec13b","updated":"2020-02-11 19:54:46.000000000","message":"Base functionality existing doesn\u0027t mean we automatically try and increase scope because of it.\n\nWe simply should not be in the business of trying to manage the machine\u0027s virtual media and configuration passing in any generally supported case outside deployment unless there is a really compelling argument. Again going to my first sentence of this comment.\n\nTo be explicitly clear, \"ramdisk\" functionality has largely been to support the scientific computing community as they run many environments without physical locally attached storage. Continuing that for networking management when tools like cloud-init re-parse configuration drives only if the instance-id change. Hopefully this explains why Dmitry and Myself are pushing for this to be focused on \"deployment\" where an image is written to the disk, and not the actual booting of the instance after that point much less the configuration for that instance.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":286,"context_line":"   with Neutron. Then ironic builds instance network configuration in form"},{"line_number":287,"context_line":"   of a `network-data.json` file."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"5. Unless `config-drive` is supplied by Nova, ironic builds a new"},{"line_number":290,"context_line":"   `config-drive` image. Otherwise ironic unpacks and uses Nova-supplied"},{"line_number":291,"context_line":"   `config-drive`."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"   Either way, ironic places generated `network-data.json` file at a"},{"line_number":294,"context_line":"   conventional location within `config-drive` image."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"6. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":297,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":298,"context_line":"   contents into the root of boot ISO image."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":301,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":302,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":303,"context_line":"   `network-data.json` and applies it."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Alternatives"},{"line_number":306,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_51effff8","line":303,"range":{"start_line":289,"start_character":0,"end_line":303,"end_character":38},"in_reply_to":"3fa7e38b_7f047d6c","updated":"2020-02-14 14:40:01.000000000","message":"Besides \"ramdisk\" functionality, what I had in mind is the scenario when ironic net-boots the instance with a config-drive partition on the local drive. The configuration buried there can\u0027t be changed without re-deployment. So I am trying to point out, that putting config-drive on boot ISO seemingly solves this.\n\nAnyway, I stripped everything instance-related from the spec.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":286,"context_line":"   with Neutron. Then ironic builds instance network configuration in form"},{"line_number":287,"context_line":"   of a `network-data.json` file."},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"5. Unless `config-drive` is supplied by Nova, ironic builds a new"},{"line_number":290,"context_line":"   `config-drive` image. Otherwise ironic unpacks and uses Nova-supplied"},{"line_number":291,"context_line":"   `config-drive`."},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"   Either way, ironic places generated `network-data.json` file at a"},{"line_number":294,"context_line":"   conventional location within `config-drive` image."},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"6. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":297,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":298,"context_line":"   contents into the root of boot ISO image."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":301,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":302,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":303,"context_line":"   `network-data.json` and applies it."},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"Alternatives"},{"line_number":306,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_1edec13b","line":303,"range":{"start_line":289,"start_character":0,"end_line":303,"end_character":38},"in_reply_to":"3fa7e38b_dbc28588","updated":"2020-02-11 12:22:16.000000000","message":"We have the functionality to distribute instance config via local drive partition (which is truly static), however here we have the ability to change deployed node network configuration by rebooting.\n\nThe #5 feature is thought to be limited to redfish-virtual-media boot interface only. Perhaps not overriding existing network_data.json in the config-drive would be a safer strategy.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"c245f17c63b28d8ae4da78d8c81a69799e1c16f3","unresolved":false,"context_lines":[{"line_number":306,"context_line":"------------"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"Alternatively to associating the entire and consistent `network_data.json`"},{"line_number":309,"context_line":"JSON document with ironic node object, `network_data.json` can be"},{"line_number":310,"context_line":"tied to ironic port object. However, experimental implementation revealed"},{"line_number":311,"context_line":"certain difficulties stemming from port-centric design, so consensus"},{"line_number":312,"context_line":"has been reached to bind `network_data.json` to ironic node object."},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_67945a99","line":310,"range":{"start_line":309,"start_character":38,"end_line":310,"end_character":26},"updated":"2020-02-05 09:16:28.000000000","message":"I think in this case we\u0027d need to add fields to the port object for ip address, netmask, routes info etc. And build out network_data.json file based on that. Populating that based on neutron port data or a full network_data.json seems doable.\n\nI did\u0027nt read all previous comments, but I assume operators expressed they are happy with building the network_data.json, they don\u0027t want an Ironic interface? (To me, ``openstack baremetal port set --ipaddress addr/prefix --route net/prefix,nexthop --mtu ****`` seems appealing.)","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8b251c8fa8fce2c2193f149525a3d2327e42df4d","unresolved":false,"context_lines":[{"line_number":306,"context_line":"------------"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"Alternatively to associating the entire and consistent `network_data.json`"},{"line_number":309,"context_line":"JSON document with ironic node object, `network_data.json` can be"},{"line_number":310,"context_line":"tied to ironic port object. However, experimental implementation revealed"},{"line_number":311,"context_line":"certain difficulties stemming from port-centric design, so consensus"},{"line_number":312,"context_line":"has been reached to bind `network_data.json` to ironic node object."},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_976ba0ec","line":310,"range":{"start_line":309,"start_character":38,"end_line":310,"end_character":26},"in_reply_to":"3fa7e38b_67945a99","updated":"2020-02-06 23:23:20.000000000","message":"There are a few issues with port level, including consolidating all of it, and then also working through it. That being said, I feel like a logical client enhancement could be \"openstack baremetal node generate-network-json --save-to-node --option value --option2 value2 port_uuid node_uuid\" to provide an interface, and if someone needs to do more complex things.... we can\u0027t support everything.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":306,"context_line":"------------"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"Alternatively to associating the entire and consistent `network_data.json`"},{"line_number":309,"context_line":"JSON document with ironic node object, `network_data.json` can be"},{"line_number":310,"context_line":"tied to ironic port object. However, experimental implementation revealed"},{"line_number":311,"context_line":"certain difficulties stemming from port-centric design, so consensus"},{"line_number":312,"context_line":"has been reached to bind `network_data.json` to ironic node object."},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_ee076c1d","line":310,"range":{"start_line":309,"start_character":38,"end_line":310,"end_character":26},"in_reply_to":"3fa7e38b_976ba0ec","updated":"2020-02-11 12:22:16.000000000","message":"\u003e but I assume operators expressed they are happy with building the network_data.json, they don\u0027t want an Ironic interface? \n\nThis approach feels quite limiting to me. We will have to implement and maintain all the network stack related fields in ironic. Basically, we will have to follow network_data.json data structures by code in ironic...\n\nOn top of that, I still can imagine the operator to desire passing something that we do not explicitly convey. In that light it appears as more flexible if we (as ironic)  won\u0027t get too much involved with operator-\u003eramdisk information transfer. Ideally (in my opinion), we\u0027d just pass the entire config-drive.\n\n\u003e openstack baremetal node generate-network-json\n\nI\u0027d better push that to nova or neutron as the primary data source. Why would we have ironic as an intermediate?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":306,"context_line":"------------"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"Alternatively to associating the entire and consistent `network_data.json`"},{"line_number":309,"context_line":"JSON document with ironic node object, `network_data.json` can be"},{"line_number":310,"context_line":"tied to ironic port object. However, experimental implementation revealed"},{"line_number":311,"context_line":"certain difficulties stemming from port-centric design, so consensus"},{"line_number":312,"context_line":"has been reached to bind `network_data.json` to ironic node object."},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_110e67d7","line":310,"range":{"start_line":309,"start_character":38,"end_line":310,"end_character":26},"in_reply_to":"3fa7e38b_b170e9a8","updated":"2020-02-14 14:40:01.000000000","message":"That looks quite operator-friendly.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":306,"context_line":"------------"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"Alternatively to associating the entire and consistent `network_data.json`"},{"line_number":309,"context_line":"JSON document with ironic node object, `network_data.json` can be"},{"line_number":310,"context_line":"tied to ironic port object. However, experimental implementation revealed"},{"line_number":311,"context_line":"certain difficulties stemming from port-centric design, so consensus"},{"line_number":312,"context_line":"has been reached to bind `network_data.json` to ironic node object."},{"line_number":313,"context_line":""}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_b170e9a8","line":310,"range":{"start_line":309,"start_character":38,"end_line":310,"end_character":26},"in_reply_to":"3fa7e38b_ee076c1d","updated":"2020-02-11 19:54:46.000000000","message":"\u003e \u003e openstack baremetal node generate-network-json\n \u003e \n \u003e I\u0027d better push that to nova or neutron as the primary data source.\n \u003e Why would we have ironic as an intermediate?\n\nI was actually kind of suggesting that WE could make a osc command that helps generate from existing state the json document from neutron records. It is a valid alternative middleground to both help operators and even give them an example of \"what it might be\" if they were to craft the data","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"c245f17c63b28d8ae4da78d8c81a69799e1c16f3","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_a72ed28a","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"updated":"2020-02-05 09:16:28.000000000","message":"+1 on starting with cloud-init.\n\nos-net-config support may be interesting as it\u0027s support for more advanced network config bridges, bonds, sr-iov. But there is also nm-state and other tools being developed that may be more relevant in the future. Can we ensure there is an opening to add another format in the future if there is demand?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1a49926000a637529cbf602617d545d6defe0bea","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_e6c8054e","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"in_reply_to":"3fa7e38b_1b5b3df9","updated":"2020-02-10 14:09:31.000000000","message":"We\u0027re in non-cloudy land here, so anything not cloud-init is likely best for the far edge cases. :\\","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_a9116efb","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"in_reply_to":"3fa7e38b_1b5b3df9","updated":"2020-02-11 12:22:16.000000000","message":"What would be the benefit of supporting only a subset of configuration settings that Glean supports? If the operator wants, for example, sr-iov... Assuming that Glean does not understand that, how it can serve as an abstraction layer?\n\nMay be I just misunderstood your comment?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_b1b753f8","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"in_reply_to":"3fa7e38b_3facc534","updated":"2020-02-14 14:40:01.000000000","message":"Indeed... On the other hand, the other extreme (i.e. design for MVP) could not turn out to be overly fruitful in the long run.\n\nI\u0027ve hopefully shrunk this spec to bare deploy by now.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_c9b2aa31","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"in_reply_to":"3fa7e38b_a72ed28a","updated":"2020-02-11 12:22:16.000000000","message":"\u003e Can we ensure there is an opening to add another format in the future if there is demand?\n\nIn my opinion, we should have this opening planned ahead i.e. in the design. That\u0027s why I am very hesitant building network_data.json validation into ironic, and that\u0027s why I think that passing the config-drive Trojan house would be a future-proof decision.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8b251c8fa8fce2c2193f149525a3d2327e42df4d","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_f7453473","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"in_reply_to":"3fa7e38b_a72ed28a","updated":"2020-02-06 23:23:20.000000000","message":"If the tool can grok the json, I think it is fine. Altough if your meaning entirely different format, I think that will need to be approached at that time.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_3facc534","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"in_reply_to":"3fa7e38b_c9b2aa31","updated":"2020-02-11 19:54:46.000000000","message":"The hardest lesson I\u0027ve had to learn in Ironic with spec documents is that sometimes planning ahead, sometimes revealing everything I was thinking, would sometimes spoil my ability to reach that point because not everyone is on the same page even at the best of times. We can\u0027t future proof everything, we can\u0027t make things infinitely extensible from the offset.. and there are some boundaries that we as a project want to maintain because it an expanding scope.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_a9940e43","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"in_reply_to":"3fa7e38b_e6c8054e","updated":"2020-02-11 12:22:16.000000000","message":"+1.\n\nI still hold this unpopular view that:\n\n1. OS bootstrapping is not so much tied to IPA and ironic workflow\n2. ironic\u003c-\u003eIPA API is official meaning that we should not assume that our implementation is the only possible one\n\nBased on that, I\u0027d better isolate everything related to OS bootstrapping from ironic/IPA including the choice of bootstrapping harness.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_c9606aa1","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"in_reply_to":"3fa7e38b_f7453473","updated":"2020-02-11 12:22:16.000000000","message":"\u003e If the tool can grok the json\n\nUnless we abandon the idea of ironic-based validation of network_data.json, it\u0027s probably more than just ramdisk-side tool...\n\nSay, we will want to support os-config in addition to glean. So we will have to teach ironic to validate either of these JSONs, inject them in their canonical location, update docs and probably something else.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":319,"context_line":"Alternatively to relying on Nova metadata and `Glean` as its consumer in"},{"line_number":320,"context_line":"ramdisk, we could leverage `os-net-config`\u0027s feature of taking its compressed"},{"line_number":321,"context_line":"configuration from kernel parameters. On the flip side, the size of kernel"},{"line_number":322,"context_line":"cmdline is severely limited (256+ bytes). Also, `os-net-config` feels like"},{"line_number":323,"context_line":"a TripleO-specific tool in comparison with `cloud-init`, which, besides"},{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_1b5b3df9","line":325,"range":{"start_line":322,"start_character":42,"end_line":325,"end_character":41},"in_reply_to":"3fa7e38b_f7453473","updated":"2020-02-10 10:47:45.000000000","message":"The network_data format doesn\u0027t support much, so using an entirely different backend is not impossible. One could argue, however, that the abstraction layer for that should be Glean.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"c245f17c63b28d8ae4da78d8c81a69799e1c16f3","unresolved":false,"context_lines":[{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"},{"line_number":329,"context_line":"`config-drive`. That would make it looking similar to instance booting (e.g."},{"line_number":330,"context_line":"Ironic provision state API) and would allow for passing more files to ramdisk"},{"line_number":331,"context_line":"in the future."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"Alternatively to wiring `Glean` schema validation into Ironic conductor,"},{"line_number":334,"context_line":"operator can be asked to validate their `network_data.json` data with some"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_27ec2227","line":331,"range":{"start_line":327,"start_character":0,"end_line":331,"end_character":14},"updated":"2020-02-05 09:16:28.000000000","message":"Can we support both? Giving super user operators super powers.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"},{"line_number":329,"context_line":"`config-drive`. That would make it looking similar to instance booting (e.g."},{"line_number":330,"context_line":"Ironic provision state API) and would allow for passing more files to ramdisk"},{"line_number":331,"context_line":"in the future."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"Alternatively to wiring `Glean` schema validation into Ironic conductor,"},{"line_number":334,"context_line":"operator can be asked to validate their `network_data.json` data with some"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_49cc7a32","line":331,"range":{"start_line":327,"start_character":0,"end_line":331,"end_character":14},"in_reply_to":"3fa7e38b_27ec2227","updated":"2020-02-11 12:22:16.000000000","message":"\u003e Can we support both?\n\nWhy would it make sense? config-drive seems functionally superior to network_data.json...","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8b251c8fa8fce2c2193f149525a3d2327e42df4d","unresolved":false,"context_lines":[{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"},{"line_number":329,"context_line":"`config-drive`. That would make it looking similar to instance booting (e.g."},{"line_number":330,"context_line":"Ironic provision state API) and would allow for passing more files to ramdisk"},{"line_number":331,"context_line":"in the future."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"Alternatively to wiring `Glean` schema validation into Ironic conductor,"},{"line_number":334,"context_line":"operator can be asked to validate their `network_data.json` data with some"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_b73fbcdd","line":331,"range":{"start_line":327,"start_character":0,"end_line":331,"end_character":14},"in_reply_to":"3fa7e38b_27ec2227","updated":"2020-02-06 23:23:20.000000000","message":"maybe... only on the same network ;)  Unless someone wants to work on ansible network_interface.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"},{"line_number":329,"context_line":"`config-drive`. That would make it looking similar to instance booting (e.g."},{"line_number":330,"context_line":"Ironic provision state API) and would allow for passing more files to ramdisk"},{"line_number":331,"context_line":"in the future."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"Alternatively to wiring `Glean` schema validation into Ironic conductor,"},{"line_number":334,"context_line":"operator can be asked to validate their `network_data.json` data with some"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_e907661d","line":331,"range":{"start_line":327,"start_character":0,"end_line":331,"end_character":14},"in_reply_to":"3fa7e38b_b73fbcdd","updated":"2020-02-11 12:22:16.000000000","message":"\u003e maybe... only on the same network\n\nThe idea is to have an additional option to pass a config-drive just for ramdisk. So in the end we will have two config-drives: one for ramdisk and the other for instance.\n\nI am noting this here assuming that your concern is that we can\u0027t have two different network configurations for ramdisk and instance.\n\nBut may be I misunderstood your comment?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"},{"line_number":329,"context_line":"`config-drive`. That would make it looking similar to instance booting (e.g."},{"line_number":330,"context_line":"Ironic provision state API) and would allow for passing more files to ramdisk"},{"line_number":331,"context_line":"in the future."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"Alternatively to wiring `Glean` schema validation into Ironic conductor,"},{"line_number":334,"context_line":"operator can be asked to validate their `network_data.json` data with some"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_fb5501c2","line":331,"range":{"start_line":327,"start_character":0,"end_line":331,"end_character":14},"in_reply_to":"3fa7e38b_b73fbcdd","updated":"2020-02-10 10:47:45.000000000","message":"I\u0027d limit the scope for now. We don\u0027t yet have a use case for passing arbitrary stuff to IPA (and we explicitly disable cloud-init in our builds).","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"},{"line_number":329,"context_line":"`config-drive`. That would make it looking similar to instance booting (e.g."},{"line_number":330,"context_line":"Ironic provision state API) and would allow for passing more files to ramdisk"},{"line_number":331,"context_line":"in the future."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"Alternatively to wiring `Glean` schema validation into Ironic conductor,"},{"line_number":334,"context_line":"operator can be asked to validate their `network_data.json` data with some"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_ff4f0d8a","line":331,"range":{"start_line":327,"start_character":0,"end_line":331,"end_character":14},"in_reply_to":"3fa7e38b_e907661d","updated":"2020-02-11 19:54:46.000000000","message":"I just want us to work out a single path to start. A single way. Numerous ways just increase the complexity, cost to develop and cost to test. The edge scenario basically remains the same. I have a server in a far edge cabinet that has no dhcp, I need to tell it the network configuration in order for the ramdisk to boot, call home, and perform the deployment.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1a49926000a637529cbf602617d545d6defe0bea","unresolved":false,"context_lines":[{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"},{"line_number":329,"context_line":"`config-drive`. That would make it looking similar to instance booting (e.g."},{"line_number":330,"context_line":"Ironic provision state API) and would allow for passing more files to ramdisk"},{"line_number":331,"context_line":"in the future."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"Alternatively to wiring `Glean` schema validation into Ironic conductor,"},{"line_number":334,"context_line":"operator can be asked to validate their `network_data.json` data with some"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_66065588","line":331,"range":{"start_line":327,"start_character":0,"end_line":331,"end_character":14},"in_reply_to":"3fa7e38b_fb5501c2","updated":"2020-02-10 14:09:31.000000000","message":"++","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"},{"line_number":329,"context_line":"`config-drive`. That would make it looking similar to instance booting (e.g."},{"line_number":330,"context_line":"Ironic provision state API) and would allow for passing more files to ramdisk"},{"line_number":331,"context_line":"in the future."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"Alternatively to wiring `Glean` schema validation into Ironic conductor,"},{"line_number":334,"context_line":"operator can be asked to validate their `network_data.json` data with some"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_c40e0fd7","line":331,"range":{"start_line":327,"start_character":0,"end_line":331,"end_character":14},"in_reply_to":"3fa7e38b_fb5501c2","updated":"2020-02-11 12:22:16.000000000","message":"I think we are contemplating the design at this time. If we chose one that only just takes us to MVP (i.e. passing  Glean config), implementing second design in the future (e.g. config-drive approach) can be cause messiness...","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":324,"context_line":"being a mainstream way of bootstrapping instances in the cloud, understands"},{"line_number":325,"context_line":"OpenStack network configuration metadata."},{"line_number":326,"context_line":""},{"line_number":327,"context_line":"Alternatively to having operator supplying ramdisk network configuration"},{"line_number":328,"context_line":"as a `network_data.json` file, Ironic can also accept the entire"},{"line_number":329,"context_line":"`config-drive`. That would make it looking similar to instance booting (e.g."},{"line_number":330,"context_line":"Ironic provision state API) and would allow for passing more files to ramdisk"},{"line_number":331,"context_line":"in the future."},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"Alternatively to wiring `Glean` schema validation into Ironic conductor,"},{"line_number":334,"context_line":"operator can be asked to validate their `network_data.json` data with some"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_3190434f","line":331,"range":{"start_line":327,"start_character":0,"end_line":331,"end_character":14},"in_reply_to":"3fa7e38b_ff4f0d8a","updated":"2020-02-14 14:40:01.000000000","message":"Alright, it\u0027s just network_data.json for ramdisk validated by ironic API against Glean schema and whatever smart ad-hoc checks we will come up with.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"* Update ``openstack baremetal node create`` and"},{"line_number":375,"context_line":"  ``openstack baremetal node set`` commands to accept new argument"},{"line_number":376,"context_line":"  ``--dnetwork-config \u003cJSON\u003e`` with help text describing JSON structure"},{"line_number":377,"context_line":"  of the network configuration."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"* Extend the output of the ``openstack baremetal node show``"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_5b6455b4","line":376,"range":{"start_line":376,"start_character":5,"end_line":376,"end_character":7},"updated":"2020-02-10 10:47:45.000000000","message":"nit: redundant \"d\" after --","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"* Update ``openstack baremetal node create`` and"},{"line_number":375,"context_line":"  ``openstack baremetal node set`` commands to accept new argument"},{"line_number":376,"context_line":"  ``--dnetwork-config \u003cJSON\u003e`` with help text describing JSON structure"},{"line_number":377,"context_line":"  of the network configuration."},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"* Extend the output of the ``openstack baremetal node show``"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_5e3c3990","line":376,"range":{"start_line":376,"start_character":5,"end_line":376,"end_character":7},"in_reply_to":"3fa7e38b_5b6455b4","updated":"2020-02-11 12:22:16.000000000","message":"Done","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":390,"context_line":"* Extend ironic base NetworkInterface with `get_node_network_config` API"},{"line_number":391,"context_line":"  call providing network configuration for the node being managed. Ironic will"},{"line_number":392,"context_line":"  burn the output of this API call to the boot image served over virtual media."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"* Implement `get_node_network_config` network interface call for non-Neutron"},{"line_number":395,"context_line":"  networks providing `network_data.json` from `network_data` field of ironic"},{"line_number":396,"context_line":"  object (if present). The operator could then implement their own IPAM (e.g."}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_7b0fd1d3","line":393,"updated":"2020-02-10 10:47:45.000000000","message":"nit: we probably need to error out if a neutron interface is used with non-empty node.network_data.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":390,"context_line":"* Extend ironic base NetworkInterface with `get_node_network_config` API"},{"line_number":391,"context_line":"  call providing network configuration for the node being managed. Ironic will"},{"line_number":392,"context_line":"  burn the output of this API call to the boot image served over virtual media."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"* Implement `get_node_network_config` network interface call for non-Neutron"},{"line_number":395,"context_line":"  networks providing `network_data.json` from `network_data` field of ironic"},{"line_number":396,"context_line":"  object (if present). The operator could then implement their own IPAM (e.g."}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_91ac9787","line":393,"in_reply_to":"3fa7e38b_3f1fe571","updated":"2020-02-14 14:40:01.000000000","message":"I added a note on this to \u0027Ironic within OpenStack\u0027 section.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":390,"context_line":"* Extend ironic base NetworkInterface with `get_node_network_config` API"},{"line_number":391,"context_line":"  call providing network configuration for the node being managed. Ironic will"},{"line_number":392,"context_line":"  burn the output of this API call to the boot image served over virtual media."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"* Implement `get_node_network_config` network interface call for non-Neutron"},{"line_number":395,"context_line":"  networks providing `network_data.json` from `network_data` field of ironic"},{"line_number":396,"context_line":"  object (if present). The operator could then implement their own IPAM (e.g."}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_fe6de599","line":393,"in_reply_to":"3fa7e38b_46747904","updated":"2020-02-11 12:22:16.000000000","message":"May be operator-supplied network_data.json should take precedence?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"1a49926000a637529cbf602617d545d6defe0bea","unresolved":false,"context_lines":[{"line_number":390,"context_line":"* Extend ironic base NetworkInterface with `get_node_network_config` API"},{"line_number":391,"context_line":"  call providing network configuration for the node being managed. Ironic will"},{"line_number":392,"context_line":"  burn the output of this API call to the boot image served over virtual media."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"* Implement `get_node_network_config` network interface call for non-Neutron"},{"line_number":395,"context_line":"  networks providing `network_data.json` from `network_data` field of ironic"},{"line_number":396,"context_line":"  object (if present). The operator could then implement their own IPAM (e.g."}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_46747904","line":393,"in_reply_to":"3fa7e38b_7b0fd1d3","updated":"2020-02-10 14:09:31.000000000","message":"Not really sure if we should raise an error in that case, but it raises an interesting question that should arise in review.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":390,"context_line":"* Extend ironic base NetworkInterface with `get_node_network_config` API"},{"line_number":391,"context_line":"  call providing network configuration for the node being managed. Ironic will"},{"line_number":392,"context_line":"  burn the output of this API call to the boot image served over virtual media."},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"* Implement `get_node_network_config` network interface call for non-Neutron"},{"line_number":395,"context_line":"  networks providing `network_data.json` from `network_data` field of ironic"},{"line_number":396,"context_line":"  object (if present). The operator could then implement their own IPAM (e.g."}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_3f1fe571","line":393,"in_reply_to":"3fa7e38b_fe6de599","updated":"2020-02-11 19:54:46.000000000","message":"That could make sense to do that. and if the networking is not configured for neutron then we just raise an exception.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a6a8b3441db37068b7a034cdeca8004fa3f8a3a3","unresolved":false,"context_lines":[{"line_number":417,"context_line":"Ramdisk impact"},{"line_number":418,"context_line":"--------------"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"* Diskimage-builder tool should install `Glean` into ramdisk and invoke"},{"line_number":421,"context_line":"  on boot."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_fbd8a151","line":420,"range":{"start_line":420,"start_character":2,"end_line":420,"end_character":24},"updated":"2020-02-10 10:47:45.000000000","message":"This is partly on us (IPA-builder). What we need to figure out in DIB is how to interact with the dhcp-all-interfaces element that we currently require. Could you do a small research on it?","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":417,"context_line":"Ramdisk impact"},{"line_number":418,"context_line":"--------------"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"* Diskimage-builder tool should install `Glean` into ramdisk and invoke"},{"line_number":421,"context_line":"  on boot."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_ff24edc5","line":420,"range":{"start_line":420,"start_character":2,"end_line":420,"end_character":24},"in_reply_to":"3fa7e38b_ea751598","updated":"2020-02-11 19:54:46.000000000","message":"I think if we just state that this is a risk and an item that needs to be sorted, that is fine. We know the general idea that there will be something.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"c394afc9dd49bc1269fe8f69d84efbfac77b9010","unresolved":false,"context_lines":[{"line_number":417,"context_line":"Ramdisk impact"},{"line_number":418,"context_line":"--------------"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"* Diskimage-builder tool should install `Glean` into ramdisk and invoke"},{"line_number":421,"context_line":"  on boot."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_ea751598","line":420,"range":{"start_line":420,"start_character":2,"end_line":420,"end_character":24},"in_reply_to":"3fa7e38b_fbd8a151","updated":"2020-02-11 12:22:16.000000000","message":"I will look into that and report back separately.","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"e3fc66c6739e0d207285a695ce1d19943587a980","unresolved":false,"context_lines":[{"line_number":417,"context_line":"Ramdisk impact"},{"line_number":418,"context_line":"--------------"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"* Diskimage-builder tool should install `Glean` into ramdisk and invoke"},{"line_number":421,"context_line":"  on boot."},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":33,"id":"3fa7e38b_f1f4eb57","line":420,"range":{"start_line":420,"start_character":2,"end_line":420,"end_character":24},"in_reply_to":"3fa7e38b_ff24edc5","updated":"2020-02-14 14:40:01.000000000","message":"I\u0027ve already taken a quick look! It seem we can ditch that DIB element handing its functionality over to Glean - it seems to run DHCP by default on all not explicitly configured interfaces.\n\n1. https://opendev.org/opendev/glean/src/branch/master/glean/cmd.py#L323","commit_id":"bf4c618b96e3fd41e663161e00875649a639d63b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":254,"context_line":"   Either way, ironic places `network-data.json` file at a conventional"},{"line_number":255,"context_line":"   location within `config-drive` image."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"7. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":258,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":259,"context_line":"   contents into the root of boot ISO image."},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":262,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":263,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":264,"context_line":"   `network-data.json` and applies it."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"Ironic within OpenStack"},{"line_number":267,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":34,"id":"3fa7e38b_911dad62","line":264,"range":{"start_line":257,"start_character":1,"end_line":264,"end_character":38},"updated":"2020-02-11 19:54:46.000000000","message":"This is the running instance, and is outside the scope of deployment. The text should be removed and the idea possibly furthered in an RFE.\n\nThe instance _should_ have all of the data that is required to boot it. Ironic rebuilding the configuration drive and injecting new contents ultimately provides value to only operating systems that grok configuration drives and read the network-data.json document. The instance may be something like RHCOS with user-data is actually an ignition document and our network-data.json is ignored. Or even some special purpose OS that still has no comprehension of network booting. Or maybe there is local DHCP/SLAAC, but that is not the way to find the provisioning infrastructure.\n\nRegardless, should trim the text down, focus the scope so we can reach a point where we can move forward.","commit_id":"f580d7c8a62f106e800830c8fdd7b25f9b59fd42"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"68c3256bdbd1046d203eb050de91bb869a2b564b","unresolved":false,"context_lines":[{"line_number":283,"context_line":"   search for a filesystem labeled `config-2`, read `network_data.json` and"},{"line_number":284,"context_line":"   apply network configuration to the OS."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"4. Prior to booting the instance, ironic gathers network configuration for each"},{"line_number":287,"context_line":"   ironic port/portgroup, associated with the node being booted, by talking"},{"line_number":288,"context_line":"   with Neutron. Then ironic builds instance network configuration in form"},{"line_number":289,"context_line":"   of a `network-data.json` file."},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"5. Unless `config-drive` is supplied by Nova, ironic builds a new"},{"line_number":292,"context_line":"   `config-drive` image. Otherwise ironic unpacks and uses Nova-supplied"},{"line_number":293,"context_line":"   `config-drive`."},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"   Either way, ironic places generated `network-data.json` file at a"},{"line_number":296,"context_line":"   conventional location within `config-drive` image."},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"6. To boot the instance ironic builds bootable ISO out of `kernel_id` and"},{"line_number":299,"context_line":"   `ramdisk_id` associated with instance image, also unpacking `config-drive`"},{"line_number":300,"context_line":"   contents into the root of boot ISO image."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"   Booting instance invokes cloud-init that tries to mount `/dev/cdrom`"},{"line_number":303,"context_line":"   device(s) in search for a custom configuration data source. Eventually,"},{"line_number":304,"context_line":"   `cloud-init` hits virtual media drive, finds boot ISO there, then"},{"line_number":305,"context_line":"   `network-data.json` and applies it."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"Alternatives"},{"line_number":308,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":34,"id":"3fa7e38b_113e9db5","line":305,"range":{"start_line":286,"start_character":0,"end_line":305,"end_character":38},"updated":"2020-02-11 19:54:46.000000000","message":"Please remove this, same comment as above.\n\nit should also be noted that to represent this, then the vif attachment data for the interface that is not connected would need to be referenced, and provisioning network removed.\n\nIf we don\u0027t, we potentially leak inappropriate or incorrect data to the instance.\n\nIt can be proposed as an RFE for providing the configuration drive over the virutal media for initial deployment, but changing that data after the fact is likely out of scope. I\u0027ve mentioned this on the prior patchset as well, in that cloud-init needs the instance-id to change in order to decide to take action... and that can be very bad and negatively impact the physical node.","commit_id":"f580d7c8a62f106e800830c8fdd7b25f9b59fd42"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"2dc5166f7c98c86bb5fda655a1ff43935b378cd2","unresolved":false,"context_lines":[{"line_number":197,"context_line":"  The contents of this field should be validated by ironic conductor API"},{"line_number":198,"context_line":"  against `Glean` JSON schema and some ad-hoc checks the implementers deem"},{"line_number":199,"context_line":"  reasonable."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"  Having `Glean` schema effectively hardwired into ironic conductor API will"},{"line_number":202,"context_line":"  not allow for an easy extension or addition of other network configuration"},{"line_number":203,"context_line":"  formats."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"* Creating a new `config-drive` to have it including `network-data.json` file."},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":36,"id":"1fa4df85_0b495cb5","line":203,"range":{"start_line":200,"start_character":0,"end_line":203,"end_character":10},"updated":"2020-03-10 00:43:13.000000000","message":"A) Not glean, glean didn\u0027t create it.\nB) Alternatives welcome, but for an MVP we\u0027re not supporting every possible complex scenario... and that schema should be extensible, it is just that glean doesn\u0027t support all of the fancy possibilities that can be articulated in the data from neutron.\n\nI just want this to move forward because operators and users want functionality along these lines, and if we don\u0027t make it happen, then someone else will.","commit_id":"e47e39827735268b507ae6a2b1cea77be65edabf"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b898226c4ee6e59c3b5779960bee0b3540652025","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"  Having `Glean` schema effectively hardwired into ironic conductor API will"},{"line_number":202,"context_line":"  not allow for an easy extension or addition of other network configuration"},{"line_number":203,"context_line":"  formats."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"* Creating a new `config-drive` to have it including `network-data.json` file."},{"line_number":206,"context_line":""}],"source_content_type":"text/x-rst","patch_set":36,"id":"1fa4df85_2dfb08c1","line":203,"updated":"2020-03-10 11:35:50.000000000","message":"What Julia said.","commit_id":"e47e39827735268b507ae6a2b1cea77be65edabf"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b898226c4ee6e59c3b5779960bee0b3540652025","unresolved":false,"context_lines":[{"line_number":385,"context_line":"Ramdisk impact"},{"line_number":386,"context_line":"--------------"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"* Diskimage-builder tool should install `Glean` into ramdisk and invoke"},{"line_number":389,"context_line":"  on boot."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"  On top of that, the `dhcp-all-interfaces` DIB element might not be used"}],"source_content_type":"text/x-rst","patch_set":36,"id":"1fa4df85_4df684d9","line":388,"updated":"2020-03-10 11:35:50.000000000","message":"We need to determine eventually what \"might not\" means here. Currently IPA requires dhcp-all-interfaces explicitly.","commit_id":"e47e39827735268b507ae6a2b1cea77be65edabf"}]}
