)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"825bdd4e59da5064759af4ae7a0e1dc0945110a3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"01-6c-ae-8b-29-1f-42."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"The path-prefix provided by 210 option although will be used as well as"},{"line_number":25,"context_line":"path-prefix for the Kernel and Initramd netboot configuration file so we also"},{"line_number":26,"context_line":"need to make them relative paths in the netboot file."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Change-Id: Ib9e954feea2cec38dd8328ada35005c0311c2a1b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5afe65bd_5db41ff1","line":25,"updated":"2015-06-02 12:14:28.000000000","message":"s/initramd/initrand/","commit_id":"eaf6c55a7ce888b1ff34cd400d194ced4612f4e8"},{"author":{"_account_id":22678,"name":"Bruce Tan","email":"brucetan@linux.vnet.ibm.com","username":"brucetan"},"change_message_id":"ebe2a3dc51fa6b5b05c26cfb8a8cb9fb75826e1d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\t208-211 in older pxe systems - for compatibility."},{"line_number":16,"context_line":"     - 210 (tftp path-prefix): sets the base path of where we can"},{"line_number":17,"context_line":"\tfind the files required for a netboot. So for instance"},{"line_number":18,"context_line":"\tin: setting path-prefix\u003d/opt/stack/data/ironic/tftpboot/"},{"line_number":19,"context_line":"\tpetitboot will look after pxelinux.cfg at"},{"line_number":20,"context_line":"\t/opt/stack/data/ironic/tftpboot/pxelinux.cfg/ and look for"},{"line_number":21,"context_line":"\tsome standard file names like \u0027default\u0027or by port\u0027s \u002701-\u0027 +"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a89bdaa_500788c9","line":18,"updated":"2016-09-07 08:58:41.000000000","message":"I\u0027m not sure if the root path of TFTP server is the correct value to be used \nas \"Path Prefix\" for DHCP option 210. \nAccording to [2], \n    The second-stage bootloader MUST prepend this option\u0027s value, if any, \n    to the ... default \u0027Config File Search Path\u0027,\n    which the second-stage bootloader iterates in the absence of a Config\n    File Option.\n\nSo I think the value of \"Path Prefix\" is used by the second-stage bootloader (i.e. petitboot) to get the path of config file on TFTP server relative to TFTP root. \nHowever, this value in ironic.conf is intended to tell ironic conductor where the TFTP root should be. In other words, the value of [pxe]tftp_root in ironic.conf is the root path of TFTP server FROM THE SERVER\u0027s POINT OF VIEW, thus it serves a different purpose.\n\nFor example, on the ironic node, if the full path of the config file is\n    /opt/stack/data/ironic/tftpboot/pxelinux.cfg/\u003cmac-of-nic\u003e\n\n- The \"[pxe]tftp_root\" value in ironic.conf should be \u0027/opt/stack/data/ironic/tftpboot\u0027 where ironic-conductor has read/write access.\n- The \"Path Prefix\" should be \u0027/\u0027 since it needs to end with a separator. [3]\nAnd the correct TFTP URL for petitboot should be tftp://pxelinux.conf/\u003cmac-of-nic\u003e .\nThis also agrees with what I tested with ironic on pCentOS 7.2.\n\nIf I use \"[pxe]tftp_root\" for \"Path Prefix\", petitboot will try to request \u0027tftp://opt/stack/data/ironic/tftpboot/pxelinux.cfg/\u0027, which, in my option, translates into the path of \u0027/opt/stack/data/ironic/tftpboot/opt/stack/data/ironic/tftpboot/pxelinux.cfg/\u0027 on the ironic node, and it won\u0027t work.\n\n[2]: https://tools.ietf.org/html/rfc5071#section-5.5\n\n[3]: http://www.syslinux.org/wiki/index.php?title\u003dPXELINUX#DHCP_options","commit_id":"be608fbd07fe55c912f2b40599b75666b9a577ba"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"c9b0fd23b43c97427c79861fb5e6575b3ea992b7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This patch uses the value of tftp_root as a path prefix and makes"},{"line_number":14,"context_line":"the PXE module honor that prefix."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib9e954feea2cec38dd8328ada35005c0311c2a1b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a98d1f4_fe7996fd","line":16,"updated":"2016-09-29 14:02:34.000000000","message":"Michael, you may want to add a: Co-Authored-By entry for yourself :)","commit_id":"557daa596ea447902abebc857a3c864c0166948c"}],"ironic/common/pxe_utils.py":[{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"825bdd4e59da5064759af4ae7a0e1dc0945110a3","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        if deploy_utils.get_boot_mode_for_deploy(task.node) \u003d\u003d \u0027uefi\u0027:"},{"line_number":285,"context_line":"            boot_file \u003d CONF.pxe.uefi_pxe_bootfile_name"},{"line_number":286,"context_line":"        # On Power Systems petitboot is the loader so remove boot_file entry"},{"line_number":287,"context_line":"        # to avoid an unecessary boot entry - that an user can manually choose"},{"line_number":288,"context_line":"        # and is not valid."},{"line_number":289,"context_line":"        elif task.node.properties.get(\u0027cpu_arch\u0027) in (\u0027ppc\u0027, \u0027ppc64\u0027,"},{"line_number":290,"context_line":"                                                      \u0027ppc64el\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_5d99bf6d","line":287,"updated":"2015-06-02 12:14:28.000000000","message":"s/unecessary/unnecessary/","commit_id":"eaf6c55a7ce888b1ff34cd400d194ced4612f4e8"},{"author":{"_account_id":22678,"name":"Bruce Tan","email":"brucetan@linux.vnet.ibm.com","username":"brucetan"},"change_message_id":"ebe2a3dc51fa6b5b05c26cfb8a8cb9fb75826e1d","unresolved":false,"context_lines":[{"line_number":332,"context_line":"        # 210 \u003d\u003d tftp server path-prefix or tftp root, will be used to find"},{"line_number":333,"context_line":"        # pxelinux.cfg directory. Petitboot needs that information since it"},{"line_number":334,"context_line":"        # doesn\u0027t use pxelinux.0 loader."},{"line_number":335,"context_line":"        dhcp_opts.append({\u0027opt_name\u0027: \u0027210\u0027, \u0027opt_value\u0027: get_path_prefix()})"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"        if deploy_utils.get_boot_mode_for_deploy(task.node) \u003d\u003d \u0027uefi\u0027:"},{"line_number":338,"context_line":"            boot_file \u003d CONF.pxe.uefi_pxe_bootfile_name"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_ca5da97a","line":335,"updated":"2016-09-07 08:58:41.000000000","message":"The simple version of my suggestion is to use \u0027/\u0027 as \u0027opt_value\u0027 instead of get_path_prefix().\nThe full explanation is in my comment for commit message","commit_id":"be608fbd07fe55c912f2b40599b75666b9a577ba"},{"author":{"_account_id":22678,"name":"Bruce Tan","email":"brucetan@linux.vnet.ibm.com","username":"brucetan"},"change_message_id":"ebe2a3dc51fa6b5b05c26cfb8a8cb9fb75826e1d","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        # to avoid an unecessary boot entry - that an user can manually choose"},{"line_number":341,"context_line":"        # and is not valid."},{"line_number":342,"context_line":"        elif task.node.properties.get(\u0027cpu_arch\u0027) in (\u0027ppc\u0027, \u0027ppc64\u0027,"},{"line_number":343,"context_line":"                                                      \u0027ppc64el\u0027):"},{"line_number":344,"context_line":"            boot_file \u003d None"},{"line_number":345,"context_line":"        else:"},{"line_number":346,"context_line":"            boot_file \u003d CONF.pxe.pxe_bootfile_name"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a89bdaa_bd151241","line":343,"range":{"start_line":343,"start_character":55,"end_line":343,"end_character":62},"updated":"2016-09-07 08:58:41.000000000","message":"I believe \u0027ppc64el\u0027 is used in Ubuntu, and if we put Fedora/CentOS/etc. into consideration, we need \u0027ppc64le\u0027 as well.","commit_id":"be608fbd07fe55c912f2b40599b75666b9a577ba"},{"author":{"_account_id":5660,"name":"Kurt Taylor","email":"kurt.r.taylor@gmail.com","username":"krtaylor"},"change_message_id":"e3c457dde0cada06ccf2671013f813c5fca63704","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        opt.update({\u0027ip_version\u0027: int(CONF.pxe.ip_version)})"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"    return dhcp_opts"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"def get_path_prefix():"},{"line_number":364,"context_line":"    # trailing slash is necessary for petitboot"},{"line_number":365,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_20969393","line":362,"updated":"2016-01-29 14:44:42.000000000","message":"need 2 blank lines here","commit_id":"be608fbd07fe55c912f2b40599b75666b9a577ba"},{"author":{"_account_id":5660,"name":"Kurt Taylor","email":"kurt.r.taylor@gmail.com","username":"krtaylor"},"change_message_id":"e3c457dde0cada06ccf2671013f813c5fca63704","unresolved":false,"context_lines":[{"line_number":363,"context_line":"def get_path_prefix():"},{"line_number":364,"context_line":"    # trailing slash is necessary for petitboot"},{"line_number":365,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"def get_relative_path(file_path):"},{"line_number":368,"context_line":"    \"\"\"Return file relative path to the path prefix used."},{"line_number":369,"context_line":"    :param file_path: full file path to be made relative path."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_00e03728","line":366,"updated":"2016-01-29 14:44:42.000000000","message":"need 2 blank lines here","commit_id":"be608fbd07fe55c912f2b40599b75666b9a577ba"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"255eaa74c0f92088435e98df2722063d8a5f52ea","unresolved":false,"context_lines":[{"line_number":357,"context_line":""},{"line_number":358,"context_line":"def get_path_prefix():"},{"line_number":359,"context_line":"    # trailing slash is necessary for petitboot"},{"line_number":360,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"def get_relative_path(file_path):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_9d4fbcbd","line":360,"range":{"start_line":360,"start_character":44,"end_line":360,"end_character":46},"updated":"2016-09-20 13:20:29.000000000","message":"Should here be trailing slash mentioned above or empty string?","commit_id":"4119dc5cebc47ea824745ee756f5236bf71bff25"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"4eb0037a36c217565a026ae5d933a2ad38181cfb","unresolved":false,"context_lines":[{"line_number":357,"context_line":""},{"line_number":358,"context_line":"def get_path_prefix():"},{"line_number":359,"context_line":"    # trailing slash is necessary for petitboot"},{"line_number":360,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"def get_relative_path(file_path):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a8bc5a2_9925935d","line":360,"range":{"start_line":360,"start_character":44,"end_line":360,"end_character":46},"in_reply_to":"7a8ec9b2_9d4fbcbd","updated":"2016-09-26 19:40:47.000000000","message":"Hello Kyrylo, os.path.join is used to concatenate two paths together, and will add a slash if one isn\u0027t there. By concatenating with the empty string, we add a trailing slash only when needed. So yes, empty string is the right string :)\n\nThanks for the review!!","commit_id":"4119dc5cebc47ea824745ee756f5236bf71bff25"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"b04cb355eaa817c11032e1de100304ffbc4b968a","unresolved":false,"context_lines":[{"line_number":329,"context_line":"        dhcp_opts.append({\u0027opt_name\u0027: \u0027210\u0027, \u0027opt_value\u0027: get_path_prefix()})"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        if deploy_utils.get_boot_mode_for_deploy(task.node) \u003d\u003d \u0027uefi\u0027:"},{"line_number":332,"context_line":"            boot_file \u003d CONF.pxe.uefi_pxe_bootfile_name"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"    dhcp_opts.append({\u0027opt_name\u0027: \u0027server-ip-address\u0027,"},{"line_number":335,"context_line":"                      \u0027opt_value\u0027: CONF.pxe.tftp_server})"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_09f3959f","line":332,"updated":"2016-09-28 22:50:57.000000000","message":"What is the purpose of this?\n\nIt doesn\u0027t seem like boot_file is used after this.","commit_id":"557daa596ea447902abebc857a3c864c0166948c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"bdc9ec46c81381cf81b43512570a585db0260ef4","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    return dhcp_opts"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"def get_path_prefix():"},{"line_number":347,"context_line":"    # Adds trailing slash (if needed) necessary for path-prefix"},{"line_number":348,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":349,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_a9b0e1f5","line":346,"updated":"2016-09-28 22:49:31.000000000","message":"Add unit tests please","commit_id":"557daa596ea447902abebc857a3c864c0166948c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"bdc9ec46c81381cf81b43512570a585db0260ef4","unresolved":false,"context_lines":[{"line_number":348,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"def get_relative_path(file_path):"},{"line_number":352,"context_line":"    \"\"\"Return file relative path to the path prefix used."},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    :param file_path: full file path to be made relative path."}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_c9952d41","line":351,"updated":"2016-09-28 22:49:31.000000000","message":"Add unit tests please","commit_id":"557daa596ea447902abebc857a3c864c0166948c"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"1ee2aa53f995a2673ccb6ecb998a72df8fa5910c","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"def get_path_prefix():"},{"line_number":344,"context_line":"    # Adds trailing slash (if needed) necessary for path-prefix"},{"line_number":345,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"def get_relative_path(file_path):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_385b0556","line":345,"updated":"2016-10-12 18:41:49.000000000","message":"This seems a little unnecessary if it\u0027s only used once. I\u0027m OK with leaving it if it improves readability though.","commit_id":"64c8336accdf80b63a81d0c7d0799578762a0618"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"b3b5b83e4f8d84c918f744d54d006687b84ccd48","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"def get_path_prefix():"},{"line_number":344,"context_line":"    # Adds trailing slash (if needed) necessary for path-prefix"},{"line_number":345,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"def get_relative_path(file_path):"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_9b832804","line":345,"in_reply_to":"fa6399be_385b0556","updated":"2016-10-12 20:50:21.000000000","message":"Not that it\u0027s much of a difference but it\u0027s actually used twice. I definitely think it improves readability, but I\u0027m open to removing it if more people agree.","commit_id":"64c8336accdf80b63a81d0c7d0799578762a0618"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"40ea844bbdf8a75b7a88ab608270e9dd9a5c014c","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    else:"},{"line_number":320,"context_line":"        dhcp_opts.append({\u0027opt_name\u0027: \u0027bootfile-name\u0027,"},{"line_number":321,"context_line":"                          \u0027opt_value\u0027: boot_file})"},{"line_number":322,"context_line":"        # 210 \u003d\u003d tftp server path-prefix or tftp root, will be used to find"},{"line_number":323,"context_line":"        # pxelinux.cfg directory. The pxelinux.0 loader infers this information"},{"line_number":324,"context_line":"        # from it\u0027s own path, but Petitboot needs it to be specified by this"},{"line_number":325,"context_line":"        # option since it doesn\u0027t use pxelinux.0 loader."}],"source_content_type":"text/x-python","patch_set":11,"id":"da6895a0_e86cbb0a","line":322,"updated":"2016-10-20 21:28:39.000000000","message":"Bare 210 code should be replaceable by \u0027path-prefix\u0027 opt_name","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"921a8d4092e2c3c02e7c6eb376b20206f0900e1e","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    else:"},{"line_number":320,"context_line":"        dhcp_opts.append({\u0027opt_name\u0027: \u0027bootfile-name\u0027,"},{"line_number":321,"context_line":"                          \u0027opt_value\u0027: boot_file})"},{"line_number":322,"context_line":"        # 210 \u003d\u003d tftp server path-prefix or tftp root, will be used to find"},{"line_number":323,"context_line":"        # pxelinux.cfg directory. The pxelinux.0 loader infers this information"},{"line_number":324,"context_line":"        # from it\u0027s own path, but Petitboot needs it to be specified by this"},{"line_number":325,"context_line":"        # option since it doesn\u0027t use pxelinux.0 loader."}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_7e8e057a","line":322,"in_reply_to":"ba5da102_ee6c3937","updated":"2016-11-02 10:08:27.000000000","message":"I\u0027ve seem 210 all around too, we can keep it in this patch and if we later find out that \"path-prefix\" is an alias for that we change it.","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"b3284ca7e60a36ce2ba5c4bb44b9d7d91d499208","unresolved":false,"context_lines":[{"line_number":319,"context_line":"    else:"},{"line_number":320,"context_line":"        dhcp_opts.append({\u0027opt_name\u0027: \u0027bootfile-name\u0027,"},{"line_number":321,"context_line":"                          \u0027opt_value\u0027: boot_file})"},{"line_number":322,"context_line":"        # 210 \u003d\u003d tftp server path-prefix or tftp root, will be used to find"},{"line_number":323,"context_line":"        # pxelinux.cfg directory. The pxelinux.0 loader infers this information"},{"line_number":324,"context_line":"        # from it\u0027s own path, but Petitboot needs it to be specified by this"},{"line_number":325,"context_line":"        # option since it doesn\u0027t use pxelinux.0 loader."}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_ee6c3937","line":322,"in_reply_to":"da6895a0_e86cbb0a","updated":"2016-11-01 20:24:02.000000000","message":"it doesn\u0027t look like path-prefix is defined like bootfile-name is. See https://linux.die.net/man/5/dhcp-options\n\nEvery example I\u0027ve seen of this option in use uses the literal 210 value. If you can point me to an example that uses \u0027path-prefix\u0027 (or some other alias) in place of the 210, I\u0027m fine with changing it. Thanks for the review!","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"921a8d4092e2c3c02e7c6eb376b20206f0900e1e","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    return dhcp_opts"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"def get_path_prefix():"},{"line_number":341,"context_line":"    # Adds trailing slash (if needed) necessary for path-prefix"},{"line_number":342,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":343,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_f3b32e98","line":340,"range":{"start_line":340,"start_character":4,"end_line":340,"end_character":19},"updated":"2016-11-02 10:08:27.000000000","message":"I find the name misleading for a non-private function in this module. What path is the function about ? Because we have path for tftp, http, pxe config, etc...\n\nPerhaps we should call it: get_tftp_root_path_prefix()","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"5e431df34cd13f84bf578b732fae5761515da52e","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    return dhcp_opts"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"def get_path_prefix():"},{"line_number":341,"context_line":"    # Adds trailing slash (if needed) necessary for path-prefix"},{"line_number":342,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":343,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_b5c31e37","line":340,"range":{"start_line":340,"start_character":4,"end_line":340,"end_character":19},"in_reply_to":"ba5da102_f3b32e98","updated":"2016-11-03 14:32:37.000000000","message":"Done","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"921a8d4092e2c3c02e7c6eb376b20206f0900e1e","unresolved":false,"context_lines":[{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"def get_path_prefix():"},{"line_number":341,"context_line":"    # Adds trailing slash (if needed) necessary for path-prefix"},{"line_number":342,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_d3662a50","line":341,"updated":"2016-11-02 10:08:27.000000000","message":"nit: The comment should probably be a docstring for that function","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"5e431df34cd13f84bf578b732fae5761515da52e","unresolved":false,"context_lines":[{"line_number":338,"context_line":""},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"def get_path_prefix():"},{"line_number":341,"context_line":"    # Adds trailing slash (if needed) necessary for path-prefix"},{"line_number":342,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_95c8da56","line":341,"in_reply_to":"ba5da102_d3662a50","updated":"2016-11-03 14:32:37.000000000","message":"Done","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"921a8d4092e2c3c02e7c6eb376b20206f0900e1e","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"def get_relative_path(file_path):"},{"line_number":346,"context_line":"    \"\"\"Return file relative path to the path prefix used."},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    :param file_path: full file path to be made relative path."}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_33604601","line":345,"range":{"start_line":345,"start_character":4,"end_line":345,"end_character":21},"updated":"2016-11-02 10:08:27.000000000","message":"ditto re: naming. Get relative to what path ?","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"5e431df34cd13f84bf578b732fae5761515da52e","unresolved":false,"context_lines":[{"line_number":342,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"def get_relative_path(file_path):"},{"line_number":346,"context_line":"    \"\"\"Return file relative path to the path prefix used."},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    :param file_path: full file path to be made relative path."}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_af80318c","line":345,"range":{"start_line":345,"start_character":4,"end_line":345,"end_character":21},"in_reply_to":"ba5da102_33604601","updated":"2016-11-03 14:32:37.000000000","message":"Totally agree. Fixed!","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"921a8d4092e2c3c02e7c6eb376b20206f0900e1e","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"def get_relative_path(file_path):"},{"line_number":346,"context_line":"    \"\"\"Return file relative path to the path prefix used."},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    :param file_path: full file path to be made relative path."},{"line_number":349,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_f3388ef0","line":346,"updated":"2016-11-02 10:08:27.000000000","message":"We should say that it\u0027s relative to the TFTP root path","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"5e431df34cd13f84bf578b732fae5761515da52e","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"def get_relative_path(file_path):"},{"line_number":346,"context_line":"    \"\"\"Return file relative path to the path prefix used."},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    :param file_path: full file path to be made relative path."},{"line_number":349,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"ba5da102_0f503d31","line":346,"in_reply_to":"ba5da102_f3388ef0","updated":"2016-11-03 14:32:37.000000000","message":"Done","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"dac5c807b2148bfda9c758bde78693f52722b5dc","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"def get_tftp_root_relative_path(file_path):"},{"line_number":350,"context_line":"    \"\"\"Return file relative path to CONF.pxe.tftp_root"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    :param file_path: full file path to be made relative path."}],"source_content_type":"text/x-python","patch_set":12,"id":"ba5da102_f839e6f3","line":349,"updated":"2016-11-04 12:16:59.000000000","message":"This function returns file relative path to tftproot, might be use get_file_relative_tftp_root_path() ?","commit_id":"fa3620e17bf56af0139b96128378e3d7fff2cb1b"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"f3a475ef59be5bc44fab58294926aed0bf235d11","unresolved":false,"context_lines":[{"line_number":346,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"def get_tftp_root_relative_path(file_path):"},{"line_number":350,"context_line":"    \"\"\"Return file relative path to CONF.pxe.tftp_root"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    :param file_path: full file path to be made relative path."}],"source_content_type":"text/x-python","patch_set":12,"id":"9a629dbe_e92bd731","line":349,"in_reply_to":"ba5da102_f839e6f3","updated":"2016-11-07 14:37:22.000000000","message":"I definitely see what you\u0027re saying. Though saying \u0027get_file\u0027 might be a bit confusing. How\u0027s get_path_relative_to_tftp_root()?","commit_id":"fa3620e17bf56af0139b96128378e3d7fff2cb1b"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4ea77c844d6bb31abae6d73e0bffa2b2da1f08a0","unresolved":false,"context_lines":[{"line_number":341,"context_line":"def get_tftp_path_prefix():"},{"line_number":342,"context_line":"    \"\"\"Adds trailing slash (if needed) necessary for path-prefix"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    :return: CONF.pxe.tftp_root ensured to have a trailing slash"},{"line_number":345,"context_line":"    \"\"\""},{"line_number":346,"context_line":"    return os.path.join(CONF.pxe.tftp_root, \u0027\u0027)"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"7a77a97e_e1b658db","line":344,"updated":"2016-11-15 23:14:01.000000000","message":"ni s/return/returns/","commit_id":"f13959c03183ac7893387224d082360c1e9fcb51"}],"ironic/drivers/modules/pxe.py":[{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"1ee2aa53f995a2673ccb6ecb998a72df8fa5910c","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def _get_pxe_kernel_ramdisk(pxe_info):"},{"line_number":134,"context_line":"    pxe_opts \u003d {}"},{"line_number":135,"context_line":"    pxe_opts[\u0027deployment_aki_path\u0027] \u003d pxe_utils.get_relative_path("},{"line_number":136,"context_line":"        pxe_info[\u0027deploy_kernel\u0027][1])"},{"line_number":137,"context_line":"    pxe_opts[\u0027deployment_ari_path\u0027] \u003d pxe_utils.get_relative_path("},{"line_number":138,"context_line":"        pxe_info[\u0027deploy_ramdisk\u0027][1])"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_f816ed53","line":135,"updated":"2016-10-12 18:41:49.000000000","message":"Will this affect non-petitboot pxe boots?","commit_id":"64c8336accdf80b63a81d0c7d0799578762a0618"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"b3b5b83e4f8d84c918f744d54d006687b84ccd48","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"def _get_pxe_kernel_ramdisk(pxe_info):"},{"line_number":134,"context_line":"    pxe_opts \u003d {}"},{"line_number":135,"context_line":"    pxe_opts[\u0027deployment_aki_path\u0027] \u003d pxe_utils.get_relative_path("},{"line_number":136,"context_line":"        pxe_info[\u0027deploy_kernel\u0027][1])"},{"line_number":137,"context_line":"    pxe_opts[\u0027deployment_ari_path\u0027] \u003d pxe_utils.get_relative_path("},{"line_number":138,"context_line":"        pxe_info[\u0027deploy_ramdisk\u0027][1])"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa6399be_5ba270af","line":135,"in_reply_to":"fa6399be_f816ed53","updated":"2016-10-12 20:50:21.000000000","message":"Yes.\n\nWith this patch, all PXE deployments will use the tftp-path-prefix option.\n\nThat being said I\u0027ve tested it on both petitboot and non-petitboot deploys.\n\nI am absolutely open to it being a configuration option if that would be preferable.","commit_id":"64c8336accdf80b63a81d0c7d0799578762a0618"}],"ironic/tests/unit/common/test_pxe_utils.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"bdc9ec46c81381cf81b43512570a585db0260ef4","unresolved":false,"context_lines":[{"line_number":489,"context_line":"                          \u0027ip_version\u0027: ip_version},"},{"line_number":490,"context_line":"                         {\u0027opt_name\u0027: \u0027tftp-server\u0027,"},{"line_number":491,"context_line":"                          \u0027opt_value\u0027: \u0027192.0.2.1\u0027,"},{"line_number":492,"context_line":"                          \u0027ip_version\u0027: ip_version}"},{"line_number":493,"context_line":"                         ]"},{"line_number":494,"context_line":"        with task_manager.acquire(self.context, self.node.uuid) as task:"},{"line_number":495,"context_line":"            self.assertEqual(expected_info,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_69bfb9d0","line":492,"updated":"2016-09-28 22:49:31.000000000","message":"Please leave the trailing comma","commit_id":"557daa596ea447902abebc857a3c864c0166948c"},{"author":{"_account_id":23883,"name":"Joanna Taryma","email":"joanna.taryma@intel.com","username":"jtaryma"},"change_message_id":"40ea844bbdf8a75b7a88ab608270e9dd9a5c014c","unresolved":false,"context_lines":[{"line_number":428,"context_line":"        expected_info \u003d [{\u0027opt_name\u0027: \u0027bootfile-name\u0027,"},{"line_number":429,"context_line":"                          \u0027opt_value\u0027: \u0027fake-bootfile\u0027,"},{"line_number":430,"context_line":"                          \u0027ip_version\u0027: ip_version},"},{"line_number":431,"context_line":"                         {\u0027opt_name\u0027: \u0027210\u0027,"},{"line_number":432,"context_line":"                          \u0027opt_value\u0027: \u0027/tftp-path/\u0027,"},{"line_number":433,"context_line":"                          \u0027ip_version\u0027: ip_version},"},{"line_number":434,"context_line":"                         {\u0027opt_name\u0027: \u0027server-ip-address\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6895a0_e8b3db08","line":431,"updated":"2016-10-20 21:28:39.000000000","message":"As in pxe_utils.py - I think it should be replaced with \u0027path-prefix\u0027","commit_id":"2066ff29b0daf3156c7ac5b44e053f1c1502a998"}],"releasenotes/notes/add-pxe-support-for-petitboot-50d1fe4e7da4bfba.yaml":[{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"1ee2aa53f995a2673ccb6ecb998a72df8fa5910c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"------"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds the use of DHCP option 210 (tftp-path-prefix). This"},{"line_number":4,"context_line":"    enables PXE for systems using petitboot, which cannot"},{"line_number":5,"context_line":"    infer their tftp-path-prefix from the boot file location"},{"line_number":6,"context_line":"    as petitboot does not use a boot file."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"fa6399be_3310864e","line":3,"updated":"2016-10-12 18:41:49.000000000","message":"Looks like there\u0027s some sort of formatting error that\u0027s causing reno tests to fail.","commit_id":"64c8336accdf80b63a81d0c7d0799578762a0618"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4ea77c844d6bb31abae6d73e0bffa2b2da1f08a0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds the use of DHCP option 210 (tftp-path-prefix). This"},{"line_number":4,"context_line":"    enables PXE for systems using petitboot, which cannot"},{"line_number":5,"context_line":"    infer their tftp-path-prefix from the boot file location"},{"line_number":6,"context_line":"    as petitboot does not use a boot file."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"7a77a97e_4139cc40","line":4,"updated":"2016-11-15 23:14:01.000000000","message":"I would have preferred that it just had \u0027Enables PXE for systems using petitboot.\u0027 The user/reader doesn\u0027t need to know how, do they?\n\nit isn\u0027t clear to me whether it is petitboot or Petitboot or PetitBoot or PETITBOOT (ok, I\u0027m exaggerating). So this is probably fine :)","commit_id":"f13959c03183ac7893387224d082360c1e9fcb51"},{"author":{"_account_id":11929,"name":"Michael Turek","email":"mjturek@linux.vnet.ibm.com","username":"mjturek"},"change_message_id":"75318fd4dae7b8efc6b3d4afc3a45e97c5e131e8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds the use of DHCP option 210 (tftp-path-prefix). This"},{"line_number":4,"context_line":"    enables PXE for systems using petitboot, which cannot"},{"line_number":5,"context_line":"    infer their tftp-path-prefix from the boot file location"},{"line_number":6,"context_line":"    as petitboot does not use a boot file."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"7a77a97e_b74e3e94","line":4,"in_reply_to":"7a77a97e_4139cc40","updated":"2016-11-16 15:47:29.000000000","message":"I think we should be explicit in saying that it enables \u0027DHCP option 210\u0027, but I agree. We probably don\u0027t need to say why/how it enables petitboot!\n\nI\u0027ve seen both Petitboot and petitboot on it\u0027s official site, but only Petitboot when the sentence starts with it :)\n\nhttps://www.kernel.org/pub/linux/kernel/people/geoff/petitboot/petitboot.html","commit_id":"f13959c03183ac7893387224d082360c1e9fcb51"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"c825bb6ceeb997a446a21b560e3484822a35b91e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds the use of DHCP option 210 (tftp-path-prefix). This"},{"line_number":4,"context_line":"    enables PXE for systems using petitboot, which cannot"},{"line_number":5,"context_line":"    infer their tftp-path-prefix from the boot file location"},{"line_number":6,"context_line":"    as petitboot does not use a boot file."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"7a77a97e_810d6739","line":4,"in_reply_to":"7a77a97e_b74e3e94","updated":"2016-11-16 23:29:58.000000000","message":"+1 I agree with Michael, we should be explicit about sending DHCP option 210","commit_id":"f13959c03183ac7893387224d082360c1e9fcb51"}]}
