)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cbee3d2687dc7a06e8650ea646374afdf8188346","unresolved":false,"context_lines":[{"line_number":17,"context_line":"- live_migration_scheme"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"These options are necessary to allow full configuration of the live"},{"line_number":20,"context_line":"migration URI without incurring the issues caused by"},{"line_number":21,"context_line":"\u0027live_migration_uri\u0027."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The help text for existing options is clarified."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"df140735_3231fded","line":21,"range":{"start_line":20,"start_character":22,"end_line":21,"end_character":21},"updated":"2017-06-07 17:03:07.000000000","message":"I\u0027m beginning to wonder what those issues were, because now it seems we\u0027re just adding yet even more options when all we really want here is a URI override, sort of like what we do with config options to talk to cinder/neutron/glance/ironic endpoints. Wouldn\u0027t it almost be easier to just undeprecate live_migration_uri?","commit_id":"f6297eebb2f2e09ec0ccab3412129a0b37781ce3"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"3bfc06eaf9e715f6b7962a1afcb997fe5bb35db5","unresolved":false,"context_lines":[{"line_number":17,"context_line":"- live_migration_scheme"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"These options are necessary to allow full configuration of the live"},{"line_number":20,"context_line":"migration URI without incurring the issues caused by"},{"line_number":21,"context_line":"\u0027live_migration_uri\u0027."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The help text for existing options is clarified."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf091321_97d0c2f9","line":21,"range":{"start_line":20,"start_character":22,"end_line":21,"end_character":21},"in_reply_to":"bf091321_796f71c5","updated":"2017-06-08 14:54:47.000000000","message":"Nothing to do with oslo.config. It\u0027s the python % string formatting in nova that\u0027s the issue.\n\nIt\u0027s a uri, and we can have a urlencoded query string (e.g to set the ssh key). However we need to s/%/%%/g in the querystring to prevent a \u0027TypeError: not enough arguments for format string\u0027 exception.\n\nWe could fix this in nova, e.g use string.replace(\u0027%s\u0027, foobar) instead,  but this would be a breaking change for anyone that has already worked around the issue.\n\nThe new params allow us to use live_migration_scheme + live_migration_inbound_addr instead and deprecate this broken param.\n\nThe were LP bugs for this IIRC, I\u0027ll dig them up.","commit_id":"f6297eebb2f2e09ec0ccab3412129a0b37781ce3"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2bdd92f05be14834fc465756cb2b7cdebb566d6e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"- live_migration_scheme"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"These options are necessary to allow full configuration of the live"},{"line_number":20,"context_line":"migration URI without incurring the issues caused by"},{"line_number":21,"context_line":"\u0027live_migration_uri\u0027."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The help text for existing options is clarified."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf091321_796f71c5","line":21,"range":{"start_line":20,"start_character":22,"end_line":21,"end_character":21},"in_reply_to":"df140735_3231fded","updated":"2017-06-08 08:48:50.000000000","message":"There are a couple of reasons that the \u0027live_migration_uri\u0027 option shouldn\u0027t be used and I wrote them down...somewhere :/ The only one I can think of now is that the the string it uses relies of printf string formatting (i.e. %s). However, because of how oslo.config works you need to double escape these strings. This has proven very confusing for people. There are other, more significant issues associated with it but I\u0027m trying to find my notes on these","commit_id":"f6297eebb2f2e09ec0ccab3412129a0b37781ce3"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"f92e4c988548604465ff21be155d6371913d79bf","unresolved":false,"context_lines":[{"line_number":12,"context_line":"- live_migration_extra_params"},{"line_number":13,"context_line":"- live_migration_port"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"These compliment an existing option:"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"- live_migration_scheme"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"df3967d1_abc9d778","line":15,"range":{"start_line":15,"start_character":6,"end_line":15,"end_character":16},"updated":"2017-08-01 15:56:32.000000000","message":"complement","commit_id":"fcdb9177f5efe6c6ba43c43fdce61977d3f0740f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7ed00d64f3751b71142b676e24ce755ac9e8e137","unresolved":false,"context_lines":[{"line_number":17,"context_line":"- live_migration_scheme"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"These options are necessary to allow full configuration of the live"},{"line_number":20,"context_line":"migration URI without incurring the issues caused by"},{"line_number":21,"context_line":"\u0027live_migration_uri\u0027."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"The help text for existing options is clarified."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"7f287b81_266c359b","line":21,"range":{"start_line":20,"start_character":36,"end_line":21,"end_character":21},"updated":"2017-09-01 14:16:08.000000000","message":"It would be helpful to enumerate some of the issues with live_migration_uri. And also explain why we need all of the parts to configure to make the URI when one might think, \"why can\u0027t I just configure nova to use a single live migration URI in the first place?\". The answer is, only nova knows the destination host/ip during the live migration, which we have to substitute into the live_migration_uri, which is part of the problem when we don\u0027t have a good way to replace the other parts of the URI like credentials and query parameters. So we need something that handles string replacement for the host. This should be explained a bit in the commit message because this is a confusing set of options to be dealing with so we should know what we\u0027re fixing, and how and why.","commit_id":"fcdb9177f5efe6c6ba43c43fdce61977d3f0740f"},{"author":{"_account_id":6962,"name":"Kashyap Chamarthy","email":"kchamart@redhat.com","username":"kashyapc"},"change_message_id":"cbcc865dae1f69d34d98a44de38006772927a87a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"conf: Add three new \u0027[libvirt] live_migration_*\u0027 options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova uses libvirt-python\u0027s migrateToUri2 and migrateToUri3 functions,"},{"line_number":10,"context_line":"which are wrappers around the virDomainMigrateToURI2 [1] and"},{"line_number":11,"context_line":"virDomainMigrateToURI3 [2] C functions, to live migrate instances. As"},{"line_number":12,"context_line":"their name would suggest, these functions require a destination URI and"},{"line_number":13,"context_line":"the format of that URI can vary by hypervisor and deployment."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_edd25434","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":39},"updated":"2018-08-22 09:20:38.000000000","message":"Please update this bit, as it is no longer true—we\u0027ve recently removed[*] usage of the older migrateToURI{2}() APIs, and added the migrateToURI3(), as Nova\u0027s minimum libvirt version satisfies the requirement.\n\n[*] http://git.openstack.org/cgit/openstack/nova/commit/?id\u003d4b3e877","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3157bacec677ec889963857ba417483772b69e6e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"conf: Add three new \u0027[libvirt] live_migration_*\u0027 options"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Nova uses libvirt-python\u0027s migrateToUri2 and migrateToUri3 functions,"},{"line_number":10,"context_line":"which are wrappers around the virDomainMigrateToURI2 [1] and"},{"line_number":11,"context_line":"virDomainMigrateToURI3 [2] C functions, to live migrate instances. As"},{"line_number":12,"context_line":"their name would suggest, these functions require a destination URI and"},{"line_number":13,"context_line":"the format of that URI can vary by hypervisor and deployment."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_c80bc621","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":39},"in_reply_to":"3f79a3b5_edd25434","updated":"2018-08-22 09:58:37.000000000","message":"Done","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"b20eaec63aa12143b55baa22978b706da6415ce3","unresolved":false,"context_lines":[{"line_number":30,"context_line":"(admittedly minimal) smarts here, even if they only wished to override"},{"line_number":31,"context_line":"one component of the URI. More importantly though, as seen above, this"},{"line_number":32,"context_line":"used printf-style string formatting and, due to a quirk in"},{"line_number":33,"context_line":"\u0027oslo.config\u0027, required escaping of the formatting characters (\u0027%%\u0027"},{"line_number":34,"context_line":"instead of \u0027%\u0027). This was a common source of user-error that was not"},{"line_number":35,"context_line":"possible to resolve without breaking changes to the option. As a result,"},{"line_number":36,"context_line":"the \u0027[libvirt] live_migration_scheme\u0027 option was added, which allowed"},{"line_number":37,"context_line":"users to modify nova\u0027s auto-generated URIs slightly to reflect their"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_164b54b0","line":34,"range":{"start_line":33,"start_character":15,"end_line":34,"end_character":15},"updated":"2018-08-08 07:17:32.000000000","message":"it seems things have changed a bit. \u0027%%\u0027 is not required now","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3157bacec677ec889963857ba417483772b69e6e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"(admittedly minimal) smarts here, even if they only wished to override"},{"line_number":31,"context_line":"one component of the URI. More importantly though, as seen above, this"},{"line_number":32,"context_line":"used printf-style string formatting and, due to a quirk in"},{"line_number":33,"context_line":"\u0027oslo.config\u0027, required escaping of the formatting characters (\u0027%%\u0027"},{"line_number":34,"context_line":"instead of \u0027%\u0027). This was a common source of user-error that was not"},{"line_number":35,"context_line":"possible to resolve without breaking changes to the option. As a result,"},{"line_number":36,"context_line":"the \u0027[libvirt] live_migration_scheme\u0027 option was added, which allowed"},{"line_number":37,"context_line":"users to modify nova\u0027s auto-generated URIs slightly to reflect their"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3f79a3b5_6812b25a","line":34,"range":{"start_line":33,"start_character":15,"end_line":34,"end_character":15},"in_reply_to":"3f79a3b5_164b54b0","updated":"2018-08-22 09:58:37.000000000","message":"I\u0027m still seeing it as necessary. What did you do to try this?","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"81b6fd68ba9f3d5c4ec63a12351b1274619ef92b","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"The combination of these options will allow full configuration of the"},{"line_number":57,"context_line":"live migration URI without incurring the issues caused by \u0027[libvirt]"},{"line_number":58,"context_line":"live_migration_uri\u0027 and allow us to finally deprecated that option in a"},{"line_number":59,"context_line":"future release."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"The help text for existing options is clarified."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"5faad753_7baa6c71","line":58,"range":{"start_line":58,"start_character":44,"end_line":58,"end_character":54},"updated":"2019-09-13 11:20:43.000000000","message":"typo: deprecate","commit_id":"8600a4b233ab267ac39f7883e746a2ce007865e6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"88714f1ee4893633195901294f3e204d23928dce","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"The combination of these options will allow full configuration of the"},{"line_number":57,"context_line":"live migration URI without incurring the issues caused by \u0027[libvirt]"},{"line_number":58,"context_line":"live_migration_uri\u0027 and allow us to finally deprecated that option in a"},{"line_number":59,"context_line":"future release."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"The help text for existing options is clarified."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"3fa7e38b_e09282f6","line":58,"range":{"start_line":58,"start_character":44,"end_line":58,"end_character":54},"in_reply_to":"5faad753_7baa6c71","updated":"2019-09-19 15:42:22.000000000","message":"Done","commit_id":"8600a4b233ab267ac39f7883e746a2ce007865e6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f83a69d547bd8a6a287f54b523c4fac8f70bbee","unresolved":false,"context_lines":[{"line_number":17,"context_line":"for the configured hypervisor assuming an otherwise default"},{"line_number":18,"context_line":"configuration. This is expected to cover 90% of use cases but the URI"},{"line_number":19,"context_line":"generated may not be suitable for deployments with non-default"},{"line_number":20,"context_line":"configuration, such as those using libvirt with a transport other than"},{"line_number":21,"context_line":"TCP. To support these deployments, nova has historically used the"},{"line_number":22,"context_line":"\u0027[libvirt] live_migration_uri\u0027 configuration option, which allowed"},{"line_number":23,"context_line":"deployers to specify a templated URI string which nova could then"},{"line_number":24,"context_line":"populate with the destination hostname or IP. For example:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_128b111f","line":21,"range":{"start_line":20,"start_character":14,"end_line":21,"end_character":3},"updated":"2020-03-27 13:05:22.000000000","message":"i thought we defaulted to the ssh transport. but i guess not.","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f83a69d547bd8a6a287f54b523c4fac8f70bbee","unresolved":false,"context_lines":[{"line_number":24,"context_line":"populate with the destination hostname or IP. For example:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"  [libvirt]"},{"line_number":27,"context_line":"  live_migration_uri \u003d qemu+ssh://myuser@%%s/system"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"This requires the user to fully define the URI, ignoring nova\u0027s"},{"line_number":30,"context_line":"(admittedly minimal) smarts here, even if they only wished to override"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_124dd199","line":27,"range":{"start_line":27,"start_character":2,"end_line":27,"end_character":51},"updated":"2020-03-27 13:05:22.000000000","message":"later: ok so looking at https://bugs.launchpad.net/nova/+bug/1677913 this example is incorrect.\n\nyou only need to double escape if you want a % since this uri is processed with python sting formating.\n\nlive_migration_uri \u003d qemu+ssh://myuser@%%s/system\n\nshould be \nlive_migration_uri \u003d qemu+ssh://myuser@%s/system\n\nyou sould only need to do %% in an extra parmater if that paramater contained a %\nlooking at the list of them in not sure it woudl make sense to have a % in any of them \nhttps://libvirt.org/uri.html#Remote_URI_parameters\n\nthis is the migration url i alwasy use\nlive_migration_uri \u003d qemu+ssh://root@%s/system\n\nand i know that works.","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"47b42e7cdf2f7c260684a48b01b94696c6eb6401","unresolved":false,"context_lines":[{"line_number":24,"context_line":"populate with the destination hostname or IP. For example:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"  [libvirt]"},{"line_number":27,"context_line":"  live_migration_uri \u003d qemu+ssh://myuser@%%s/system"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"This requires the user to fully define the URI, ignoring nova\u0027s"},{"line_number":30,"context_line":"(admittedly minimal) smarts here, even if they only wished to override"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1f493fa4_0db15d90","line":27,"range":{"start_line":27,"start_character":2,"end_line":27,"end_character":51},"in_reply_to":"df33271e_124dd199","updated":"2020-05-06 14:12:38.000000000","message":"Done","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"70b157807cea308caeb36eb3f7329808f73b836c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"populate with the destination hostname or IP. For example:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"  [libvirt]"},{"line_number":27,"context_line":"  live_migration_uri \u003d qemu+ssh://myuser@%%s/system"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"This requires the user to fully define the URI, ignoring nova\u0027s"},{"line_number":30,"context_line":"(admittedly minimal) smarts here, even if they only wished to override"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_0aeef6eb","line":27,"range":{"start_line":27,"start_character":2,"end_line":27,"end_character":51},"in_reply_to":"df33271e_124dd199","updated":"2020-03-31 14:38:51.000000000","message":"indeed, the example is incorrect","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f83a69d547bd8a6a287f54b523c4fac8f70bbee","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"This requires the user to fully define the URI, ignoring nova\u0027s"},{"line_number":30,"context_line":"(admittedly minimal) smarts here, even if they only wished to override"},{"line_number":31,"context_line":"one component of the URI. More importantly though, as seen above, this"},{"line_number":32,"context_line":"used printf-style string formatting and, due to a quirk in"},{"line_number":33,"context_line":"\u0027oslo.config\u0027, required escaping of the formatting characters (\u0027%%\u0027"},{"line_number":34,"context_line":"instead of \u0027%\u0027). This was a common source of user-error that was not"},{"line_number":35,"context_line":"possible to resolve without breaking changes to the option. As a result,"},{"line_number":36,"context_line":"the \u0027[libvirt] live_migration_scheme\u0027 option was added, which allowed"},{"line_number":37,"context_line":"users to modify nova\u0027s auto-generated URIs slightly to reflect their"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_6d0efc32","line":34,"range":{"start_line":31,"start_character":26,"end_line":34,"end_character":17},"updated":"2020-03-27 13:05:22.000000000","message":"that is not actully correct. this is use python string formatting not printf style and  whild you do have to do %% \nwhen you want a literal % if you expalin that as suggested in\nhttps://bugs.launchpad.net/nova/+bug/1677913/comments/2\nim not sure that is a problem.\n\nthe doc string should expalin that the uri will be fromated using python formating and one required argument will be provided representing the destination host.","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"47b42e7cdf2f7c260684a48b01b94696c6eb6401","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"This requires the user to fully define the URI, ignoring nova\u0027s"},{"line_number":30,"context_line":"(admittedly minimal) smarts here, even if they only wished to override"},{"line_number":31,"context_line":"one component of the URI. More importantly though, as seen above, this"},{"line_number":32,"context_line":"used printf-style string formatting and, due to a quirk in"},{"line_number":33,"context_line":"\u0027oslo.config\u0027, required escaping of the formatting characters (\u0027%%\u0027"},{"line_number":34,"context_line":"instead of \u0027%\u0027). This was a common source of user-error that was not"},{"line_number":35,"context_line":"possible to resolve without breaking changes to the option. As a result,"},{"line_number":36,"context_line":"the \u0027[libvirt] live_migration_scheme\u0027 option was added, which allowed"},{"line_number":37,"context_line":"users to modify nova\u0027s auto-generated URIs slightly to reflect their"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1f493fa4_4dab651c","line":34,"range":{"start_line":31,"start_character":26,"end_line":34,"end_character":17},"in_reply_to":"df33271e_6d0efc32","updated":"2020-05-06 14:12:38.000000000","message":"Done","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f83a69d547bd8a6a287f54b523c4fac8f70bbee","unresolved":false,"context_lines":[{"line_number":31,"context_line":"one component of the URI. More importantly though, as seen above, this"},{"line_number":32,"context_line":"used printf-style string formatting and, due to a quirk in"},{"line_number":33,"context_line":"\u0027oslo.config\u0027, required escaping of the formatting characters (\u0027%%\u0027"},{"line_number":34,"context_line":"instead of \u0027%\u0027). This was a common source of user-error that was not"},{"line_number":35,"context_line":"possible to resolve without breaking changes to the option. As a result,"},{"line_number":36,"context_line":"the \u0027[libvirt] live_migration_scheme\u0027 option was added, which allowed"},{"line_number":37,"context_line":"users to modify nova\u0027s auto-generated URIs slightly to reflect their"},{"line_number":38,"context_line":"chosen transport, without having to resort to the \u0027live_migration_uri\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_92d1e1fe","line":35,"range":{"start_line":34,"start_character":56,"end_line":35,"end_character":59},"updated":"2020-03-27 13:05:22.000000000","message":"im not entirely sure that is true but ill admit i have not looked at the oslo config code to determin why so ill take your word for it.","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"70b157807cea308caeb36eb3f7329808f73b836c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"one component of the URI. More importantly though, as seen above, this"},{"line_number":32,"context_line":"used printf-style string formatting and, due to a quirk in"},{"line_number":33,"context_line":"\u0027oslo.config\u0027, required escaping of the formatting characters (\u0027%%\u0027"},{"line_number":34,"context_line":"instead of \u0027%\u0027). This was a common source of user-error that was not"},{"line_number":35,"context_line":"possible to resolve without breaking changes to the option. As a result,"},{"line_number":36,"context_line":"the \u0027[libvirt] live_migration_scheme\u0027 option was added, which allowed"},{"line_number":37,"context_line":"users to modify nova\u0027s auto-generated URIs slightly to reflect their"},{"line_number":38,"context_line":"chosen transport, without having to resort to the \u0027live_migration_uri\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_8aa8468c","line":35,"range":{"start_line":34,"start_character":56,"end_line":35,"end_character":59},"in_reply_to":"df33271e_92d1e1fe","updated":"2020-03-31 14:38:51.000000000","message":"don\u0027t think oslo has anything to do with this. We have to replace % with %% because nova does:\n\n\n   uri % (dest,)\n\nE.g:\n\n    \u003e\u003e\u003e \u0027qemu+ssh://%s/system?keyfile\u003d%%2Froot%%2F.ssh%%2Fexample_key\u0027 % (\u0027foo\u0027,)\n    \u0027qemu+ssh://foo/system?keyfile\u003d%2Froot%2F.ssh%2Fexample_key\u0027\n    \u003e\u003e\u003e \u0027qemu+ssh://%s/system?keyfile\u003d%2Froot%2F.ssh%2Fexample_key\u0027 % (\u0027foo\u0027,)\n    Traceback (most recent call last):\n      File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n    TypeError: not enough arguments for format string","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f83a69d547bd8a6a287f54b523c4fac8f70bbee","unresolved":false,"context_lines":[{"line_number":42,"context_line":"handled by nova), we do not handle the three other components of a URI:"},{"line_number":43,"context_line":"username, port, and extra parameters."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  driver[+transport]://[username@][hostname][:port]/[path][?extraparameters]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"As a result, it is not yet possible to remove \u0027[libvirt]"},{"line_number":48,"context_line":"live_migration_uri\u0027. To resolve this issue and close the gap, we must"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_12b951cb","line":45,"range":{"start_line":45,"start_character":52,"end_line":45,"end_character":58},"updated":"2020-03-27 13:05:22.000000000","message":"do we have a way to specify the path.\n\ni know this is normally use /system but if we are moving people off of the migration uri we need to expose each part.","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"47b42e7cdf2f7c260684a48b01b94696c6eb6401","unresolved":false,"context_lines":[{"line_number":42,"context_line":"handled by nova), we do not handle the three other components of a URI:"},{"line_number":43,"context_line":"username, port, and extra parameters."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  driver[+transport]://[username@][hostname][:port]/[path][?extraparameters]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"As a result, it is not yet possible to remove \u0027[libvirt]"},{"line_number":48,"context_line":"live_migration_uri\u0027. To resolve this issue and close the gap, we must"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"1f493fa4_ad166954","line":45,"range":{"start_line":45,"start_character":52,"end_line":45,"end_character":58},"in_reply_to":"df33271e_12b951cb","updated":"2020-05-06 14:12:38.000000000","message":"Done\n\nAdded live_migration_path to change URI path.","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f83a69d547bd8a6a287f54b523c4fac8f70bbee","unresolved":false,"context_lines":[{"line_number":53,"context_line":"- live_migration_port"},{"line_number":54,"context_line":"- live_migration_extra_params"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"The combination of these options will allow full configuration of the"},{"line_number":57,"context_line":"live migration URI without incurring the issues caused by \u0027[libvirt]"},{"line_number":58,"context_line":"live_migration_uri\u0027 and allow us to finally deprecate that option in a"},{"line_number":59,"context_line":"future release."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"df33271e_d2db6918","line":56,"range":{"start_line":56,"start_character":44,"end_line":56,"end_character":49},"updated":"2020-03-27 13:05:22.000000000","message":"again i think the path is missing","commit_id":"213be8043423117407c4577330d5b073735e3d8f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9fe014ec962c24080c5415a9cf5a6c79d5893ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"f2c71a97_5e33f492","updated":"2023-08-09 11:12:38.000000000","message":"we need to discuss if we even want to proceed in this direction any more.\ni was never in favor of doing this conversion in the first place and this start 6 years ago and has not been dicussed in a long time.","commit_id":"bec03cbc2e429592ea3d15dffc876d7797d30fcf"}],"nova/conf/libvirt.py":[{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"dfa9d7687b25f2851af3e12cbe3998385510801b","unresolved":false,"context_lines":[{"line_number":261,"context_line":"selecting a suitable default driver and transport, and should be preferred"},{"line_number":262,"context_line":"where possible."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"The format of this string is provided in the `libvirt documentation"},{"line_number":265,"context_line":"\u003chttps://libvirt.org/remote.html#Remote_URI_reference\u003e`_. Any included ``%s``"},{"line_number":266,"context_line":"is replaced with the migration target hostname. For example::"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    qemu+ssh://nova@%s/system?keyfile\u003d/var/lib/nova/.ssh/id_rsa\u0026no_tty\u003d1"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"If this option is set to None (which is the default), Nova will default to"},{"line_number":271,"context_line":"using the ``live_migration_scheme`` and ``live_migration_inbound_addr``"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ff52f3f_1d47344e","line":268,"range":{"start_line":264,"start_character":0,"end_line":268,"end_character":72},"updated":"2017-04-13 14:30:56.000000000","message":"To resolve https://bugs.launchpad.net/nova/+bug/1677913, this section should state that any \"%\" intended to be rendered in the final URI will need to be escaped like \"%%\"","commit_id":"ec68cb157f77671d6a9c9f3398147532137b2314"},{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"b20eaec63aa12143b55baa22978b706da6415ce3","unresolved":false,"context_lines":[{"line_number":359,"context_line":"    cfg.DictOpt(\u0027live_migration_extra_parameters\u0027,"},{"line_number":360,"context_line":"                advanced\u003dTrue,"},{"line_number":361,"context_line":"                help\u003d\"\"\""},{"line_number":362,"context_line":"Extra parameters to provide to the live migration destination."},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"Refer to the `libvirt documentation"},{"line_number":365,"context_line":"\u003chttps://libvirt.org/remote.html#Remote_URI_reference\u003e`_ for more information."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_56846cb1","line":362,"range":{"start_line":362,"start_character":0,"end_line":362,"end_character":62},"updated":"2018-08-08 07:17:32.000000000","message":"i GUESS the parameters are in the format of a dict; so maybe it would be nicer if an example is provided here","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3157bacec677ec889963857ba417483772b69e6e","unresolved":false,"context_lines":[{"line_number":359,"context_line":"    cfg.DictOpt(\u0027live_migration_extra_parameters\u0027,"},{"line_number":360,"context_line":"                advanced\u003dTrue,"},{"line_number":361,"context_line":"                help\u003d\"\"\""},{"line_number":362,"context_line":"Extra parameters to provide to the live migration destination."},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"Refer to the `libvirt documentation"},{"line_number":365,"context_line":"\u003chttps://libvirt.org/remote.html#Remote_URI_reference\u003e`_ for more information."}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_a808ca27","line":362,"range":{"start_line":362,"start_character":0,"end_line":362,"end_character":62},"in_reply_to":"3f79a3b5_56846cb1","updated":"2018-08-22 09:58:37.000000000","message":"Hmm, I\u0027m always reluctant to provide examples in case they age poorly. I suppose I can do it here though","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"81b6fd68ba9f3d5c4ec63a12351b1274619ef92b","unresolved":false,"context_lines":[{"line_number":244,"context_line":"  an effect."},{"line_number":245,"context_line":"\"\"\"),"},{"line_number":246,"context_line":"    cfg.StrOpt(\u0027live_migration_scheme\u0027,"},{"line_number":247,"context_line":"               advanced\u003dTrue,"},{"line_number":248,"context_line":"               help\u003d\"\"\""},{"line_number":249,"context_line":"URI scheme used for live migration."},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5faad753_bbcd4467","line":247,"range":{"start_line":247,"start_character":15,"end_line":247,"end_character":23},"updated":"2019-09-13 11:20:43.000000000","message":"For my own instruction, what does this do?","commit_id":"8600a4b233ab267ac39f7883e746a2ce007865e6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"ec0a393c7cdfe46f385d9c0d8156ae607c728b9f","unresolved":false,"context_lines":[{"line_number":244,"context_line":"  an effect."},{"line_number":245,"context_line":"\"\"\"),"},{"line_number":246,"context_line":"    cfg.StrOpt(\u0027live_migration_scheme\u0027,"},{"line_number":247,"context_line":"               advanced\u003dTrue,"},{"line_number":248,"context_line":"               help\u003d\"\"\""},{"line_number":249,"context_line":"URI scheme used for live migration."},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5faad753_fb43bc6a","line":247,"range":{"start_line":247,"start_character":15,"end_line":247,"end_character":23},"in_reply_to":"5faad753_bbcd4467","updated":"2019-09-13 11:29:07.000000000","message":"I think you can refer this[1] to find how it works.\n\n[1] https://docs.openstack.org/oslo.config/latest/reference/defining.html#advanced-option\n\nIt seems that the flag is used to show the option as advanced one in auto generated config file.","commit_id":"8600a4b233ab267ac39f7883e746a2ce007865e6"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"81b6fd68ba9f3d5c4ec63a12351b1274619ef92b","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    cfg.DictOpt(\u0027live_migration_extra_parameters\u0027,"},{"line_number":325,"context_line":"                advanced\u003dTrue,"},{"line_number":326,"context_line":"                help\u003d\"\"\""},{"line_number":327,"context_line":"Extra parameters to provide to the live migration destination."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"Refer to the `libvirt documentation"},{"line_number":330,"context_line":"\u003chttps://libvirt.org/remote.html#Remote_URI_reference\u003e`_ for more information."}],"source_content_type":"text/x-python","patch_set":10,"id":"5faad753_9bd5e8e7","line":327,"range":{"start_line":327,"start_character":0,"end_line":327,"end_character":62},"updated":"2019-09-13 11:20:43.000000000","message":"Do we need to more explicit in this help? I didn\u0027t notice that this was a Dict until I saw the unit test, people could assume this is a string like the rest of them.","commit_id":"8600a4b233ab267ac39f7883e746a2ce007865e6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"88714f1ee4893633195901294f3e204d23928dce","unresolved":false,"context_lines":[{"line_number":324,"context_line":"    cfg.DictOpt(\u0027live_migration_extra_parameters\u0027,"},{"line_number":325,"context_line":"                advanced\u003dTrue,"},{"line_number":326,"context_line":"                help\u003d\"\"\""},{"line_number":327,"context_line":"Extra parameters to provide to the live migration destination."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"Refer to the `libvirt documentation"},{"line_number":330,"context_line":"\u003chttps://libvirt.org/remote.html#Remote_URI_reference\u003e`_ for more information."}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_a0beca62","line":327,"range":{"start_line":327,"start_character":0,"end_line":327,"end_character":62},"in_reply_to":"5faad753_9bd5e8e7","updated":"2019-09-19 15:42:22.000000000","message":"Done","commit_id":"8600a4b233ab267ac39f7883e746a2ce007865e6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f83a69d547bd8a6a287f54b523c4fac8f70bbee","unresolved":false,"context_lines":[{"line_number":357,"context_line":"generate the `live_migration_uri` value based on only 4 supported `virt_type`"},{"line_number":358,"context_line":"in following list:"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"* \u0027kvm\u0027: \u0027qemu+tcp://%s/system\u0027"},{"line_number":361,"context_line":"* \u0027qemu\u0027: \u0027qemu+tcp://%s/system\u0027"},{"line_number":362,"context_line":"* \u0027xen\u0027: \u0027xenmigr://%s/system\u0027"},{"line_number":363,"context_line":"* \u0027parallels\u0027: \u0027parallels+tcp://%s/system\u0027"},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"Related options:"},{"line_number":366,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_f2178da2","line":363,"range":{"start_line":360,"start_character":0,"end_line":363,"end_character":42},"updated":"2020-03-27 13:05:22.000000000","message":"so are these example incorrect?\n\nthis is the migration url that i always used\nlive_migration_uri \u003d qemu+ssh://root@%s/system\nand i know that works.","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"eaeaab8c3aeabcddd7f0e431997a5fccfe1b22eb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# needs:fix_opt_description"},{"line_number":2,"context_line":"# needs:check_deprecation_status"},{"line_number":3,"context_line":"# needs:check_opt_group_and_type"},{"line_number":4,"context_line":"# needs:fix_opt_description_indentation"}],"source_content_type":"text/x-python","patch_set":14,"id":"1f493fa4_9cc63c16","line":1,"updated":"2020-05-06 15:15:03.000000000","message":"pep8: E902 TokenError: EOF in multi-line string","commit_id":"7444b1e7b352babcae81b2ecbfaa189cc629e720"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c40fee188b56aba63fb2de1550a2e9da6a919981","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":"* ``virt_type``: This option is meaningful only when ``virt_type`` is set to"},{"line_number":258,"context_line":"  `kvm` or `qemu`."},{"line_number":259,"context_line":"* ``live_migration_uri``: If ``live_migration_uri`` value is not None, this"},{"line_number":260,"context_line":"  option will be ignored."},{"line_number":261,"context_line":"* ``live_migration_username``, ``live_migration_port``,"},{"line_number":262,"context_line":"  ``live_migration_path``, ``live_migration_extra_parameters``: These options"},{"line_number":263,"context_line":"  are used along with this one to build the live migration remote URI."}],"source_content_type":"text/x-python","patch_set":17,"id":"1f493fa4_7d451315","line":260,"range":{"start_line":259,"start_character":71,"end_line":260,"end_character":25},"updated":"2020-05-07 16:06:16.000000000","message":"So we\u0027re giving precedence to the old fagile thing?\n\n\u003clater\u003e I guess that\u0027s existing behaviour","commit_id":"c7561f72b4a5d1883104850bc36c2b1ccdebdb37"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"4107f354a889843d5f69602f55f7faf6211f0f12","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":"* ``virt_type``: This option is meaningful only when ``virt_type`` is set to"},{"line_number":258,"context_line":"  `kvm` or `qemu`."},{"line_number":259,"context_line":"* ``live_migration_uri``: If ``live_migration_uri`` value is not None, this"},{"line_number":260,"context_line":"  option will be ignored."},{"line_number":261,"context_line":"* ``live_migration_username``, ``live_migration_port``,"},{"line_number":262,"context_line":"  ``live_migration_path``, ``live_migration_extra_parameters``: These options"},{"line_number":263,"context_line":"  are used along with this one to build the live migration remote URI."}],"source_content_type":"text/x-python","patch_set":17,"id":"2450d896_1353a037","line":260,"range":{"start_line":259,"start_character":71,"end_line":260,"end_character":25},"in_reply_to":"1f493fa4_7d451315","updated":"2023-08-09 08:40:32.000000000","message":"Yes this is not changed by this change and I think it\u0027s reasonable to honor the old behavior assuming users would have old thing not yet updated.","commit_id":"c7561f72b4a5d1883104850bc36c2b1ccdebdb37"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c40fee188b56aba63fb2de1550a2e9da6a919981","unresolved":false,"context_lines":[{"line_number":345,"context_line":"                help\u003d\"\"\""},{"line_number":346,"context_line":"A dict of extra parameters to provide to the live migration destination."},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"This option defines extra parameters which is used as query parameters"},{"line_number":349,"context_line":"in destination URI in live migration. Refer to the `libvirt documentation"},{"line_number":350,"context_line":"\u003chttps://libvirt.org/remote.html#Remote_URI_reference\u003e`_ for more information."},{"line_number":351,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1f493fa4_5d5ad7f2","line":348,"range":{"start_line":348,"start_character":43,"end_line":348,"end_character":45},"updated":"2020-05-07 16:06:16.000000000","message":"nit: are used","commit_id":"c7561f72b4a5d1883104850bc36c2b1ccdebdb37"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"0c07135dc274ad24153fc4b2bd862914dcdc6fe8","unresolved":false,"context_lines":[{"line_number":668,"context_line":"            dest \u003d \u0027@\u0027.join([CONF.libvirt.live_migration_username, dest])"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        if CONF.libvirt.live_migration_port:"},{"line_number":671,"context_line":"            dest \u003d \u0027:\u0027.join([dest, CONF.libvirt.live_migration_port])"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        str_format \u003d (dest,)"},{"line_number":674,"context_line":"        if virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_321767f0","line":671,"range":{"start_line":671,"start_character":35,"end_line":671,"end_character":67},"updated":"2017-07-04 06:59:37.000000000","message":"It should be \u0027str(CONF.libvirt.live_migration_port)\u0027.","commit_id":"049eae924194837bde7f75efd976d2c3abf67677"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cd0256283f92ea7894c7b7f9a642a56931f2abce","unresolved":false,"context_lines":[{"line_number":668,"context_line":"            dest \u003d \u0027@\u0027.join([CONF.libvirt.live_migration_username, dest])"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":"        if CONF.libvirt.live_migration_port:"},{"line_number":671,"context_line":"            dest \u003d \u0027:\u0027.join([dest, CONF.libvirt.live_migration_port])"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"        str_format \u003d (dest,)"},{"line_number":674,"context_line":"        if virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3f1d235d_83226f51","line":671,"range":{"start_line":671,"start_character":35,"end_line":671,"end_character":67},"in_reply_to":"3f1d235d_321767f0","updated":"2017-07-04 08:45:19.000000000","message":"Thanks for the pointer","commit_id":"049eae924194837bde7f75efd976d2c3abf67677"},{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"b20eaec63aa12143b55baa22978b706da6415ce3","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        if uri is None:"},{"line_number":708,"context_line":"            raise exception.LiveMigrationURINotAvailable(virt_type\u003dvirt_type)"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"        if CONF.libvirt.live_migration_username:"},{"line_number":711,"context_line":"            dest \u003d \u0027@\u0027.join([CONF.libvirt.live_migration_username, dest])"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"        if CONF.libvirt.live_migration_port:"},{"line_number":714,"context_line":"            dest \u003d \u0027:\u0027.join([dest, str(CONF.libvirt.live_migration_port)])"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        str_format \u003d (dest,)"},{"line_number":717,"context_line":"        if virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_f11ca26b","line":714,"range":{"start_line":710,"start_character":8,"end_line":714,"end_character":74},"updated":"2018-08-08 07:17:32.000000000","message":"I am not quite sure here, but my understanding is that username, port and extra_parameters (at least some of them) are only relevant in the case of \"kvm\" or \"qemu\" driver and when \"ssh\" is used. if thats the case, these options should only be appended to the uri in those scenarios. meanwhile, we can also make it clear that only certain combinations of these options will work as expected in the configuration file.","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3157bacec677ec889963857ba417483772b69e6e","unresolved":false,"context_lines":[{"line_number":707,"context_line":"        if uri is None:"},{"line_number":708,"context_line":"            raise exception.LiveMigrationURINotAvailable(virt_type\u003dvirt_type)"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"        if CONF.libvirt.live_migration_username:"},{"line_number":711,"context_line":"            dest \u003d \u0027@\u0027.join([CONF.libvirt.live_migration_username, dest])"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"        if CONF.libvirt.live_migration_port:"},{"line_number":714,"context_line":"            dest \u003d \u0027:\u0027.join([dest, str(CONF.libvirt.live_migration_port)])"},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        str_format \u003d (dest,)"},{"line_number":717,"context_line":"        if virt_type in (\u0027kvm\u0027, \u0027qemu\u0027):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_4d02680d","line":714,"range":{"start_line":710,"start_character":8,"end_line":714,"end_character":74},"in_reply_to":"3f79a3b5_f11ca26b","updated":"2018-08-22 09:58:37.000000000","message":"While true, I think that\u0027s something that I should leave to libvirt to do. It should reject these and give us a meaningful error message. If we were to add checks here, we\u0027d be (a) duplicating what libvirt is already doing and (b) setting us up for failure if/when libvirt introduced another type of driver/schema.","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"b20eaec63aa12143b55baa22978b706da6415ce3","unresolved":false,"context_lines":[{"line_number":720,"context_line":""},{"line_number":721,"context_line":"        uri \u003d uri % str_format"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"        if CONF.libvirt.live_migration_extra_parameters:"},{"line_number":724,"context_line":"            extra_params \u003d urlparse.urlencode("},{"line_number":725,"context_line":"                CONF.libvirt.live_migration_extra_parameters)"},{"line_number":726,"context_line":"            return \u0027?\u0027.join([uri, extra_params])"},{"line_number":727,"context_line":"        else:"},{"line_number":728,"context_line":"            return uri"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"    @staticmethod"},{"line_number":731,"context_line":"    def _migrate_uri(dest):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_510eb632","line":728,"range":{"start_line":723,"start_character":8,"end_line":728,"end_character":22},"updated":"2018-08-08 07:17:32.000000000","message":"same concern as above","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3157bacec677ec889963857ba417483772b69e6e","unresolved":false,"context_lines":[{"line_number":720,"context_line":""},{"line_number":721,"context_line":"        uri \u003d uri % str_format"},{"line_number":722,"context_line":""},{"line_number":723,"context_line":"        if CONF.libvirt.live_migration_extra_parameters:"},{"line_number":724,"context_line":"            extra_params \u003d urlparse.urlencode("},{"line_number":725,"context_line":"                CONF.libvirt.live_migration_extra_parameters)"},{"line_number":726,"context_line":"            return \u0027?\u0027.join([uri, extra_params])"},{"line_number":727,"context_line":"        else:"},{"line_number":728,"context_line":"            return uri"},{"line_number":729,"context_line":""},{"line_number":730,"context_line":"    @staticmethod"},{"line_number":731,"context_line":"    def _migrate_uri(dest):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_e8fec203","line":728,"range":{"start_line":723,"start_character":8,"end_line":728,"end_character":22},"in_reply_to":"3f79a3b5_510eb632","updated":"2018-08-22 09:58:37.000000000","message":"Ditto","commit_id":"6cd26f5f6659db6378198ff2f2d048928168d38a"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"81b6fd68ba9f3d5c4ec63a12351b1274619ef92b","unresolved":false,"context_lines":[{"line_number":757,"context_line":"        uri \u003d uri % str_format"},{"line_number":758,"context_line":""},{"line_number":759,"context_line":"        if CONF.libvirt.live_migration_extra_parameters:"},{"line_number":760,"context_line":"            extra_params \u003d urlparse.urlencode("},{"line_number":761,"context_line":"                CONF.libvirt.live_migration_extra_parameters)"},{"line_number":762,"context_line":"            return \u0027?\u0027.join([uri, extra_params])"},{"line_number":763,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5faad753_fb0bbc79","line":760,"range":{"start_line":760,"start_character":36,"end_line":760,"end_character":45},"updated":"2019-09-13 11:20:43.000000000","message":"Note to self: this is specifically for turning dicts (or lists of 2-tuples) into URL query params.","commit_id":"8600a4b233ab267ac39f7883e746a2ce007865e6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"5f83a69d547bd8a6a287f54b523c4fac8f70bbee","unresolved":false,"context_lines":[{"line_number":940,"context_line":"        uri \u003d uri % str_format"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"        if CONF.libvirt.live_migration_extra_parameters:"},{"line_number":943,"context_line":"            extra_params \u003d urlparse.urlencode("},{"line_number":944,"context_line":"                CONF.libvirt.live_migration_extra_parameters)"},{"line_number":945,"context_line":"            return \u0027?\u0027.join([uri, extra_params])"},{"line_number":946,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_0d7770a2","line":943,"range":{"start_line":943,"start_character":27,"end_line":943,"end_character":46},"updated":"2020-03-27 13:05:22.000000000","message":"i am pretty sure you are not required to url encode all the query parmaters, just the ones the libvirt does not support directly. if people are url encoding them which woudl generate % then that is likely the cause of the bugs that people are having. its a URI not a URL they are different things and uri do not always use/require or support url encoding.\n\nhttps://libvirt.org/uri.html#Remote_URI_parameters","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"70b157807cea308caeb36eb3f7329808f73b836c","unresolved":false,"context_lines":[{"line_number":940,"context_line":"        uri \u003d uri % str_format"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":"        if CONF.libvirt.live_migration_extra_parameters:"},{"line_number":943,"context_line":"            extra_params \u003d urlparse.urlencode("},{"line_number":944,"context_line":"                CONF.libvirt.live_migration_extra_parameters)"},{"line_number":945,"context_line":"            return \u0027?\u0027.join([uri, extra_params])"},{"line_number":946,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"df33271e_0fcd6830","line":943,"range":{"start_line":943,"start_character":27,"end_line":943,"end_character":46},"in_reply_to":"df33271e_0d7770a2","updated":"2020-03-31 14:38:51.000000000","message":"https://libvirt.org/uri.html states RFC 2396.\n\nTL;DR not different things (URLs are URIs) and always encode reserved characters (which includes \u0027/\u0027). URI parser implementations might be more forgiving though.","commit_id":"213be8043423117407c4577330d5b073735e3d8f"},{"author":{"_account_id":23811,"name":"Oliver Walsh","email":"owalsh@redhat.com","username":"owalsh"},"change_message_id":"f153371863ca191608e266d60562261746ce754a","unresolved":true,"context_lines":[{"line_number":1375,"context_line":""},{"line_number":1376,"context_line":"        str_format \u003d {"},{"line_number":1377,"context_line":"            \u0027dest\u0027: dest,"},{"line_number":1378,"context_line":"            \u0027scheme\u0027: CONF.libvirt.live_migration_scheme or \u0027tcp\u0027,"},{"line_number":1379,"context_line":"            \u0027path\u0027: CONF.libvirt.live_migration_path or \u0027system\u0027"},{"line_number":1380,"context_line":"        }"},{"line_number":1381,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"087a9d76_d12c910d","line":1378,"range":{"start_line":1378,"start_character":60,"end_line":1378,"end_character":65},"updated":"2023-08-09 10:41:33.000000000","message":"\"This is insecure and should not be used\" - direct quote from the libvirt docs. I would default to ssh instead. If tcp is required for dev/test/CI can explicitly set live_migration_scheme.","commit_id":"bec03cbc2e429592ea3d15dffc876d7797d30fcf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c9fe014ec962c24080c5415a9cf5a6c79d5893ce","unresolved":true,"context_lines":[{"line_number":1375,"context_line":""},{"line_number":1376,"context_line":"        str_format \u003d {"},{"line_number":1377,"context_line":"            \u0027dest\u0027: dest,"},{"line_number":1378,"context_line":"            \u0027scheme\u0027: CONF.libvirt.live_migration_scheme or \u0027tcp\u0027,"},{"line_number":1379,"context_line":"            \u0027path\u0027: CONF.libvirt.live_migration_path or \u0027system\u0027"},{"line_number":1380,"context_line":"        }"},{"line_number":1381,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"db9fd79c_ab696e45","line":1378,"range":{"start_line":1378,"start_character":60,"end_line":1378,"end_character":65},"in_reply_to":"087a9d76_d12c910d","updated":"2023-08-09 11:12:38.000000000","message":"we are aware but stephen was just maintainign the old behavior to avoid an upgrade issue.\n\nim not sure this patfch is even still gong to be progressed at this point by the way","commit_id":"bec03cbc2e429592ea3d15dffc876d7797d30fcf"}],"releasenotes/notes/additional-live_migration-opts-322f140c096993cf.yaml":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"26fc9075ebb9a1aa0ade371d86da7fdfe53694c5","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    ``[libvirt]`` group:"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    - ``live_migration_username``"},{"line_number":8,"context_line":"    - ``live_migration_extra_params``"},{"line_number":9,"context_line":"    - ``live_migration_port``"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    These compliment an existing option - ``live_migration_scheme``. These"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1f493fa4_95bd6f6a","line":8,"updated":"2020-05-06 17:17:39.000000000","message":"live_migration_path is missing","commit_id":"5f1d7936b21d48d1852b69ae22ae0f0d28ba99b6"}]}
