)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"c1b760ef5a0f27e613a2251865060af7c7179e38","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"cad3c56c_5a777b32","updated":"2022-08-05 14:46:49.000000000","message":"Thanks Dmitry!","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"15373e6bd852ed1ff66bec2a4906b5ae42dd2b09","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"cba5121f_ef33fd44","updated":"2022-08-08 15:29:02.000000000","message":"Going to update after the meeting o/","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"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":"52da3eb0d2caeeec972a6e631ebf3b44dfbbf01c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"0ecaccdd_640ed99d","updated":"2022-08-08 19:30:20.000000000","message":"I appreciate the problem this is trying to solve, but the way this is oriented currently will be confusing and misleading to operators. I have an alternate suggestion.\n\nCouching this as a \"v4\" vs \"v6\" issue isn\u0027t really accurate; there\u0027s nothing inherent about a v4/v6 or dual-stack network that\u0027d need a different hostname/URL provided in a properly configured network. However, it is incredibly short-sighted of Ironic\u0027s current configuration to assume every node\u0027s BMC will have the same network context (this is already alluded to by the fact we now allow a separate \"external\" http_url which you are updating now).\n\nSo, instead of this approach, I suggest the following:\n- Check for an attribute in node.driver_info, something like bmc_network_scope\n- Add a config map to Ironic, where you can set various hostnames -- such as external_http_url -- differently based on the set value of bmc_network_scope.\n\nI could see this becoming a repeated pattern: you can set a node or a node\u0027s BMC to a given network scope (new names welcome), and override some of the URLs/hostnames associated with that node based on the provided network scope.\n\n\n\nAs it sits, I do not think this patch should merge, or any patch in this form where we have separate v4 and v6 settings for a given value and then suggest to set those values in most cases in our documentation. Instead, lets look at the general problem -- the assumption all node BMCs will have similar network access.","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"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":"9c6a0787b6bb8d72158fd1ffd0e2ce0d04b23f8b","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"5b72ff1d_eda8d9fd","updated":"2022-08-09 14:42:17.000000000","message":"My main issue with this is that it\u0027s all couched in \"v4\" vs \"v6\" terms, when I think the problem is more generic, and only tangentially related to v4 vs v6.\n\nI could just as easily have two servers with BMCs, both on IPv4, with different network ACLs so they had to hit different hosts for images. \n\nOur solution should be sufficiently generic to handle cases *regardless of if they involve* IP protocol changes or other network stuff.\n\n\nAt the core, if we start having v4_blah and v6_blah settings, we\u0027re sending operators down a path that is going to make them presume that a proper dual stack isn\u0027t supported in Ironic, when it is supported. Doing an external_http_url per node as an override is an option (as long as we don\u0027t call them v4/v6 overrides), but that doesn\u0027t scale well -- imagine I have hundreds of nodes with an override, but that hostname changes. Now I have to do \"N\" api calls for \"N\" nodes to update it, which is not a small feat. Because of this, I think this is a general problem which could use a general solution rather than just node overrides, but my overriding concern (and reason for -1) is the conflation of the sort of problem that can happen *with any kind of network segmentation* as a v4/v6 issue (and our docs reflecting that in a misleading way).","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"a570be64e314275cdc6f343e43d297489fcf8664","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9933a739_15e83a09","updated":"2022-08-10 07:12:58.000000000","message":"discussion still ongoing for a different approach, removing my vote","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0385f41645a0e58ac4982d291b9e7568fb415540","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c252e13c_4f14d0b3","updated":"2022-08-08 15:21:47.000000000","message":"some nits, not sure we want to address them now or in a follow up","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"ab5e914295fb8127f608bbecc18ad749f2dcc210","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f85426c5_d26aa31f","in_reply_to":"0ecaccdd_640ed99d","updated":"2022-08-09 12:04:52.000000000","message":"Are we essentially talking about accepting an external_http_url in driver_info?","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"84d7781642b0efb03c89e21e29e4aca6af533f75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"710498c5_c272bd38","in_reply_to":"f85426c5_d26aa31f","updated":"2022-08-09 13:56:13.000000000","message":"I don\u0027t is directly accepting the external_http_url in driver_info, but an option on it that would identify the scope (v4/v6) and have ironic configs that would map to override based on it (driver_info[something] \u003d 4 / 6 / v4/v6 (depending on how we would implement)\n\n[v4-override]\nexternal_url\u003d...\n\n[v6-override]\nexternal_url\u003d....\n\nIn the methods to publish we check the value we have in driver_info to map to the correct config value and use it...\n\nAt least this is how I understood","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"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":"fcca5815657d133f1d2c983a756515bcebcb948e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a598d3f4_ea0e0776","updated":"2022-08-10 21:56:17.000000000","message":"This is good w/me now, please update the reno as Julia requested.","commit_id":"b8b4a97793ceb829baf5c7bc4fd7037b293e6222"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"0f9a264322d84bb72766bfcf08d134331a4fe263","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"9c23b0d4_423f55e7","updated":"2022-08-15 16:56:58.000000000","message":"recheck strange curl errors in the job logs...\nhttps://zuul.opendev.org/t/openstack/build/962661cf6ed4444fb052b167d1fbae4d/log/job-output.txt#19903\nhttps://zuul.opendev.org/t/openstack/build/c47b9cdde0204c618bd32ac2394d2b87/log/job-output.txt#22476","commit_id":"c197a2d8b24e2fa4c5e7901e448da1b0c93fcd26"}],"ironic/common/utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b54996ff92e7d06ae0e3f1518564c51b94a3286c","unresolved":true,"context_lines":[{"line_number":591,"context_line":"    # always provide the ip in the netloc attribute urlsplit"},{"line_number":592,"context_line":"    if not node_address.lower().startswith(\"http\"):"},{"line_number":593,"context_line":"        node_address \u003d \"https://\" + node_address"},{"line_number":594,"context_line":"    address \u003d urlparse.urlsplit(node_address).netloc"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    # If square brackets are present it means we have a wrapped IPv6"},{"line_number":597,"context_line":"    # If we have more than 1 `:` it means we have IPv6"}],"source_content_type":"text/x-python","patch_set":1,"id":"44f8e212_33019641","line":594,"updated":"2022-08-05 11:14:47.000000000","message":"This can be a host name, not an IP address","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"c1b760ef5a0f27e613a2251865060af7c7179e38","unresolved":false,"context_lines":[{"line_number":591,"context_line":"    # always provide the ip in the netloc attribute urlsplit"},{"line_number":592,"context_line":"    if not node_address.lower().startswith(\"http\"):"},{"line_number":593,"context_line":"        node_address \u003d \"https://\" + node_address"},{"line_number":594,"context_line":"    address \u003d urlparse.urlsplit(node_address).netloc"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    # If square brackets are present it means we have a wrapped IPv6"},{"line_number":597,"context_line":"    # If we have more than 1 `:` it means we have IPv6"}],"source_content_type":"text/x-python","patch_set":1,"id":"2a4893ea_74b75c1c","line":594,"in_reply_to":"44f8e212_33019641","updated":"2022-08-05 14:46:49.000000000","message":"Done","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b54996ff92e7d06ae0e3f1518564c51b94a3286c","unresolved":true,"context_lines":[{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    try:"},{"line_number":607,"context_line":"        ip_version \u003d ipaddress.ip_address(ip).version"},{"line_number":608,"context_line":"        print(ip_version)"},{"line_number":609,"context_line":"        return ip_version"},{"line_number":610,"context_line":"    except ValueError as e:"},{"line_number":611,"context_line":"        # Log a warning in case we can\u0027t identify the version and return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"f929ca11_e4259430","line":608,"updated":"2022-08-05 11:14:47.000000000","message":"leftover","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"c1b760ef5a0f27e613a2251865060af7c7179e38","unresolved":false,"context_lines":[{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    try:"},{"line_number":607,"context_line":"        ip_version \u003d ipaddress.ip_address(ip).version"},{"line_number":608,"context_line":"        print(ip_version)"},{"line_number":609,"context_line":"        return ip_version"},{"line_number":610,"context_line":"    except ValueError as e:"},{"line_number":611,"context_line":"        # Log a warning in case we can\u0027t identify the version and return None"}],"source_content_type":"text/x-python","patch_set":1,"id":"df8f7442_5bb90021","line":608,"in_reply_to":"f929ca11_e4259430","updated":"2022-08-05 14:46:49.000000000","message":"Done","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b54996ff92e7d06ae0e3f1518564c51b94a3286c","unresolved":true,"context_lines":[{"line_number":609,"context_line":"        return ip_version"},{"line_number":610,"context_line":"    except ValueError as e:"},{"line_number":611,"context_line":"        # Log a warning in case we can\u0027t identify the version and return None"},{"line_number":612,"context_line":"        LOG.warning(e)"},{"line_number":613,"context_line":"        return None"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ef0bd3c0_04bc994f","line":612,"updated":"2022-08-05 11:14:47.000000000","message":"Let\u0027s provide some context","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"c1b760ef5a0f27e613a2251865060af7c7179e38","unresolved":false,"context_lines":[{"line_number":609,"context_line":"        return ip_version"},{"line_number":610,"context_line":"    except ValueError as e:"},{"line_number":611,"context_line":"        # Log a warning in case we can\u0027t identify the version and return None"},{"line_number":612,"context_line":"        LOG.warning(e)"},{"line_number":613,"context_line":"        return None"},{"line_number":614,"context_line":""},{"line_number":615,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bdbbd731_d7c0bdbd","line":612,"in_reply_to":"ef0bd3c0_04bc994f","updated":"2022-08-05 14:46:49.000000000","message":"Done","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9a984b1ad6cd7fa49ddae58ee21dbeb2d37469f1","unresolved":true,"context_lines":[{"line_number":581,"context_line":"    return ip"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"def check_ipv6_address(node_address, node_uuid):"},{"line_number":585,"context_line":"    \"\"\"Checks the node address to identify is is IPv6."},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    :param node_address: the BMC address of a node."}],"source_content_type":"text/x-python","patch_set":2,"id":"9b46f17a_4e4c8903","line":584,"range":{"start_line":584,"start_character":4,"end_line":584,"end_character":9},"updated":"2022-08-08 18:03:36.000000000","message":"nit: perhaps is_node_ipv6? We\u0027re in common utils.\n\nCheck seems like we\u0027re doing sanity checking, is seems like we\u0027re asking a question. The code seems like we\u0027re asking a question of the method.","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"6ed7fc38758b03b54217e27ea331eef06b31b9dd","unresolved":true,"context_lines":[{"line_number":581,"context_line":"    return ip"},{"line_number":582,"context_line":""},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"def check_ipv6_address(node_address, node_uuid):"},{"line_number":585,"context_line":"    \"\"\"Checks the node address to identify is is IPv6."},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    :param node_address: the BMC address of a node."}],"source_content_type":"text/x-python","patch_set":2,"id":"797ce169_0794605e","line":584,"range":{"start_line":584,"start_character":4,"end_line":584,"end_character":9},"in_reply_to":"9b46f17a_4e4c8903","updated":"2022-08-09 11:23:04.000000000","message":"Sure","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0385f41645a0e58ac4982d291b9e7568fb415540","unresolved":true,"context_lines":[{"line_number":582,"context_line":""},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"def check_ipv6_address(node_address, node_uuid):"},{"line_number":585,"context_line":"    \"\"\"Checks the node address to identify is is IPv6."},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    :param node_address: the BMC address of a node."},{"line_number":588,"context_line":"    :return: True if the node address is a valid IPv6, False otherwise."}],"source_content_type":"text/x-python","patch_set":2,"id":"4597efdb_8ff646c7","line":585,"range":{"start_line":585,"start_character":43,"end_line":585,"end_character":53},"updated":"2022-08-08 15:21:47.000000000","message":"nit: if it\u0027s","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"15373e6bd852ed1ff66bec2a4906b5ae42dd2b09","unresolved":false,"context_lines":[{"line_number":582,"context_line":""},{"line_number":583,"context_line":""},{"line_number":584,"context_line":"def check_ipv6_address(node_address, node_uuid):"},{"line_number":585,"context_line":"    \"\"\"Checks the node address to identify is is IPv6."},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    :param node_address: the BMC address of a node."},{"line_number":588,"context_line":"    :return: True if the node address is a valid IPv6, False otherwise."}],"source_content_type":"text/x-python","patch_set":2,"id":"3364649d_dcc41441","line":585,"range":{"start_line":585,"start_character":43,"end_line":585,"end_character":53},"in_reply_to":"4597efdb_8ff646c7","updated":"2022-08-08 15:29:02.000000000","message":"Ack","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0385f41645a0e58ac4982d291b9e7568fb415540","unresolved":true,"context_lines":[{"line_number":584,"context_line":"def check_ipv6_address(node_address, node_uuid):"},{"line_number":585,"context_line":"    \"\"\"Checks the node address to identify is is IPv6."},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    :param node_address: the BMC address of a node."},{"line_number":588,"context_line":"    :return: True if the node address is a valid IPv6, False otherwise."},{"line_number":589,"context_line":"    \"\"\""},{"line_number":590,"context_line":"    # Ensure we have protocol in the address so the parser will"}],"source_content_type":"text/x-python","patch_set":2,"id":"2e2f979e_f61c319e","line":587,"range":{"start_line":587,"start_character":11,"end_line":587,"end_character":23},"updated":"2022-08-08 15:21:47.000000000","message":"nit: I would\u0027ve used bmc_address instead","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"15373e6bd852ed1ff66bec2a4906b5ae42dd2b09","unresolved":false,"context_lines":[{"line_number":584,"context_line":"def check_ipv6_address(node_address, node_uuid):"},{"line_number":585,"context_line":"    \"\"\"Checks the node address to identify is is IPv6."},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    :param node_address: the BMC address of a node."},{"line_number":588,"context_line":"    :return: True if the node address is a valid IPv6, False otherwise."},{"line_number":589,"context_line":"    \"\"\""},{"line_number":590,"context_line":"    # Ensure we have protocol in the address so the parser will"}],"source_content_type":"text/x-python","patch_set":2,"id":"edcaf23f_6d723508","line":587,"range":{"start_line":587,"start_character":11,"end_line":587,"end_character":23},"in_reply_to":"2e2f979e_f61c319e","updated":"2022-08-08 15:29:02.000000000","message":"Ack","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9a984b1ad6cd7fa49ddae58ee21dbeb2d37469f1","unresolved":true,"context_lines":[{"line_number":607,"context_line":"        if ipaddress.ip_address(ip).version \u003d\u003d 6:"},{"line_number":608,"context_line":"            return True"},{"line_number":609,"context_line":"        return False"},{"line_number":610,"context_line":"    except ValueError as e:"},{"line_number":611,"context_line":"        # Log a warning in case we can\u0027t identify the version and return False"},{"line_number":612,"context_line":"        LOG.warning(\u0027Failed to identify the ip address for node %s: %s.\u0027,"},{"line_number":613,"context_line":"                    node_uuid, e)"},{"line_number":614,"context_line":"        return False"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"809ce76e_9ad77a5b","line":613,"range":{"start_line":610,"start_character":0,"end_line":613,"end_character":33},"updated":"2022-08-08 18:03:36.000000000","message":"So... we\u0027re only using node_uuid for this.\n\nAnd afaik there is an oslo helper for address version type determination.\n\nSeems like the return should be\n\nTrue \u003d Yes, use v6\nFalse \u003d No, don\u0027t use v6\nNone \u003d Other error occured.\n\nOr just let value error surface to the caller since the value is in an error state...","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"6ed7fc38758b03b54217e27ea331eef06b31b9dd","unresolved":true,"context_lines":[{"line_number":607,"context_line":"        if ipaddress.ip_address(ip).version \u003d\u003d 6:"},{"line_number":608,"context_line":"            return True"},{"line_number":609,"context_line":"        return False"},{"line_number":610,"context_line":"    except ValueError as e:"},{"line_number":611,"context_line":"        # Log a warning in case we can\u0027t identify the version and return False"},{"line_number":612,"context_line":"        LOG.warning(\u0027Failed to identify the ip address for node %s: %s.\u0027,"},{"line_number":613,"context_line":"                    node_uuid, e)"},{"line_number":614,"context_line":"        return False"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"c50b005c_cc5fc4dc","line":613,"range":{"start_line":610,"start_character":0,"end_line":613,"end_character":33},"in_reply_to":"809ce76e_9ad77a5b","updated":"2022-08-09 11:23:04.000000000","message":"I\u0027m going to check if I can find the oslo helper o/\n\nletting the exception go to the caller makes sense","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"}],"ironic/conf/deploy.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9a984b1ad6cd7fa49ddae58ee21dbeb2d37469f1","unresolved":true,"context_lines":[{"line_number":37,"context_line":"               help\u003d_(\"IPv6 URL of the ironic-conductor node\u0027s HTTP server \""},{"line_number":38,"context_line":"                      \"for boot methods such as virtual media, \""},{"line_number":39,"context_line":"                      \"where images could be served outside of the \""},{"line_number":40,"context_line":"                      \"provisioning network. Does not apply when Swift is \""},{"line_number":41,"context_line":"                      \"used. Defaults to http_url.\")),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027external_callback_url\u0027,"},{"line_number":43,"context_line":"               help\u003d_(\"Agent callback URL of the bare metal API for boot \""},{"line_number":44,"context_line":"                      \"methods such as virtual media, where images could be \""}],"source_content_type":"text/x-python","patch_set":2,"id":"dbd05f39_d01e6068","line":41,"range":{"start_line":40,"start_character":26,"end_line":41,"end_character":54},"updated":"2022-08-08 18:03:36.000000000","message":"nit: We should likely stress use of DHCP and that this exists in large part because of the prevalence of IP address use.","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"}],"ironic/drivers/modules/image_utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b54996ff92e7d06ae0e3f1518564c51b94a3286c","unresolved":true,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        return urlparse.urlunparse(parsed_url)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def publish_image(self, image_file, object_name, ip_version\u003dNone):"},{"line_number":173,"context_line":"        \"\"\"Make image file downloadable."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        Depending on ironic settings, pushes given file into Swift or copies"}],"source_content_type":"text/x-python","patch_set":1,"id":"6a492960_1e8c636e","line":172,"updated":"2022-08-05 11:14:47.000000000","message":"nit: since we only care if it\u0027s V6 or not, it makes more sense to have a boolean flag","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"c1b760ef5a0f27e613a2251865060af7c7179e38","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        return urlparse.urlunparse(parsed_url)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def publish_image(self, image_file, object_name, ip_version\u003dNone):"},{"line_number":173,"context_line":"        \"\"\"Make image file downloadable."},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        Depending on ironic settings, pushes given file into Swift or copies"}],"source_content_type":"text/x-python","patch_set":1,"id":"091db783_83f4e93f","line":172,"in_reply_to":"6a492960_1e8c636e","updated":"2022-08-05 14:46:49.000000000","message":"Done","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b54996ff92e7d06ae0e3f1518564c51b94a3286c","unresolved":true,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"            http_url \u003d CONF.deploy.external_http_url or CONF.deploy.http_url"},{"line_number":225,"context_line":"            if ip_version \u003d\u003d 6:"},{"line_number":226,"context_line":"                http_url \u003d CONF.deploy.external_http_url_v6"},{"line_number":227,"context_line":"            image_url \u003d os.path.join(http_url, self._image_subdir, object_name)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        return image_url"}],"source_content_type":"text/x-python","patch_set":1,"id":"5cbfe799_4cdc24c9","line":226,"updated":"2022-08-05 11:14:47.000000000","message":"This does not allow fallback, I think it should:\n\n http_url \u003d CONF.deploy.external_http_url_v6 or http_url","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"c1b760ef5a0f27e613a2251865060af7c7179e38","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"            http_url \u003d CONF.deploy.external_http_url or CONF.deploy.http_url"},{"line_number":225,"context_line":"            if ip_version \u003d\u003d 6:"},{"line_number":226,"context_line":"                http_url \u003d CONF.deploy.external_http_url_v6"},{"line_number":227,"context_line":"            image_url \u003d os.path.join(http_url, self._image_subdir, object_name)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"        return image_url"}],"source_content_type":"text/x-python","patch_set":1,"id":"d3d15765_02bdf68d","line":226,"in_reply_to":"5cbfe799_4cdc24c9","updated":"2022-08-05 14:46:49.000000000","message":"Done","commit_id":"6be32094088a7e8ac30181642424fa24386578ce"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0385f41645a0e58ac4982d291b9e7568fb415540","unresolved":true,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        :param image_file: path to file to publish"},{"line_number":180,"context_line":"        :param object_name: name of the published file"},{"line_number":181,"context_line":"        :param is_ipv6: specify if the image should be published using IPv6 URL"},{"line_number":182,"context_line":"        :return: a URL to download published file"},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"16d3551c_436a1782","line":181,"range":{"start_line":181,"start_character":76,"end_line":181,"end_character":79},"updated":"2022-08-08 15:21:47.000000000","message":"nit: a URL can\u0027t be IPv6, maybe address ?","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"15373e6bd852ed1ff66bec2a4906b5ae42dd2b09","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"        :param image_file: path to file to publish"},{"line_number":180,"context_line":"        :param object_name: name of the published file"},{"line_number":181,"context_line":"        :param is_ipv6: specify if the image should be published using IPv6 URL"},{"line_number":182,"context_line":"        :return: a URL to download published file"},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"d0850b9a_106b37db","line":181,"range":{"start_line":181,"start_character":76,"end_line":181,"end_character":79},"in_reply_to":"16d3551c_436a1782","updated":"2022-08-08 15:29:02.000000000","message":"Ack","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9a984b1ad6cd7fa49ddae58ee21dbeb2d37469f1","unresolved":true,"context_lines":[{"line_number":300,"context_line":"              \"%(node)s\", {\u0027node\u0027: task.node.uuid})"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    # Get the address field according to the driver in use by the node."},{"line_number":303,"context_line":"    node_address \u003d task.node.driver_info.get(task.node.driver + \"_address\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":306,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.img\u0027) as vfat_image_tmpfile_obj:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5025159d_b365d618","line":303,"range":{"start_line":303,"start_character":45,"end_line":303,"end_character":74},"updated":"2022-08-08 18:03:36.000000000","message":"How would this work with the idrac hardware type, but use of redfish interfaces?","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"ea87fbfe9df828533519d20cc8ab32e4b714ba1b","unresolved":true,"context_lines":[{"line_number":300,"context_line":"              \"%(node)s\", {\u0027node\u0027: task.node.uuid})"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    # Get the address field according to the driver in use by the node."},{"line_number":303,"context_line":"    node_address \u003d task.node.driver_info.get(task.node.driver + \"_address\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":306,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.img\u0027) as vfat_image_tmpfile_obj:"}],"source_content_type":"text/x-python","patch_set":2,"id":"85a3d807_ea5b51f9","line":303,"range":{"start_line":303,"start_character":65,"end_line":303,"end_character":73},"updated":"2022-08-08 18:57:29.000000000","message":"If there is a DNS infrastructure, the address of the BMC in diver_info can be a hostname/fqdn? I belive that would break the \"is_ipv6\" check.","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0385f41645a0e58ac4982d291b9e7568fb415540","unresolved":true,"context_lines":[{"line_number":300,"context_line":"              \"%(node)s\", {\u0027node\u0027: task.node.uuid})"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    # Get the address field according to the driver in use by the node."},{"line_number":303,"context_line":"    node_address \u003d task.node.driver_info.get(task.node.driver + \"_address\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":306,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.img\u0027) as vfat_image_tmpfile_obj:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3e94eace_5101f9ab","line":303,"range":{"start_line":303,"start_character":4,"end_line":303,"end_character":16},"updated":"2022-08-08 15:21:47.000000000","message":"nit: bmc_address ?","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9a984b1ad6cd7fa49ddae58ee21dbeb2d37469f1","unresolved":true,"context_lines":[{"line_number":300,"context_line":"              \"%(node)s\", {\u0027node\u0027: task.node.uuid})"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    # Get the address field according to the driver in use by the node."},{"line_number":303,"context_line":"    node_address \u003d task.node.driver_info.get(task.node.driver + \"_address\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":306,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.img\u0027) as vfat_image_tmpfile_obj:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7fad664c_422af119","line":303,"range":{"start_line":303,"start_character":4,"end_line":303,"end_character":16},"in_reply_to":"1c7335bf_960355f3","updated":"2022-08-08 18:03:36.000000000","message":"I\u0027m leaning towards -1 over the use of the the BMC address since we know they can be mismatched.\n\nI\u0027m thinking an explicit override needs to be asserted saying \"Hey use dedicated v6 url\".\n\nRealistically, this was all about *why* dns was created. The alternative might be to provide and wire in both a v4 and v6 url in and pass it over to the client.\n\nAnd given operational sanity/being nice to operators, we can likely safely backport \"this or this\" logic into the agent.\n\nIn fact, the concept of multiple URLs is already partially wired into the agent.","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"15373e6bd852ed1ff66bec2a4906b5ae42dd2b09","unresolved":false,"context_lines":[{"line_number":300,"context_line":"              \"%(node)s\", {\u0027node\u0027: task.node.uuid})"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    # Get the address field according to the driver in use by the node."},{"line_number":303,"context_line":"    node_address \u003d task.node.driver_info.get(task.node.driver + \"_address\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":306,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.img\u0027) as vfat_image_tmpfile_obj:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1c7335bf_960355f3","line":303,"range":{"start_line":303,"start_character":4,"end_line":303,"end_character":16},"in_reply_to":"3e94eace_5101f9ab","updated":"2022-08-08 15:29:02.000000000","message":"Ack","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"6ed7fc38758b03b54217e27ea331eef06b31b9dd","unresolved":true,"context_lines":[{"line_number":300,"context_line":"              \"%(node)s\", {\u0027node\u0027: task.node.uuid})"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    # Get the address field according to the driver in use by the node."},{"line_number":303,"context_line":"    node_address \u003d task.node.driver_info.get(task.node.driver + \"_address\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":306,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.img\u0027) as vfat_image_tmpfile_obj:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e953441c_beae76a6","line":303,"range":{"start_line":303,"start_character":45,"end_line":303,"end_character":74},"in_reply_to":"5025159d_b365d618","updated":"2022-08-09 11:23:04.000000000","message":"Oh right! I need to think about this case.","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"6ed7fc38758b03b54217e27ea331eef06b31b9dd","unresolved":true,"context_lines":[{"line_number":300,"context_line":"              \"%(node)s\", {\u0027node\u0027: task.node.uuid})"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    # Get the address field according to the driver in use by the node."},{"line_number":303,"context_line":"    node_address \u003d task.node.driver_info.get(task.node.driver + \"_address\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":306,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.img\u0027) as vfat_image_tmpfile_obj:"}],"source_content_type":"text/x-python","patch_set":2,"id":"4cfcfa6c_ba77ae15","line":303,"range":{"start_line":303,"start_character":4,"end_line":303,"end_character":16},"in_reply_to":"7fad664c_422af119","updated":"2022-08-09 11:23:04.000000000","message":"So we could ideally just publish two images and provide both? (Adding logic in the agent to handle this?)","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"6ed7fc38758b03b54217e27ea331eef06b31b9dd","unresolved":true,"context_lines":[{"line_number":300,"context_line":"              \"%(node)s\", {\u0027node\u0027: task.node.uuid})"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    # Get the address field according to the driver in use by the node."},{"line_number":303,"context_line":"    node_address \u003d task.node.driver_info.get(task.node.driver + \"_address\")"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    with tempfile.NamedTemporaryFile("},{"line_number":306,"context_line":"            dir\u003dCONF.tempdir, suffix\u003d\u0027.img\u0027) as vfat_image_tmpfile_obj:"}],"source_content_type":"text/x-python","patch_set":2,"id":"53024595_c986e6ba","line":303,"range":{"start_line":303,"start_character":65,"end_line":303,"end_character":73},"in_reply_to":"85a3d807_ea5b51f9","updated":"2022-08-09 11:23:04.000000000","message":"Right, this would break (I was assuming we don\u0027t pass hostname/fqdn...)","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"877752eb3aba5265d0650dd2db7efc100a86e1d2","unresolved":true,"context_lines":[{"line_number":223,"context_line":"                shutil.copyfile(image_file, published_file)"},{"line_number":224,"context_line":"                os.chmod(published_file, self._file_permission)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"            http_url \u003d node_http_url or CONF.deploy.external_http_url or \\"},{"line_number":227,"context_line":"                CONF.deploy.http_url"},{"line_number":228,"context_line":"            image_url \u003d os.path.join(http_url, self._image_subdir, object_name)"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"b52f9f8a_e47e8481","line":226,"range":{"start_line":226,"start_character":73,"end_line":226,"end_character":74},"updated":"2022-08-10 19:25:03.000000000","message":"Nit: You know... #  noqa would have been okay too 😊\n\nSeriously though, I would have put it inside of ()","commit_id":"b8b4a97793ceb829baf5c7bc4fd7037b293e6222"},{"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":"fcca5815657d133f1d2c983a756515bcebcb948e","unresolved":true,"context_lines":[{"line_number":223,"context_line":"                shutil.copyfile(image_file, published_file)"},{"line_number":224,"context_line":"                os.chmod(published_file, self._file_permission)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"            http_url \u003d node_http_url or CONF.deploy.external_http_url or \\"},{"line_number":227,"context_line":"                CONF.deploy.http_url"},{"line_number":228,"context_line":"            image_url \u003d os.path.join(http_url, self._image_subdir, object_name)"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ec7005b3_3a74c876","line":226,"range":{"start_line":226,"start_character":73,"end_line":226,"end_character":74},"in_reply_to":"b52f9f8a_e47e8481","updated":"2022-08-10 21:56:17.000000000","message":"++","commit_id":"b8b4a97793ceb829baf5c7bc4fd7037b293e6222"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"c1a0389aadea272b467e8ed87f4ad95952e66a7d","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                shutil.copyfile(image_file, published_file)"},{"line_number":224,"context_line":"                os.chmod(published_file, self._file_permission)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"            http_url \u003d node_http_url or CONF.deploy.external_http_url or \\"},{"line_number":227,"context_line":"                CONF.deploy.http_url"},{"line_number":228,"context_line":"            image_url \u003d os.path.join(http_url, self._image_subdir, object_name)"},{"line_number":229,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"40863c2e_4f861bf8","line":226,"range":{"start_line":226,"start_character":73,"end_line":226,"end_character":74},"in_reply_to":"ec7005b3_3a74c876","updated":"2022-08-10 23:51:56.000000000","message":"Done","commit_id":"b8b4a97793ceb829baf5c7bc4fd7037b293e6222"}],"releasenotes/notes/external-ipv6-745bb2c028bb56a0.yaml":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0385f41645a0e58ac4982d291b9e7568fb415540","unresolved":true,"context_lines":[{"line_number":4,"context_line":"    Provides operator ability to override URL settings required for"},{"line_number":5,"context_line":"    provisioning/cleaning in the event of virtual media based deployment"},{"line_number":6,"context_line":"    in scenarios where the IPv6 is required."},{"line_number":7,"context_line":"    Set these new configuration options using an IPv6 address that is "},{"line_number":8,"context_line":"    available to these nodes (both the ramdisk and the BMCs)::"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"      [deploy]"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"dc04dd7a_ebe7f12a","line":7,"range":{"start_line":7,"start_character":69,"end_line":7,"end_character":70},"updated":"2022-08-08 15:21:47.000000000","message":"nit: blank space","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"15373e6bd852ed1ff66bec2a4906b5ae42dd2b09","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Provides operator ability to override URL settings required for"},{"line_number":5,"context_line":"    provisioning/cleaning in the event of virtual media based deployment"},{"line_number":6,"context_line":"    in scenarios where the IPv6 is required."},{"line_number":7,"context_line":"    Set these new configuration options using an IPv6 address that is "},{"line_number":8,"context_line":"    available to these nodes (both the ramdisk and the BMCs)::"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"      [deploy]"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"68f735a2_efc6ac63","line":7,"range":{"start_line":7,"start_character":69,"end_line":7,"end_character":70},"in_reply_to":"dc04dd7a_ebe7f12a","updated":"2022-08-08 15:29:02.000000000","message":"Ack","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"0385f41645a0e58ac4982d291b9e7568fb415540","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    available to these nodes (both the ramdisk and the BMCs)::"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"      [deploy]"},{"line_number":11,"context_line":"      external_http_url_v6 \u003d \u003croutable v6 URL of the HTTP server\u003e"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"426efa62_c3f3ab3e","line":11,"range":{"start_line":11,"start_character":39,"end_line":11,"end_character":46},"updated":"2022-08-08 15:21:47.000000000","message":"nit: IPv6 address or URL translated to IPv6 address","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"15373e6bd852ed1ff66bec2a4906b5ae42dd2b09","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    available to these nodes (both the ramdisk and the BMCs)::"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"      [deploy]"},{"line_number":11,"context_line":"      external_http_url_v6 \u003d \u003croutable v6 URL of the HTTP server\u003e"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ea52f46c_d6a6bfea","line":11,"range":{"start_line":11,"start_character":39,"end_line":11,"end_character":46},"in_reply_to":"426efa62_c3f3ab3e","updated":"2022-08-08 15:29:02.000000000","message":"Ack","commit_id":"07da2142f4fa3b65b3c2f1ec4e973a197917d6f9"}],"releasenotes/notes/override-external_http_url-per-node-f5423b00b373e528.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"877752eb3aba5265d0650dd2db7efc100a86e1d2","unresolved":true,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Nodes using virtual media can now specify their own external URL."},{"line_number":5,"context_line":"    The URL needs to be added in ``driver_info[\u0027external_http_url\u0027]``,"},{"line_number":6,"context_line":"    if set the values set in the configuration file for "},{"line_number":7,"context_line":"    ``[deploy]http_url`` and ``[deploy]external_http_url`` won\u0027t be used"},{"line_number":8,"context_line":"    to define the URL for the image."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"bec31680_d3ca7ddf","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":70},"updated":"2022-08-10 19:25:03.000000000","message":"So this is along the lines of the python data structure name, but end users don\u0027t know the internals. \n\nI would have stated \"in the node level ``driver_info\\external_http_url`` setting.\"\n\nPerhaps \"This setting can be leveraged via the ``driver_info\\external_http_url`` setting. When used, the configuration file ``[deploy]http_url`` and ``[deploy]external_http_url`` settings are overridden.\"\n\nOr \"When used, this setting overrides the ``[deploy]http_url`` and ``[deploy]external_http_url`` settings in the configuration file.","commit_id":"b8b4a97793ceb829baf5c7bc4fd7037b293e6222"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"c1a0389aadea272b467e8ed87f4ad95952e66a7d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Nodes using virtual media can now specify their own external URL."},{"line_number":5,"context_line":"    The URL needs to be added in ``driver_info[\u0027external_http_url\u0027]``,"},{"line_number":6,"context_line":"    if set the values set in the configuration file for "},{"line_number":7,"context_line":"    ``[deploy]http_url`` and ``[deploy]external_http_url`` won\u0027t be used"},{"line_number":8,"context_line":"    to define the URL for the image."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"e6c9971b_b547cd7f","line":5,"range":{"start_line":5,"start_character":33,"end_line":5,"end_character":70},"in_reply_to":"bec31680_d3ca7ddf","updated":"2022-08-10 23:51:56.000000000","message":"Ack","commit_id":"b8b4a97793ceb829baf5c7bc4fd7037b293e6222"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"877752eb3aba5265d0650dd2db7efc100a86e1d2","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Nodes using virtual media can now specify their own external URL."},{"line_number":5,"context_line":"    The URL needs to be added in ``driver_info[\u0027external_http_url\u0027]``,"},{"line_number":6,"context_line":"    if set the values set in the configuration file for "},{"line_number":7,"context_line":"    ``[deploy]http_url`` and ``[deploy]external_http_url`` won\u0027t be used"},{"line_number":8,"context_line":"    to define the URL for the image."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"eec594d1_fc9cdeea","line":6,"updated":"2022-08-10 19:25:03.000000000","message":"white space :)","commit_id":"b8b4a97793ceb829baf5c7bc4fd7037b293e6222"},{"author":{"_account_id":15519,"name":"Iury Gregory Melo Ferreira","display_name":"Iury Gregory","email":"iurygregory@gmail.com","username":"iurygregory"},"change_message_id":"c1a0389aadea272b467e8ed87f4ad95952e66a7d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Nodes using virtual media can now specify their own external URL."},{"line_number":5,"context_line":"    The URL needs to be added in ``driver_info[\u0027external_http_url\u0027]``,"},{"line_number":6,"context_line":"    if set the values set in the configuration file for "},{"line_number":7,"context_line":"    ``[deploy]http_url`` and ``[deploy]external_http_url`` won\u0027t be used"},{"line_number":8,"context_line":"    to define the URL for the image."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"58189d70_20a2063c","line":6,"in_reply_to":"eec594d1_fc9cdeea","updated":"2022-08-10 23:51:56.000000000","message":"Done","commit_id":"b8b4a97793ceb829baf5c7bc4fd7037b293e6222"}]}
