)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"03c61906fdce20aa7ef9cf121ce56fdc46e7b618","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Per-instance serial number"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new flavor extra spec ``hw:unique_serial`` and corresponding"},{"line_number":10,"context_line":"image property ``hw_unique_serial`` will be introduced which"},{"line_number":11,"context_line":"when either is set to ``True`` will result in the guest serial"},{"line_number":12,"context_line":"number being set to the instance UUID."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Also added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":15,"context_line":"configuration which if set will result in the guest serial number"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9fdfeff1_bf9abe10","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":38},"updated":"2019-02-01 15:14:47.000000000","message":"This is all old now.","commit_id":"5158b509703a111c3f1cd5dde05dfa5e50a81f20"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4dea2aa79a71e0cf5977e813706136c8156dc630","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Per-instance serial number"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new flavor extra spec ``hw:unique_serial`` and corresponding"},{"line_number":10,"context_line":"image property ``hw_unique_serial`` will be introduced which"},{"line_number":11,"context_line":"when either is set to ``True`` will result in the guest serial"},{"line_number":12,"context_line":"number being set to the instance UUID."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Also added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":15,"context_line":"configuration which if set will result in the guest serial number"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"9fdfeff1_6bb9f376","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":38},"in_reply_to":"9fdfeff1_bf9abe10","updated":"2019-02-02 01:53:04.000000000","message":"Done","commit_id":"5158b509703a111c3f1cd5dde05dfa5e50a81f20"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e45d29a34f8f4759a817ed433b88042df6847d25","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Per-instance serial number"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new flavor extra spec ``hw:unique_serial`` and corresponding"},{"line_number":10,"context_line":"image property ``hw_unique_serial`` will be introduced which"},{"line_number":11,"context_line":"when either is set to ``True`` will result in the guest serial"},{"line_number":12,"context_line":"number being set to the instance UUID."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9fdfeff1_54360c53","line":9,"updated":"2019-02-02 14:08:40.000000000","message":"This is still old.","commit_id":"fda1655fdcb0504120c8061b97b46eb52fdaabdc"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"3d3619650d70449a9345740c53a770dd364153c0","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Per-instance serial number"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"A new flavor extra spec ``hw:unique_serial`` and corresponding"},{"line_number":10,"context_line":"image property ``hw_unique_serial`` will be introduced which"},{"line_number":11,"context_line":"when either is set to ``True`` will result in the guest serial"},{"line_number":12,"context_line":"number being set to the instance UUID."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Also added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":15,"context_line":"configuration which if set will result in the guest serial number"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"9fdfeff1_ba007fac","line":12,"range":{"start_line":9,"start_character":0,"end_line":12,"end_character":38},"updated":"2019-02-03 01:22:59.000000000","message":"Oops, forgot those :)","commit_id":"fda1655fdcb0504120c8061b97b46eb52fdaabdc"}],"doc/source/user/flavors.rst":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a5083910c6adc630b14fc23416fca78ee83c16e9","unresolved":false,"context_lines":[{"line_number":650,"context_line":"  - ``disabled`` or ``optional``: (default) Disable Secure Boot for instances"},{"line_number":651,"context_line":"    running with this flavor."},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"Unique serial number per instance"},{"line_number":654,"context_line":"  You can have an unique serial number for each instance across their"},{"line_number":655,"context_line":"  lifecycle."},{"line_number":656,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bfdaf3ff_9d289634","line":653,"updated":"2019-01-17 06:22:56.000000000","message":"Add \"Added in the 19.0.0 Stein release.\"","commit_id":"397f7ea9f686eaf8d0ca8f267f26e29ded710bb3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ab7709d2326aaa57fd17cf008976bb9223893d3e","unresolved":false,"context_lines":[{"line_number":668,"context_line":""},{"line_number":669,"context_line":"  Valid ``UNIQUE_SERIAL_OPTION`` values are:"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"  - ``True``: Use unique serial number per instance."},{"line_number":672,"context_line":"  - ``False``: (default) The serial number will be assigned according to"},{"line_number":673,"context_line":"    cloud configurations."},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"Custom resource classes and standard resource classes to override"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fdfeff1_2a90774e","line":672,"range":{"start_line":671,"start_character":1,"end_line":672,"end_character":72},"updated":"2019-01-23 08:26:01.000000000","message":"I didn\u0027t see you to do any validate of the value. So I input anything, it will be treated as True.\n\nAnd I\u0027m not sure we should have False value, we can only support True only. False value is confuse the user, sounds like explicit request, but in the end, that may different based on the host configuration.","commit_id":"38e5e33aaf9f8d241b04763b5d186cbbff2a540a"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"110b163cc07ea27af0318bfd38eaf89980630169","unresolved":false,"context_lines":[{"line_number":668,"context_line":""},{"line_number":669,"context_line":"  Valid ``UNIQUE_SERIAL_OPTION`` values are:"},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"  - ``True``: Use unique serial number per instance."},{"line_number":672,"context_line":"  - ``False``: (default) The serial number will be assigned according to"},{"line_number":673,"context_line":"    cloud configurations."},{"line_number":674,"context_line":""},{"line_number":675,"context_line":"Custom resource classes and standard resource classes to override"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9fdfeff1_6a70bfdd","line":672,"range":{"start_line":671,"start_character":1,"end_line":672,"end_character":72},"in_reply_to":"9fdfeff1_2a90774e","updated":"2019-01-23 08:50:06.000000000","message":"Yeah, seems true, I don\u0027t see any value for assigning this to false,","commit_id":"38e5e33aaf9f8d241b04763b5d186cbbff2a540a"}],"nova/conf/libvirt.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a5083910c6adc630b14fc23416fca78ee83c16e9","unresolved":false,"context_lines":[{"line_number":731,"context_line":"               ),"},{"line_number":732,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":733,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS.\u0027"},{"line_number":734,"context_line":"                    \u0027If the user uses a flavor with extra spec\u0027"},{"line_number":735,"context_line":"                    \u0027``hw:unique_serial\u003dTrue`` or the corresponding image\u0027"},{"line_number":736,"context_line":"                    \u0027property ``hw_unique_serial\u003dTrue`` when create instance,\u0027"},{"line_number":737,"context_line":"                    \u0027the guest will overwrite this configuration and use \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_1d1ca610","line":734,"range":{"start_line":734,"start_character":62,"end_line":734,"end_character":63},"updated":"2019-01-17 06:22:56.000000000","message":"Add a white space.","commit_id":"397f7ea9f686eaf8d0ca8f267f26e29ded710bb3"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a5083910c6adc630b14fc23416fca78ee83c16e9","unresolved":false,"context_lines":[{"line_number":732,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":733,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS.\u0027"},{"line_number":734,"context_line":"                    \u0027If the user uses a flavor with extra spec\u0027"},{"line_number":735,"context_line":"                    \u0027``hw:unique_serial\u003dTrue`` or the corresponding image\u0027"},{"line_number":736,"context_line":"                    \u0027property ``hw_unique_serial\u003dTrue`` when create instance,\u0027"},{"line_number":737,"context_line":"                    \u0027the guest will overwrite this configuration and use \u0027"},{"line_number":738,"context_line":"                    \u0027``instance_uuid`` as serial.\u0027),"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_3d172af0","line":735,"range":{"start_line":735,"start_character":73,"end_line":735,"end_character":74},"updated":"2019-01-17 06:22:56.000000000","message":"ditto","commit_id":"397f7ea9f686eaf8d0ca8f267f26e29ded710bb3"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a5083910c6adc630b14fc23416fca78ee83c16e9","unresolved":false,"context_lines":[{"line_number":733,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS.\u0027"},{"line_number":734,"context_line":"                    \u0027If the user uses a flavor with extra spec\u0027"},{"line_number":735,"context_line":"                    \u0027``hw:unique_serial\u003dTrue`` or the corresponding image\u0027"},{"line_number":736,"context_line":"                    \u0027property ``hw_unique_serial\u003dTrue`` when create instance,\u0027"},{"line_number":737,"context_line":"                    \u0027the guest will overwrite this configuration and use \u0027"},{"line_number":738,"context_line":"                    \u0027``instance_uuid`` as serial.\u0027),"},{"line_number":739,"context_line":"    cfg.IntOpt(\u0027mem_stats_period_seconds\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_fdd68227","line":736,"range":{"start_line":736,"start_character":77,"end_line":736,"end_character":78},"updated":"2019-01-17 06:22:56.000000000","message":"ditto","commit_id":"397f7ea9f686eaf8d0ca8f267f26e29ded710bb3"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"ab7709d2326aaa57fd17cf008976bb9223893d3e","unresolved":false,"context_lines":[{"line_number":726,"context_line":"                   (\u0027auto\u0027, \u0027Uses the \"os\" source if possible, else \u0027"},{"line_number":727,"context_line":"                            \u0027\"hardware\".\u0027),"},{"line_number":728,"context_line":"                   (\u0027unique\u0027, \u0027Uses instance UUID as the serial number. \u0027"},{"line_number":729,"context_line":"                              \u0027This will also affect existing instances \u0027"},{"line_number":730,"context_line":"                              \u0027on this host once they stop and start again.\u0027),"},{"line_number":731,"context_line":"               ),"},{"line_number":732,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":733,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS. \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_eafd8fb1","line":730,"range":{"start_line":729,"start_character":31,"end_line":730,"end_character":76},"updated":"2019-01-23 08:26:01.000000000","message":"Any of above option will affect the existing instance, right?\n\nWe should note this in the help message.","commit_id":"38e5e33aaf9f8d241b04763b5d186cbbff2a540a"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"110b163cc07ea27af0318bfd38eaf89980630169","unresolved":false,"context_lines":[{"line_number":726,"context_line":"                   (\u0027auto\u0027, \u0027Uses the \"os\" source if possible, else \u0027"},{"line_number":727,"context_line":"                            \u0027\"hardware\".\u0027),"},{"line_number":728,"context_line":"                   (\u0027unique\u0027, \u0027Uses instance UUID as the serial number. \u0027"},{"line_number":729,"context_line":"                              \u0027This will also affect existing instances \u0027"},{"line_number":730,"context_line":"                              \u0027on this host once they stop and start again.\u0027),"},{"line_number":731,"context_line":"               ),"},{"line_number":732,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":733,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS. \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9fdfeff1_2a68771f","line":730,"range":{"start_line":729,"start_character":31,"end_line":730,"end_character":76},"in_reply_to":"9fdfeff1_eafd8fb1","updated":"2019-01-23 08:50:06.000000000","message":"yeah, seems true too","commit_id":"38e5e33aaf9f8d241b04763b5d186cbbff2a540a"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1f675a4822e6c313db9a6986dac00bd629bd6bf1","unresolved":false,"context_lines":[{"line_number":741,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS. \u0027"},{"line_number":742,"context_line":"                    \u0027If the user uses a flavor with extra spec \u0027"},{"line_number":743,"context_line":"                    \u0027``hw:unique_serial\u003dTrue`` or the corresponding image \u0027"},{"line_number":744,"context_line":"                    \u0027property ``hw_unique_serial\u003dTrue`` when create \u0027"},{"line_number":745,"context_line":"                    \u0027instance, the guest will overwrite this configuration \u0027"},{"line_number":746,"context_line":"                    \u0027and use ``instance_uuid`` as serial.\u0027),"},{"line_number":747,"context_line":"    cfg.IntOpt(\u0027mem_stats_period_seconds\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_7f0a1620","line":744,"range":{"start_line":744,"start_character":61,"end_line":744,"end_character":67},"updated":"2019-02-01 14:48:04.000000000","message":"creating","commit_id":"5158327bc8a2fbc4c3cabcf3fd964e5f61285fa1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1f675a4822e6c313db9a6986dac00bd629bd6bf1","unresolved":false,"context_lines":[{"line_number":742,"context_line":"                    \u0027If the user uses a flavor with extra spec \u0027"},{"line_number":743,"context_line":"                    \u0027``hw:unique_serial\u003dTrue`` or the corresponding image \u0027"},{"line_number":744,"context_line":"                    \u0027property ``hw_unique_serial\u003dTrue`` when create \u0027"},{"line_number":745,"context_line":"                    \u0027instance, the guest will overwrite this configuration \u0027"},{"line_number":746,"context_line":"                    \u0027and use ``instance_uuid`` as serial.\u0027),"},{"line_number":747,"context_line":"    cfg.IntOpt(\u0027mem_stats_period_seconds\u0027,"},{"line_number":748,"context_line":"               default\u003d10,"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_1f150a40","line":745,"range":{"start_line":745,"start_character":46,"end_line":745,"end_character":55},"updated":"2019-02-01 14:48:04.000000000","message":"ignore","commit_id":"5158327bc8a2fbc4c3cabcf3fd964e5f61285fa1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1f675a4822e6c313db9a6986dac00bd629bd6bf1","unresolved":false,"context_lines":[{"line_number":743,"context_line":"                    \u0027``hw:unique_serial\u003dTrue`` or the corresponding image \u0027"},{"line_number":744,"context_line":"                    \u0027property ``hw_unique_serial\u003dTrue`` when create \u0027"},{"line_number":745,"context_line":"                    \u0027instance, the guest will overwrite this configuration \u0027"},{"line_number":746,"context_line":"                    \u0027and use ``instance_uuid`` as serial.\u0027),"},{"line_number":747,"context_line":"    cfg.IntOpt(\u0027mem_stats_period_seconds\u0027,"},{"line_number":748,"context_line":"               default\u003d10,"},{"line_number":749,"context_line":"               help\u003d\u0027A number of seconds to memory usage statistics period. \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_9f2a5a7c","line":746,"updated":"2019-02-01 14:48:04.000000000","message":"So, this was wholly operator-controlled before. Moving the option to be under control of the guest might run afoul of some operator\u0027s desire right?\n\nLike, maybe the operator uses the serial number for agent correlation, or debugging, or forensics after an issue. By putting it fully within the user\u0027s control, they have no way to prevent them from making it unique right?\n\nIMHO, if we\u0027re going to allow the image property, we should only honor it if this config is set to auto (or another new option called \"user\"). But I would prefer we just not add the new image property, default this to \"unique\" in new installations and leave it at that.\n\nI can think of only one somewhat silly case where the user might want to ask for the host\u0027s serial to be used, but it\u0027s pretty edge-case-y. Presumably ignoring that, no user is going to complain about having a stable unique serial number, so ops would be the only ones that might have an opinion, and if so, they should still be able to control it here, IMHO.","commit_id":"5158327bc8a2fbc4c3cabcf3fd964e5f61285fa1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"03c61906fdce20aa7ef9cf121ce56fdc46e7b618","unresolved":false,"context_lines":[{"line_number":745,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":746,"context_line":"               deprecated_since\u003d\u002719.0.0\u0027,"},{"line_number":747,"context_line":"               deprecated_reason\u003d\"\"\""},{"line_number":748,"context_line":"               Applications that depend on the serial number within the "},{"line_number":749,"context_line":"               guest were not guaranteed it would be unique or not changed "},{"line_number":750,"context_line":"               during migrations if options other than ``unique`` is set. "},{"line_number":751,"context_line":"               This config option will be removed in Train release and all "}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_1f8bcac2","line":748,"updated":"2019-02-01 15:14:47.000000000","message":"whitespace damage","commit_id":"5158b509703a111c3f1cd5dde05dfa5e50a81f20"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4dea2aa79a71e0cf5977e813706136c8156dc630","unresolved":false,"context_lines":[{"line_number":745,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":746,"context_line":"               deprecated_since\u003d\u002719.0.0\u0027,"},{"line_number":747,"context_line":"               deprecated_reason\u003d\"\"\""},{"line_number":748,"context_line":"               Applications that depend on the serial number within the "},{"line_number":749,"context_line":"               guest were not guaranteed it would be unique or not changed "},{"line_number":750,"context_line":"               during migrations if options other than ``unique`` is set. "},{"line_number":751,"context_line":"               This config option will be removed in Train release and all "}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_cba9ff23","line":748,"in_reply_to":"9fdfeff1_1f8bcac2","updated":"2019-02-02 01:53:04.000000000","message":"Done","commit_id":"5158b509703a111c3f1cd5dde05dfa5e50a81f20"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e45d29a34f8f4759a817ed433b88042df6847d25","unresolved":false,"context_lines":[{"line_number":720,"context_line":"               choices\u003d("},{"line_number":721,"context_line":"                   (\u0027none\u0027, \u0027A serial number entry is not added to the guest \u0027"},{"line_number":722,"context_line":"                            \u0027domain xml. This will also affect existing \u0027"},{"line_number":723,"context_line":"                            \u0027instances on this host once they stop and start \u0027"},{"line_number":724,"context_line":"                            \u0027again.\u0027),"},{"line_number":725,"context_line":"                   (\u0027os\u0027, \u0027A UUID serial number is generated from the host \u0027"},{"line_number":726,"context_line":"                          \u0027``/etc/machine-id`` file. This will also affect \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"9fdfeff1_143c042d","line":723,"updated":"2019-02-02 14:08:40.000000000","message":"Why do we need this new wording on all of the choices? If you want to mention that all except the unique choice will change the serial when migrating instances to other hosts then just say that in the main description of the option.","commit_id":"fda1655fdcb0504120c8061b97b46eb52fdaabdc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                   (\u0027none\u0027, \u0027A serial number entry is not added to the guest \u0027"},{"line_number":722,"context_line":"                            \u0027domain xml.\u0027),"},{"line_number":723,"context_line":"                   (\u0027os\u0027, \u0027A UUID serial number is generated from the host \u0027"},{"line_number":724,"context_line":"                          \u0027``/etc/machine-id`` file. This will also affect \u0027"},{"line_number":725,"context_line":"                          \u0027existing instances on this host once they stop \u0027"},{"line_number":726,"context_line":"                          \u0027and start again.\u0027),"},{"line_number":727,"context_line":"                   (\u0027hardware\u0027, \u0027A UUID for the host hardware as reported by \u0027"},{"line_number":728,"context_line":"                                \u0027libvirt. This is typically from the host \u0027"},{"line_number":729,"context_line":"                                \u0027SMBIOS data, unless it has been overridden \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_588dd128","line":726,"range":{"start_line":724,"start_character":52,"end_line":726,"end_character":43},"updated":"2019-02-04 15:17:07.000000000","message":"Can we remove this?","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                   (\u0027none\u0027, \u0027A serial number entry is not added to the guest \u0027"},{"line_number":722,"context_line":"                            \u0027domain xml.\u0027),"},{"line_number":723,"context_line":"                   (\u0027os\u0027, \u0027A UUID serial number is generated from the host \u0027"},{"line_number":724,"context_line":"                          \u0027``/etc/machine-id`` file. This will also affect \u0027"},{"line_number":725,"context_line":"                          \u0027existing instances on this host once they stop \u0027"},{"line_number":726,"context_line":"                          \u0027and start again.\u0027),"},{"line_number":727,"context_line":"                   (\u0027hardware\u0027, \u0027A UUID for the host hardware as reported by \u0027"},{"line_number":728,"context_line":"                                \u0027libvirt. This is typically from the host \u0027"},{"line_number":729,"context_line":"                                \u0027SMBIOS data, unless it has been overridden \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_892bed80","line":726,"range":{"start_line":724,"start_character":52,"end_line":726,"end_character":43},"in_reply_to":"9fdfeff1_030efe31","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8005c260d3fee4a93a20c75a19a26599c5ed2469","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                   (\u0027none\u0027, \u0027A serial number entry is not added to the guest \u0027"},{"line_number":722,"context_line":"                            \u0027domain xml.\u0027),"},{"line_number":723,"context_line":"                   (\u0027os\u0027, \u0027A UUID serial number is generated from the host \u0027"},{"line_number":724,"context_line":"                          \u0027``/etc/machine-id`` file. This will also affect \u0027"},{"line_number":725,"context_line":"                          \u0027existing instances on this host once they stop \u0027"},{"line_number":726,"context_line":"                          \u0027and start again.\u0027),"},{"line_number":727,"context_line":"                   (\u0027hardware\u0027, \u0027A UUID for the host hardware as reported by \u0027"},{"line_number":728,"context_line":"                                \u0027libvirt. This is typically from the host \u0027"},{"line_number":729,"context_line":"                                \u0027SMBIOS data, unless it has been overridden \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_78c1b5e4","line":726,"range":{"start_line":724,"start_character":52,"end_line":726,"end_character":43},"in_reply_to":"9fdfeff1_588dd128","updated":"2019-02-04 15:27:20.000000000","message":"Why? It\u0027s pretty important I think. Anyone running software in an instance that uses their serial number for license affinity will be surprised if this gets changed. We might want to just comment on the whole option that changing this is likely to cause such confusion instead of on each option, but it seems fairly relevant to me.\n\n(later sees it\u0027s in help\u003d)... Your point is just that we don\u0027t need it in the choices themselves because it\u0027s in the main help, right? If so, I agree.","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0f4eec752c4e59496f748ae20134b6577c85602d","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                   (\u0027none\u0027, \u0027A serial number entry is not added to the guest \u0027"},{"line_number":722,"context_line":"                            \u0027domain xml.\u0027),"},{"line_number":723,"context_line":"                   (\u0027os\u0027, \u0027A UUID serial number is generated from the host \u0027"},{"line_number":724,"context_line":"                          \u0027``/etc/machine-id`` file. This will also affect \u0027"},{"line_number":725,"context_line":"                          \u0027existing instances on this host once they stop \u0027"},{"line_number":726,"context_line":"                          \u0027and start again.\u0027),"},{"line_number":727,"context_line":"                   (\u0027hardware\u0027, \u0027A UUID for the host hardware as reported by \u0027"},{"line_number":728,"context_line":"                                \u0027libvirt. This is typically from the host \u0027"},{"line_number":729,"context_line":"                                \u0027SMBIOS data, unless it has been overridden \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_030efe31","line":726,"range":{"start_line":724,"start_character":52,"end_line":726,"end_character":43},"in_reply_to":"9fdfeff1_78c1b5e4","updated":"2019-02-04 15:33:15.000000000","message":"\u003e (later sees it\u0027s in help\u003d)... Your point is just that we don\u0027t need it in the choices themselves because it\u0027s in the main help, right? If so, I agree.\n\nCorrect. In an earlier patch set this was in each choice so I asked it\u0027s just put in the general help since it applies to all of them.","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                   (\u0027auto\u0027, \u0027Uses the \"os\" source if possible, else \u0027"},{"line_number":732,"context_line":"                            \u0027\"hardware\".\u0027),"},{"line_number":733,"context_line":"                   (\u0027unique\u0027, \u0027Uses instance UUID as the serial number. \u0027"},{"line_number":734,"context_line":"                              \u0027This will also affect existing instances \u0027"},{"line_number":735,"context_line":"                              \u0027on this host once they stop and start again.\u0027),"},{"line_number":736,"context_line":"               ),"},{"line_number":737,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":738,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS. All choices \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_1897493d","line":735,"range":{"start_line":734,"start_character":31,"end_line":735,"end_character":75},"updated":"2019-02-04 15:17:07.000000000","message":"I find this to be more confusing than useful, so I think we should probably just remove it.","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                   (\u0027auto\u0027, \u0027Uses the \"os\" source if possible, else \u0027"},{"line_number":732,"context_line":"                            \u0027\"hardware\".\u0027),"},{"line_number":733,"context_line":"                   (\u0027unique\u0027, \u0027Uses instance UUID as the serial number. \u0027"},{"line_number":734,"context_line":"                              \u0027This will also affect existing instances \u0027"},{"line_number":735,"context_line":"                              \u0027on this host once they stop and start again.\u0027),"},{"line_number":736,"context_line":"               ),"},{"line_number":737,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":738,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS. All choices \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_2920c19b","line":735,"range":{"start_line":734,"start_character":31,"end_line":735,"end_character":75},"in_reply_to":"9fdfeff1_1897493d","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":737,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":738,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS. All choices \u0027"},{"line_number":739,"context_line":"                    \u0027except ``unique`` will change the serial when migrating \u0027"},{"line_number":740,"context_line":"                    \u0027instance to other host. Changing the choice of this \u0027"},{"line_number":741,"context_line":"                    \u0027option will also affect existing instances on this host \u0027"},{"line_number":742,"context_line":"                    \u0027once they stopped and started again.\u0027"},{"line_number":743,"context_line":"               ),"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_d8a0e194","line":740,"range":{"start_line":740,"start_character":21,"end_line":740,"end_character":29},"updated":"2019-02-04 15:17:07.000000000","message":"an instance","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":737,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":738,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS. All choices \u0027"},{"line_number":739,"context_line":"                    \u0027except ``unique`` will change the serial when migrating \u0027"},{"line_number":740,"context_line":"                    \u0027instance to other host. Changing the choice of this \u0027"},{"line_number":741,"context_line":"                    \u0027option will also affect existing instances on this host \u0027"},{"line_number":742,"context_line":"                    \u0027once they stopped and started again.\u0027"},{"line_number":743,"context_line":"               ),"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_f89da557","line":740,"range":{"start_line":740,"start_character":33,"end_line":740,"end_character":38},"updated":"2019-02-04 15:17:07.000000000","message":"another","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":737,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":738,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS. All choices \u0027"},{"line_number":739,"context_line":"                    \u0027except ``unique`` will change the serial when migrating \u0027"},{"line_number":740,"context_line":"                    \u0027instance to other host. Changing the choice of this \u0027"},{"line_number":741,"context_line":"                    \u0027option will also affect existing instances on this host \u0027"},{"line_number":742,"context_line":"                    \u0027once they stopped and started again.\u0027"},{"line_number":743,"context_line":"               ),"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_492505ab","line":740,"range":{"start_line":740,"start_character":21,"end_line":740,"end_character":29},"in_reply_to":"9fdfeff1_d8a0e194","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":737,"context_line":"               help\u003d\u0027The data source used to the populate the host \"serial\" \u0027"},{"line_number":738,"context_line":"                    \u0027UUID exposed to guest in the virtual BIOS. All choices \u0027"},{"line_number":739,"context_line":"                    \u0027except ``unique`` will change the serial when migrating \u0027"},{"line_number":740,"context_line":"                    \u0027instance to other host. Changing the choice of this \u0027"},{"line_number":741,"context_line":"                    \u0027option will also affect existing instances on this host \u0027"},{"line_number":742,"context_line":"                    \u0027once they stopped and started again.\u0027"},{"line_number":743,"context_line":"               ),"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_e93959d8","line":740,"range":{"start_line":740,"start_character":33,"end_line":740,"end_character":38},"in_reply_to":"9fdfeff1_f89da557","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":739,"context_line":"                    \u0027except ``unique`` will change the serial when migrating \u0027"},{"line_number":740,"context_line":"                    \u0027instance to other host. Changing the choice of this \u0027"},{"line_number":741,"context_line":"                    \u0027option will also affect existing instances on this host \u0027"},{"line_number":742,"context_line":"                    \u0027once they stopped and started again.\u0027"},{"line_number":743,"context_line":"               ),"},{"line_number":744,"context_line":"    cfg.IntOpt(\u0027mem_stats_period_seconds\u0027,"},{"line_number":745,"context_line":"               default\u003d10,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_b8a71da8","line":742,"range":{"start_line":742,"start_character":26,"end_line":742,"end_character":30},"updated":"2019-02-04 15:17:07.000000000","message":"they are","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":739,"context_line":"                    \u0027except ``unique`` will change the serial when migrating \u0027"},{"line_number":740,"context_line":"                    \u0027instance to other host. Changing the choice of this \u0027"},{"line_number":741,"context_line":"                    \u0027option will also affect existing instances on this host \u0027"},{"line_number":742,"context_line":"                    \u0027once they stopped and started again.\u0027"},{"line_number":743,"context_line":"               ),"},{"line_number":744,"context_line":"    cfg.IntOpt(\u0027mem_stats_period_seconds\u0027,"},{"line_number":745,"context_line":"               default\u003d10,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_0937fde5","line":742,"range":{"start_line":742,"start_character":26,"end_line":742,"end_character":30},"in_reply_to":"9fdfeff1_b8a71da8","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                    \u0027instance to other host. Changing the choice of this \u0027"},{"line_number":741,"context_line":"                    \u0027option will also affect existing instances on this host \u0027"},{"line_number":742,"context_line":"                    \u0027once they stopped and started again.\u0027"},{"line_number":743,"context_line":"               ),"},{"line_number":744,"context_line":"    cfg.IntOpt(\u0027mem_stats_period_seconds\u0027,"},{"line_number":745,"context_line":"               default\u003d10,"},{"line_number":746,"context_line":"               help\u003d\u0027A number of seconds to memory usage statistics period. \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_b8d5dde7","line":743,"updated":"2019-02-04 15:17:07.000000000","message":"Maybe we should add something like, \"It is recommended to use the default (``unique``) since that will not change when an instance is migrated. However, if you have a need for host-specific serials in addition to per-instance serial numbers, then consider restricting flavors via host aggregates.\"","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":740,"context_line":"                    \u0027instance to other host. Changing the choice of this \u0027"},{"line_number":741,"context_line":"                    \u0027option will also affect existing instances on this host \u0027"},{"line_number":742,"context_line":"                    \u0027once they stopped and started again.\u0027"},{"line_number":743,"context_line":"               ),"},{"line_number":744,"context_line":"    cfg.IntOpt(\u0027mem_stats_period_seconds\u0027,"},{"line_number":745,"context_line":"               default\u003d10,"},{"line_number":746,"context_line":"               help\u003d\u0027A number of seconds to memory usage statistics period. \u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_694b295f","line":743,"in_reply_to":"9fdfeff1_b8d5dde7","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"03c61906fdce20aa7ef9cf121ce56fdc46e7b618","unresolved":false,"context_lines":[{"line_number":17928,"context_line":"            mock_exists.side_effect \u003d fake_exists"},{"line_number":17929,"context_line":"            yield mock_exists"},{"line_number":17930,"context_line":""},{"line_number":17931,"context_line":"    def _test_get_guest_config_sysinfo_serial(self, expected_serial):"},{"line_number":17932,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":17933,"context_line":""},{"line_number":17934,"context_line":"        test_instance \u003d _create_test_instance()"},{"line_number":17935,"context_line":"        instance_ref \u003d objects.Instance(**test_instance)"},{"line_number":17936,"context_line":""},{"line_number":17937,"context_line":"        cfg \u003d drvr._get_guest_config_sysinfo(instance_ref)"},{"line_number":17938,"context_line":""},{"line_number":17939,"context_line":"        self.assertIsInstance(cfg, vconfig.LibvirtConfigGuestSysinfo)"},{"line_number":17940,"context_line":"        self.assertEqual(version.vendor_string(),"},{"line_number":17941,"context_line":"                         cfg.system_manufacturer)"},{"line_number":17942,"context_line":"        self.assertEqual(version.product_string(),"},{"line_number":17943,"context_line":"                         cfg.system_product)"},{"line_number":17944,"context_line":"        self.assertEqual(version.version_string_with_package(),"},{"line_number":17945,"context_line":"                         cfg.system_version)"},{"line_number":17946,"context_line":"        self.assertEqual(expected_serial,"},{"line_number":17947,"context_line":"                         cfg.system_serial)"},{"line_number":17948,"context_line":"        self.assertEqual(instance_ref[\u0027uuid\u0027],"},{"line_number":17949,"context_line":"                         cfg.system_uuid)"},{"line_number":17950,"context_line":"        self.assertEqual(\"Virtual Machine\","},{"line_number":17951,"context_line":"                         cfg.system_family)"},{"line_number":17952,"context_line":""},{"line_number":17953,"context_line":"    def test_get_guest_config_sysinfo_serial_none(self):"},{"line_number":17954,"context_line":"        self.flags(sysinfo_serial\u003d\"none\", group\u003d\"libvirt\")"},{"line_number":17955,"context_line":"        self._test_get_guest_config_sysinfo_serial(None)"},{"line_number":17956,"context_line":""},{"line_number":17957,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver,"},{"line_number":17958,"context_line":"                       \"_get_host_sysinfo_serial_hardware\")"},{"line_number":17959,"context_line":"    def test_get_guest_config_sysinfo_serial_hardware(self, mock_uuid):"},{"line_number":17960,"context_line":"        self.flags(sysinfo_serial\u003d\"hardware\", group\u003d\"libvirt\")"},{"line_number":17961,"context_line":""},{"line_number":17962,"context_line":"        theuuid \u003d \"56b40135-a973-4eb3-87bb-a2382a3e6dbc\""},{"line_number":17963,"context_line":"        mock_uuid.return_value \u003d theuuid"},{"line_number":17964,"context_line":""},{"line_number":17965,"context_line":"        self._test_get_guest_config_sysinfo_serial(theuuid)"},{"line_number":17966,"context_line":""},{"line_number":17967,"context_line":"    def test_get_guest_config_sysinfo_serial_os(self):"},{"line_number":17968,"context_line":"        self.flags(sysinfo_serial\u003d\"os\", group\u003d\"libvirt\")"},{"line_number":17969,"context_line":"        theuuid \u003d \"56b40135-a973-4eb3-87bb-a2382a3e6dbc\""},{"line_number":17970,"context_line":"        with test.nested("},{"line_number":17971,"context_line":"                mock.patch.object(six.moves.builtins, \"open\","},{"line_number":17972,"context_line":"                    mock.mock_open(read_data\u003dtheuuid)),"},{"line_number":17973,"context_line":"                self.patch_exists(True)):"},{"line_number":17974,"context_line":"            self._test_get_guest_config_sysinfo_serial(theuuid)"},{"line_number":17975,"context_line":""},{"line_number":17976,"context_line":"    def test_get_guest_config_sysinfo_serial_os_empty_machine_id(self):"},{"line_number":17977,"context_line":"        self.flags(sysinfo_serial\u003d\"os\", group\u003d\"libvirt\")"},{"line_number":17978,"context_line":"        with test.nested("},{"line_number":17979,"context_line":"                mock.patch.object(six.moves.builtins, \"open\","},{"line_number":17980,"context_line":"                                  mock.mock_open(read_data\u003d\"\")),"},{"line_number":17981,"context_line":"                self.patch_exists(True)):"},{"line_number":17982,"context_line":"            self.assertRaises(exception.NovaException,"},{"line_number":17983,"context_line":"                    self._test_get_guest_config_sysinfo_serial,"},{"line_number":17984,"context_line":"                    None)"},{"line_number":17985,"context_line":""},{"line_number":17986,"context_line":"    def test_get_guest_config_sysinfo_serial_os_no_machine_id_file(self):"},{"line_number":17987,"context_line":"        self.flags(sysinfo_serial\u003d\"os\", group\u003d\"libvirt\")"},{"line_number":17988,"context_line":"        with self.patch_exists(False):"},{"line_number":17989,"context_line":"            self.assertRaises(exception.NovaException,"},{"line_number":17990,"context_line":"                    self._test_get_guest_config_sysinfo_serial,"},{"line_number":17991,"context_line":"                    None)"},{"line_number":17992,"context_line":""},{"line_number":17993,"context_line":"    def test_get_guest_config_sysinfo_serial_auto_hardware(self):"},{"line_number":17994,"context_line":"        self.flags(sysinfo_serial\u003d\"auto\", group\u003d\"libvirt\")"},{"line_number":17995,"context_line":""},{"line_number":17996,"context_line":"        real_exists \u003d os.path.exists"},{"line_number":17997,"context_line":"        with test.nested("},{"line_number":17998,"context_line":"                mock.patch.object(os.path, \"exists\"),"},{"line_number":17999,"context_line":"                mock.patch.object(libvirt_driver.LibvirtDriver,"},{"line_number":18000,"context_line":"                                  \"_get_host_sysinfo_serial_hardware\")"},{"line_number":18001,"context_line":"        ) as (mock_exists, mock_uuid):"},{"line_number":18002,"context_line":"            def fake_exists(filename):"},{"line_number":18003,"context_line":"                if filename \u003d\u003d \"/etc/machine-id\":"},{"line_number":18004,"context_line":"                    return False"},{"line_number":18005,"context_line":"                return real_exists(filename)"},{"line_number":18006,"context_line":""},{"line_number":18007,"context_line":"            mock_exists.side_effect \u003d fake_exists"},{"line_number":18008,"context_line":""},{"line_number":18009,"context_line":"            theuuid \u003d \"56b40135-a973-4eb3-87bb-a2382a3e6dbc\""},{"line_number":18010,"context_line":"            mock_uuid.return_value \u003d theuuid"},{"line_number":18011,"context_line":""},{"line_number":18012,"context_line":"            self._test_get_guest_config_sysinfo_serial(theuuid)"},{"line_number":18013,"context_line":""},{"line_number":18014,"context_line":"    def test_get_guest_config_sysinfo_serial_auto_os(self):"},{"line_number":18015,"context_line":"        self.flags(sysinfo_serial\u003d\"auto\", group\u003d\"libvirt\")"},{"line_number":18016,"context_line":""},{"line_number":18017,"context_line":"        real_exists \u003d os.path.exists"},{"line_number":18018,"context_line":"        real_open \u003d builtins.open"},{"line_number":18019,"context_line":"        with test.nested("},{"line_number":18020,"context_line":"                mock.patch.object(os.path, \"exists\"),"},{"line_number":18021,"context_line":"                mock.patch.object(builtins, \"open\"),"},{"line_number":18022,"context_line":"        ) as (mock_exists, mock_open):"},{"line_number":18023,"context_line":"            def fake_exists(filename):"},{"line_number":18024,"context_line":"                if filename \u003d\u003d \"/etc/machine-id\":"},{"line_number":18025,"context_line":"                    return True"},{"line_number":18026,"context_line":"                return real_exists(filename)"},{"line_number":18027,"context_line":""},{"line_number":18028,"context_line":"            mock_exists.side_effect \u003d fake_exists"},{"line_number":18029,"context_line":""},{"line_number":18030,"context_line":"            theuuid \u003d \"56b40135-a973-4eb3-87bb-a2382a3e6dbc\""},{"line_number":18031,"context_line":""},{"line_number":18032,"context_line":"            def fake_open(filename, *args, **kwargs):"},{"line_number":18033,"context_line":"                if filename \u003d\u003d \"/etc/machine-id\":"},{"line_number":18034,"context_line":"                    h \u003d mock.MagicMock()"},{"line_number":18035,"context_line":"                    h.read.return_value \u003d theuuid"},{"line_number":18036,"context_line":"                    h.__enter__.return_value \u003d h"},{"line_number":18037,"context_line":"                    return h"},{"line_number":18038,"context_line":"                return real_open(filename, *args, **kwargs)"},{"line_number":18039,"context_line":""},{"line_number":18040,"context_line":"            mock_open.side_effect \u003d fake_open"},{"line_number":18041,"context_line":""},{"line_number":18042,"context_line":"            self._test_get_guest_config_sysinfo_serial(theuuid)"},{"line_number":18043,"context_line":""},{"line_number":18044,"context_line":""},{"line_number":18045,"context_line":"class HostStateTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_dfa9c223","line":18042,"range":{"start_line":17931,"start_character":0,"end_line":18042,"end_character":63},"updated":"2019-02-01 15:14:47.000000000","message":"Put the new test closer to these existing tests.","commit_id":"5158b509703a111c3f1cd5dde05dfa5e50a81f20"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4dea2aa79a71e0cf5977e813706136c8156dc630","unresolved":false,"context_lines":[{"line_number":17928,"context_line":"            mock_exists.side_effect \u003d fake_exists"},{"line_number":17929,"context_line":"            yield mock_exists"},{"line_number":17930,"context_line":""},{"line_number":17931,"context_line":"    def _test_get_guest_config_sysinfo_serial(self, expected_serial):"},{"line_number":17932,"context_line":"        drvr \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)"},{"line_number":17933,"context_line":""},{"line_number":17934,"context_line":"        test_instance \u003d _create_test_instance()"},{"line_number":17935,"context_line":"        instance_ref \u003d objects.Instance(**test_instance)"},{"line_number":17936,"context_line":""},{"line_number":17937,"context_line":"        cfg \u003d drvr._get_guest_config_sysinfo(instance_ref)"},{"line_number":17938,"context_line":""},{"line_number":17939,"context_line":"        self.assertIsInstance(cfg, vconfig.LibvirtConfigGuestSysinfo)"},{"line_number":17940,"context_line":"        self.assertEqual(version.vendor_string(),"},{"line_number":17941,"context_line":"                         cfg.system_manufacturer)"},{"line_number":17942,"context_line":"        self.assertEqual(version.product_string(),"},{"line_number":17943,"context_line":"                         cfg.system_product)"},{"line_number":17944,"context_line":"        self.assertEqual(version.version_string_with_package(),"},{"line_number":17945,"context_line":"                         cfg.system_version)"},{"line_number":17946,"context_line":"        self.assertEqual(expected_serial,"},{"line_number":17947,"context_line":"                         cfg.system_serial)"},{"line_number":17948,"context_line":"        self.assertEqual(instance_ref[\u0027uuid\u0027],"},{"line_number":17949,"context_line":"                         cfg.system_uuid)"},{"line_number":17950,"context_line":"        self.assertEqual(\"Virtual Machine\","},{"line_number":17951,"context_line":"                         cfg.system_family)"},{"line_number":17952,"context_line":""},{"line_number":17953,"context_line":"    def test_get_guest_config_sysinfo_serial_none(self):"},{"line_number":17954,"context_line":"        self.flags(sysinfo_serial\u003d\"none\", group\u003d\"libvirt\")"},{"line_number":17955,"context_line":"        self._test_get_guest_config_sysinfo_serial(None)"},{"line_number":17956,"context_line":""},{"line_number":17957,"context_line":"    @mock.patch.object(libvirt_driver.LibvirtDriver,"},{"line_number":17958,"context_line":"                       \"_get_host_sysinfo_serial_hardware\")"},{"line_number":17959,"context_line":"    def test_get_guest_config_sysinfo_serial_hardware(self, mock_uuid):"},{"line_number":17960,"context_line":"        self.flags(sysinfo_serial\u003d\"hardware\", group\u003d\"libvirt\")"},{"line_number":17961,"context_line":""},{"line_number":17962,"context_line":"        theuuid \u003d \"56b40135-a973-4eb3-87bb-a2382a3e6dbc\""},{"line_number":17963,"context_line":"        mock_uuid.return_value \u003d theuuid"},{"line_number":17964,"context_line":""},{"line_number":17965,"context_line":"        self._test_get_guest_config_sysinfo_serial(theuuid)"},{"line_number":17966,"context_line":""},{"line_number":17967,"context_line":"    def test_get_guest_config_sysinfo_serial_os(self):"},{"line_number":17968,"context_line":"        self.flags(sysinfo_serial\u003d\"os\", group\u003d\"libvirt\")"},{"line_number":17969,"context_line":"        theuuid \u003d \"56b40135-a973-4eb3-87bb-a2382a3e6dbc\""},{"line_number":17970,"context_line":"        with test.nested("},{"line_number":17971,"context_line":"                mock.patch.object(six.moves.builtins, \"open\","},{"line_number":17972,"context_line":"                    mock.mock_open(read_data\u003dtheuuid)),"},{"line_number":17973,"context_line":"                self.patch_exists(True)):"},{"line_number":17974,"context_line":"            self._test_get_guest_config_sysinfo_serial(theuuid)"},{"line_number":17975,"context_line":""},{"line_number":17976,"context_line":"    def test_get_guest_config_sysinfo_serial_os_empty_machine_id(self):"},{"line_number":17977,"context_line":"        self.flags(sysinfo_serial\u003d\"os\", group\u003d\"libvirt\")"},{"line_number":17978,"context_line":"        with test.nested("},{"line_number":17979,"context_line":"                mock.patch.object(six.moves.builtins, \"open\","},{"line_number":17980,"context_line":"                                  mock.mock_open(read_data\u003d\"\")),"},{"line_number":17981,"context_line":"                self.patch_exists(True)):"},{"line_number":17982,"context_line":"            self.assertRaises(exception.NovaException,"},{"line_number":17983,"context_line":"                    self._test_get_guest_config_sysinfo_serial,"},{"line_number":17984,"context_line":"                    None)"},{"line_number":17985,"context_line":""},{"line_number":17986,"context_line":"    def test_get_guest_config_sysinfo_serial_os_no_machine_id_file(self):"},{"line_number":17987,"context_line":"        self.flags(sysinfo_serial\u003d\"os\", group\u003d\"libvirt\")"},{"line_number":17988,"context_line":"        with self.patch_exists(False):"},{"line_number":17989,"context_line":"            self.assertRaises(exception.NovaException,"},{"line_number":17990,"context_line":"                    self._test_get_guest_config_sysinfo_serial,"},{"line_number":17991,"context_line":"                    None)"},{"line_number":17992,"context_line":""},{"line_number":17993,"context_line":"    def test_get_guest_config_sysinfo_serial_auto_hardware(self):"},{"line_number":17994,"context_line":"        self.flags(sysinfo_serial\u003d\"auto\", group\u003d\"libvirt\")"},{"line_number":17995,"context_line":""},{"line_number":17996,"context_line":"        real_exists \u003d os.path.exists"},{"line_number":17997,"context_line":"        with test.nested("},{"line_number":17998,"context_line":"                mock.patch.object(os.path, \"exists\"),"},{"line_number":17999,"context_line":"                mock.patch.object(libvirt_driver.LibvirtDriver,"},{"line_number":18000,"context_line":"                                  \"_get_host_sysinfo_serial_hardware\")"},{"line_number":18001,"context_line":"        ) as (mock_exists, mock_uuid):"},{"line_number":18002,"context_line":"            def fake_exists(filename):"},{"line_number":18003,"context_line":"                if filename \u003d\u003d \"/etc/machine-id\":"},{"line_number":18004,"context_line":"                    return False"},{"line_number":18005,"context_line":"                return real_exists(filename)"},{"line_number":18006,"context_line":""},{"line_number":18007,"context_line":"            mock_exists.side_effect \u003d fake_exists"},{"line_number":18008,"context_line":""},{"line_number":18009,"context_line":"            theuuid \u003d \"56b40135-a973-4eb3-87bb-a2382a3e6dbc\""},{"line_number":18010,"context_line":"            mock_uuid.return_value \u003d theuuid"},{"line_number":18011,"context_line":""},{"line_number":18012,"context_line":"            self._test_get_guest_config_sysinfo_serial(theuuid)"},{"line_number":18013,"context_line":""},{"line_number":18014,"context_line":"    def test_get_guest_config_sysinfo_serial_auto_os(self):"},{"line_number":18015,"context_line":"        self.flags(sysinfo_serial\u003d\"auto\", group\u003d\"libvirt\")"},{"line_number":18016,"context_line":""},{"line_number":18017,"context_line":"        real_exists \u003d os.path.exists"},{"line_number":18018,"context_line":"        real_open \u003d builtins.open"},{"line_number":18019,"context_line":"        with test.nested("},{"line_number":18020,"context_line":"                mock.patch.object(os.path, \"exists\"),"},{"line_number":18021,"context_line":"                mock.patch.object(builtins, \"open\"),"},{"line_number":18022,"context_line":"        ) as (mock_exists, mock_open):"},{"line_number":18023,"context_line":"            def fake_exists(filename):"},{"line_number":18024,"context_line":"                if filename \u003d\u003d \"/etc/machine-id\":"},{"line_number":18025,"context_line":"                    return True"},{"line_number":18026,"context_line":"                return real_exists(filename)"},{"line_number":18027,"context_line":""},{"line_number":18028,"context_line":"            mock_exists.side_effect \u003d fake_exists"},{"line_number":18029,"context_line":""},{"line_number":18030,"context_line":"            theuuid \u003d \"56b40135-a973-4eb3-87bb-a2382a3e6dbc\""},{"line_number":18031,"context_line":""},{"line_number":18032,"context_line":"            def fake_open(filename, *args, **kwargs):"},{"line_number":18033,"context_line":"                if filename \u003d\u003d \"/etc/machine-id\":"},{"line_number":18034,"context_line":"                    h \u003d mock.MagicMock()"},{"line_number":18035,"context_line":"                    h.read.return_value \u003d theuuid"},{"line_number":18036,"context_line":"                    h.__enter__.return_value \u003d h"},{"line_number":18037,"context_line":"                    return h"},{"line_number":18038,"context_line":"                return real_open(filename, *args, **kwargs)"},{"line_number":18039,"context_line":""},{"line_number":18040,"context_line":"            mock_open.side_effect \u003d fake_open"},{"line_number":18041,"context_line":""},{"line_number":18042,"context_line":"            self._test_get_guest_config_sysinfo_serial(theuuid)"},{"line_number":18043,"context_line":""},{"line_number":18044,"context_line":""},{"line_number":18045,"context_line":"class HostStateTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_0b7947c6","line":18042,"range":{"start_line":17931,"start_character":0,"end_line":18042,"end_character":63},"in_reply_to":"9fdfeff1_dfa9c223","updated":"2019-02-02 01:53:04.000000000","message":"Done ... I was wondering why there are no existing tests about this....","commit_id":"5158b509703a111c3f1cd5dde05dfa5e50a81f20"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":17928,"context_line":"        self.assertEqual(version.version_string_with_package(),"},{"line_number":17929,"context_line":"                         cfg.system_version)"},{"line_number":17930,"context_line":"        if expected_serial \u003d\u003d \u0027instance_uuid\u0027:"},{"line_number":17931,"context_line":"            expected_serial \u003d instance_ref[\u0027uuid\u0027]"},{"line_number":17932,"context_line":"        self.assertEqual(expected_serial,"},{"line_number":17933,"context_line":"                         cfg.system_serial)"},{"line_number":17934,"context_line":"        self.assertEqual(instance_ref[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_f8f4c589","line":17931,"range":{"start_line":17931,"start_character":30,"end_line":17931,"end_character":50},"updated":"2019-02-04 15:17:07.000000000","message":"This is an object so use dot notation: instance_ref.uuid","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":17928,"context_line":"        self.assertEqual(version.version_string_with_package(),"},{"line_number":17929,"context_line":"                         cfg.system_version)"},{"line_number":17930,"context_line":"        if expected_serial \u003d\u003d \u0027instance_uuid\u0027:"},{"line_number":17931,"context_line":"            expected_serial \u003d instance_ref[\u0027uuid\u0027]"},{"line_number":17932,"context_line":"        self.assertEqual(expected_serial,"},{"line_number":17933,"context_line":"                         cfg.system_serial)"},{"line_number":17934,"context_line":"        self.assertEqual(instance_ref[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_495ae52a","line":17931,"range":{"start_line":17931,"start_character":30,"end_line":17931,"end_character":50},"in_reply_to":"9fdfeff1_f8f4c589","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a5083910c6adc630b14fc23416fca78ee83c16e9","unresolved":false,"context_lines":[{"line_number":4888,"context_line":"            if caps.host.cpu.arch in (fields.Architecture.I686,"},{"line_number":4889,"context_line":"                                      fields.Architecture.X86_64):"},{"line_number":4890,"context_line":"                use_unique_serial \u003d False"},{"line_number":4891,"context_line":"                if (image_meta.properties.get(\u0027hw_unique_serial\u0027, None) or"},{"line_number":4892,"context_line":"                        flavor.extra_specs.get(\u0027hw:unique_serial\u0027, None) or"},{"line_number":4893,"context_line":"                        CONF.libvirt.sysinfo_serial \u003d\u003d \u0027unique\u0027):"},{"line_number":4894,"context_line":"                    use_unique_serial \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_bdea3aa9","line":4891,"range":{"start_line":4891,"start_character":64,"end_line":4891,"end_character":70},"updated":"2019-01-17 06:22:56.000000000","message":"nit: It is not necessary.","commit_id":"397f7ea9f686eaf8d0ca8f267f26e29ded710bb3"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"a5083910c6adc630b14fc23416fca78ee83c16e9","unresolved":false,"context_lines":[{"line_number":4889,"context_line":"                                      fields.Architecture.X86_64):"},{"line_number":4890,"context_line":"                use_unique_serial \u003d False"},{"line_number":4891,"context_line":"                if (image_meta.properties.get(\u0027hw_unique_serial\u0027, None) or"},{"line_number":4892,"context_line":"                        flavor.extra_specs.get(\u0027hw:unique_serial\u0027, None) or"},{"line_number":4893,"context_line":"                        CONF.libvirt.sysinfo_serial \u003d\u003d \u0027unique\u0027):"},{"line_number":4894,"context_line":"                    use_unique_serial \u003d True"},{"line_number":4895,"context_line":"                guest.sysinfo \u003d self._get_guest_config_sysinfo("}],"source_content_type":"text/x-python","patch_set":4,"id":"bfdaf3ff_5dd1cefa","line":4892,"range":{"start_line":4892,"start_character":65,"end_line":4892,"end_character":71},"updated":"2019-01-17 06:22:56.000000000","message":"ditto","commit_id":"397f7ea9f686eaf8d0ca8f267f26e29ded710bb3"},{"author":{"_account_id":25113,"name":"Fan Zhang","email":"zh.f@outlook.com","username":"fanzhang"},"change_message_id":"f25561a8b73c88ed248b0f9e11d802dc3118672d","unresolved":false,"context_lines":[{"line_number":4888,"context_line":"            if caps.host.cpu.arch in (fields.Architecture.I686,"},{"line_number":4889,"context_line":"                                      fields.Architecture.X86_64):"},{"line_number":4890,"context_line":"                use_unique_serial \u003d False"},{"line_number":4891,"context_line":"                if (image_meta.properties.get(\u0027hw_unique_serial\u0027) or"},{"line_number":4892,"context_line":"                        flavor.extra_specs.get(\u0027hw:unique_serial\u0027) or"},{"line_number":4893,"context_line":"                        CONF.libvirt.sysinfo_serial \u003d\u003d \u0027unique\u0027):"},{"line_number":4894,"context_line":"                    use_unique_serial \u003d True"},{"line_number":4895,"context_line":"                guest.sysinfo \u003d self._get_guest_config_sysinfo("},{"line_number":4896,"context_line":"                    instance, use_unique_serial)"},{"line_number":4897,"context_line":"                guest.os_smbios \u003d vconfig.LibvirtConfigGuestSMBIOS()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_6e9e7db9","line":4894,"range":{"start_line":4891,"start_character":16,"end_line":4894,"end_character":44},"updated":"2019-01-24 06:41:49.000000000","message":"Prefer to use a function to do the checks and return `use_unique_serial`, there is a function `nova.virt.hardware._get_flavor_image_meta`. And better to check the boolean value using `oslo_utils.strutils.bool_from_string` I guess?","commit_id":"5158327bc8a2fbc4c3cabcf3fd964e5f61285fa1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5f5639661087d5ceda279a26049caccc59089690","unresolved":false,"context_lines":[{"line_number":4888,"context_line":"            if caps.host.cpu.arch in (fields.Architecture.I686,"},{"line_number":4889,"context_line":"                                      fields.Architecture.X86_64):"},{"line_number":4890,"context_line":"                use_unique_serial \u003d False"},{"line_number":4891,"context_line":"                if (image_meta.properties.get(\u0027hw_unique_serial\u0027) or"},{"line_number":4892,"context_line":"                        flavor.extra_specs.get(\u0027hw:unique_serial\u0027) or"},{"line_number":4893,"context_line":"                        CONF.libvirt.sysinfo_serial \u003d\u003d \u0027unique\u0027):"},{"line_number":4894,"context_line":"                    use_unique_serial \u003d True"},{"line_number":4895,"context_line":"                guest.sysinfo \u003d self._get_guest_config_sysinfo("},{"line_number":4896,"context_line":"                    instance, use_unique_serial)"},{"line_number":4897,"context_line":"                guest.os_smbios \u003d vconfig.LibvirtConfigGuestSMBIOS()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_eca2709a","line":4894,"range":{"start_line":4891,"start_character":16,"end_line":4894,"end_character":44},"in_reply_to":"9fdfeff1_2e5dd5e8","updated":"2019-01-24 14:28:34.000000000","message":"Another idea is rather than a boolean, we have an extra spec and image property which is an enum with only one choice, something like:\n\nhw:guest_serial\u003dunique\n\nhw_guest_serial\u003dunique\n\nIf set, it can only be set to \"unique\". I realize the spec would need to be updated but that could resolve the confusion over the boolean value and ignoring and/or disallowing False.","commit_id":"5158327bc8a2fbc4c3cabcf3fd964e5f61285fa1"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"1f675a4822e6c313db9a6986dac00bd629bd6bf1","unresolved":false,"context_lines":[{"line_number":4888,"context_line":"            if caps.host.cpu.arch in (fields.Architecture.I686,"},{"line_number":4889,"context_line":"                                      fields.Architecture.X86_64):"},{"line_number":4890,"context_line":"                use_unique_serial \u003d False"},{"line_number":4891,"context_line":"                if (image_meta.properties.get(\u0027hw_unique_serial\u0027) or"},{"line_number":4892,"context_line":"                        flavor.extra_specs.get(\u0027hw:unique_serial\u0027) or"},{"line_number":4893,"context_line":"                        CONF.libvirt.sysinfo_serial \u003d\u003d \u0027unique\u0027):"},{"line_number":4894,"context_line":"                    use_unique_serial \u003d True"},{"line_number":4895,"context_line":"                guest.sysinfo \u003d self._get_guest_config_sysinfo("},{"line_number":4896,"context_line":"                    instance, use_unique_serial)"},{"line_number":4897,"context_line":"                guest.os_smbios \u003d vconfig.LibvirtConfigGuestSMBIOS()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_5f6e32c9","line":4894,"range":{"start_line":4891,"start_character":16,"end_line":4894,"end_character":44},"in_reply_to":"9fdfeff1_4712770b","updated":"2019-02-01 14:48:04.000000000","message":"I\u0027m totally missing why making this a single-value enum is any different than the boolean that it is here. They seem the same to me while there is only one value. The enum is nicer because it leaves us room in the future to come up with different options, but while there is only one value it seems weird.","commit_id":"5158327bc8a2fbc4c3cabcf3fd964e5f61285fa1"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"f1c4da0d47bde2f4d49b37657f555c1afa4cfdca","unresolved":false,"context_lines":[{"line_number":4888,"context_line":"            if caps.host.cpu.arch in (fields.Architecture.I686,"},{"line_number":4889,"context_line":"                                      fields.Architecture.X86_64):"},{"line_number":4890,"context_line":"                use_unique_serial \u003d False"},{"line_number":4891,"context_line":"                if (image_meta.properties.get(\u0027hw_unique_serial\u0027) or"},{"line_number":4892,"context_line":"                        flavor.extra_specs.get(\u0027hw:unique_serial\u0027) or"},{"line_number":4893,"context_line":"                        CONF.libvirt.sysinfo_serial \u003d\u003d \u0027unique\u0027):"},{"line_number":4894,"context_line":"                    use_unique_serial \u003d True"},{"line_number":4895,"context_line":"                guest.sysinfo \u003d self._get_guest_config_sysinfo("},{"line_number":4896,"context_line":"                    instance, use_unique_serial)"},{"line_number":4897,"context_line":"                guest.os_smbios \u003d vconfig.LibvirtConfigGuestSMBIOS()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_2e5dd5e8","line":4894,"range":{"start_line":4891,"start_character":16,"end_line":4894,"end_character":44},"in_reply_to":"9fdfeff1_6e9e7db9","updated":"2019-01-24 06:46:44.000000000","message":"No, the idea was to only allow true value for thise extra_spec, otherwise we have to handle ``false`` condition, which seems useless. I\u0027m considering whether we need that, we can wait to see what others think about this. I personally thinks it is useless, as nobody will specify hw:unique_serial\u003dfalse IMO.","commit_id":"5158327bc8a2fbc4c3cabcf3fd964e5f61285fa1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6f5ca2e8134305f0a18dca739c135c8a9d80e746","unresolved":false,"context_lines":[{"line_number":4888,"context_line":"            if caps.host.cpu.arch in (fields.Architecture.I686,"},{"line_number":4889,"context_line":"                                      fields.Architecture.X86_64):"},{"line_number":4890,"context_line":"                use_unique_serial \u003d False"},{"line_number":4891,"context_line":"                if (image_meta.properties.get(\u0027hw_unique_serial\u0027) or"},{"line_number":4892,"context_line":"                        flavor.extra_specs.get(\u0027hw:unique_serial\u0027) or"},{"line_number":4893,"context_line":"                        CONF.libvirt.sysinfo_serial \u003d\u003d \u0027unique\u0027):"},{"line_number":4894,"context_line":"                    use_unique_serial \u003d True"},{"line_number":4895,"context_line":"                guest.sysinfo \u003d self._get_guest_config_sysinfo("},{"line_number":4896,"context_line":"                    instance, use_unique_serial)"},{"line_number":4897,"context_line":"                guest.os_smbios \u003d vconfig.LibvirtConfigGuestSMBIOS()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_4712770b","line":4894,"range":{"start_line":4891,"start_character":16,"end_line":4894,"end_character":44},"in_reply_to":"9fdfeff1_c7b3c74c","updated":"2019-01-24 15:09:57.000000000","message":"ML thread to make sure people are OK with this:\n\nhttp://lists.openstack.org/pipermail/openstack-discuss/2019-January/002037.html","commit_id":"5158327bc8a2fbc4c3cabcf3fd964e5f61285fa1"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"fa8612e7ec0225b3f8aac6a39c17d7099c77379c","unresolved":false,"context_lines":[{"line_number":4888,"context_line":"            if caps.host.cpu.arch in (fields.Architecture.I686,"},{"line_number":4889,"context_line":"                                      fields.Architecture.X86_64):"},{"line_number":4890,"context_line":"                use_unique_serial \u003d False"},{"line_number":4891,"context_line":"                if (image_meta.properties.get(\u0027hw_unique_serial\u0027) or"},{"line_number":4892,"context_line":"                        flavor.extra_specs.get(\u0027hw:unique_serial\u0027) or"},{"line_number":4893,"context_line":"                        CONF.libvirt.sysinfo_serial \u003d\u003d \u0027unique\u0027):"},{"line_number":4894,"context_line":"                    use_unique_serial \u003d True"},{"line_number":4895,"context_line":"                guest.sysinfo \u003d self._get_guest_config_sysinfo("},{"line_number":4896,"context_line":"                    instance, use_unique_serial)"},{"line_number":4897,"context_line":"                guest.os_smbios \u003d vconfig.LibvirtConfigGuestSMBIOS()"}],"source_content_type":"text/x-python","patch_set":7,"id":"9fdfeff1_c7b3c74c","line":4894,"range":{"start_line":4891,"start_character":16,"end_line":4894,"end_character":44},"in_reply_to":"9fdfeff1_eca2709a","updated":"2019-01-24 15:01:10.000000000","message":"+1 for enum and the only value is \u0027unique\u0027, I think False value will confuse the end user.","commit_id":"5158327bc8a2fbc4c3cabcf3fd964e5f61285fa1"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        self._volume_api \u003d cinder.API()"},{"line_number":367,"context_line":"        self._image_api \u003d image.API()"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        sysinfo_serial_funcs \u003d {"},{"line_number":370,"context_line":"            \u0027none\u0027: lambda: None,"},{"line_number":371,"context_line":"            \u0027hardware\u0027: self._get_host_sysinfo_serial_hardware,"},{"line_number":372,"context_line":"            \u0027os\u0027: self._get_host_sysinfo_serial_os,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_1833c964","line":369,"range":{"start_line":369,"start_character":8,"end_line":369,"end_character":28},"updated":"2019-02-04 15:17:07.000000000","message":"It might be worth noting here with a comment that the \"unique\" choice does not have a special function since it is just the instance.uuid value.","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8005c260d3fee4a93a20c75a19a26599c5ed2469","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        self._volume_api \u003d cinder.API()"},{"line_number":367,"context_line":"        self._image_api \u003d image.API()"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        sysinfo_serial_funcs \u003d {"},{"line_number":370,"context_line":"            \u0027none\u0027: lambda: None,"},{"line_number":371,"context_line":"            \u0027hardware\u0027: self._get_host_sysinfo_serial_hardware,"},{"line_number":372,"context_line":"            \u0027os\u0027: self._get_host_sysinfo_serial_os,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_3849ed8a","line":369,"range":{"start_line":369,"start_character":8,"end_line":369,"end_character":28},"in_reply_to":"9fdfeff1_1833c964","updated":"2019-02-04 15:27:20.000000000","message":"Or just refactor it to pass the instance to these functions, and make unique an item in here so that it\u0027s not just a special case below.","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0f4eec752c4e59496f748ae20134b6577c85602d","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        self._volume_api \u003d cinder.API()"},{"line_number":367,"context_line":"        self._image_api \u003d image.API()"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        sysinfo_serial_funcs \u003d {"},{"line_number":370,"context_line":"            \u0027none\u0027: lambda: None,"},{"line_number":371,"context_line":"            \u0027hardware\u0027: self._get_host_sysinfo_serial_hardware,"},{"line_number":372,"context_line":"            \u0027os\u0027: self._get_host_sysinfo_serial_os,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_a33372f6","line":369,"range":{"start_line":369,"start_character":8,"end_line":369,"end_character":28},"in_reply_to":"9fdfeff1_3849ed8a","updated":"2019-02-04 15:33:15.000000000","message":"That\u0027s what led me to this, since I was thinking the same thing, but each of these is a special function so passing instance in to each, checking the config and then returning the instance.uuid would also be weird. Alternatively this could just be a lambda like the \u0027none\u0027 case:\n\n\u0027unique\u0027: lambda instance: instance.uuid\n\nBut then you still have to pass the instance in for the generic function and it gets weird, so I don\u0027t have a great answer for this and am OK with how the code is already written.","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":366,"context_line":"        self._volume_api \u003d cinder.API()"},{"line_number":367,"context_line":"        self._image_api \u003d image.API()"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        sysinfo_serial_funcs \u003d {"},{"line_number":370,"context_line":"            \u0027none\u0027: lambda: None,"},{"line_number":371,"context_line":"            \u0027hardware\u0027: self._get_host_sysinfo_serial_hardware,"},{"line_number":372,"context_line":"            \u0027os\u0027: self._get_host_sysinfo_serial_os,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9fdfeff1_296e81c9","line":369,"range":{"start_line":369,"start_character":8,"end_line":369,"end_character":28},"in_reply_to":"9fdfeff1_a33372f6","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"}],"releasenotes/notes/per-instance-serial-f2e597cb05d1b09e.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"888a7aaa841f06e03bd37577bdf4e99fb1eae00b","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added the ability to read the new flavor extra spec ``hw:unique_serial``"},{"line_number":5,"context_line":"    and corresponding image property ``hw_unique_serial`` in libvirt driver,"},{"line_number":6,"context_line":"    if any of these two parameter is set to be ``True``, ``instance.uuid``"},{"line_number":7,"context_line":"    will be used as ``serial number`` within the guest regardless of the"},{"line_number":8,"context_line":"    value of ``[libvirt]/sysinfo_serial`` config option."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fdfeff1_800e4de3","line":6,"range":{"start_line":5,"start_character":75,"end_line":6,"end_character":10},"updated":"2019-01-21 15:24:49.000000000","message":". If either","commit_id":"5d9762dbf9748e5facd6e1779cad046d6b41774e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"888a7aaa841f06e03bd37577bdf4e99fb1eae00b","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added the ability to read the new flavor extra spec ``hw:unique_serial``"},{"line_number":5,"context_line":"    and corresponding image property ``hw_unique_serial`` in libvirt driver,"},{"line_number":6,"context_line":"    if any of these two parameter is set to be ``True``, ``instance.uuid``"},{"line_number":7,"context_line":"    will be used as ``serial number`` within the guest regardless of the"},{"line_number":8,"context_line":"    value of ``[libvirt]/sysinfo_serial`` config option."},{"line_number":9,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fdfeff1_00025db5","line":6,"range":{"start_line":6,"start_character":24,"end_line":6,"end_character":36},"updated":"2019-01-21 15:24:49.000000000","message":"parameters are set","commit_id":"5d9762dbf9748e5facd6e1779cad046d6b41774e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"9e6859027db907d75f00981ca572e423779f4bc1","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    Added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":11,"context_line":"    configuration which if set will result in the guest serial number being"},{"line_number":12,"context_line":"    set to ``instance.uuid`` on this host."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fdfeff1_15970293","line":12,"updated":"2019-01-21 09:21:57.000000000","message":"guess we need mention it will have side effect on existing instances... as this is important to operators to know","commit_id":"5d9762dbf9748e5facd6e1779cad046d6b41774e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"888a7aaa841f06e03bd37577bdf4e99fb1eae00b","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    Added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":11,"context_line":"    configuration which if set will result in the guest serial number being"},{"line_number":12,"context_line":"    set to ``instance.uuid`` on this host."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fdfeff1_e0d71923","line":12,"in_reply_to":"9fdfeff1_15970293","updated":"2019-01-21 15:24:49.000000000","message":"It\u0027s only a side effect if you make the change otherwise this change is backward compatible. I think it\u0027s good enough for the \"existing instance\" side effect warning to be in the configuration option itself, which is what an operator should be reading if they want to enable this.","commit_id":"5d9762dbf9748e5facd6e1779cad046d6b41774e"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"32f5b03e32020ea585c031557904c2e1b939b1a4","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    Added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":11,"context_line":"    configuration which if set will result in the guest serial number being"},{"line_number":12,"context_line":"    set to ``instance.uuid`` on this host."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"9fdfeff1_35945d37","line":12,"in_reply_to":"9fdfeff1_e0d71923","updated":"2019-01-23 03:12:18.000000000","message":"ok, understood~, thanks","commit_id":"5d9762dbf9748e5facd6e1779cad046d6b41774e"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"481e81b93afd9f98a609cda2b98a0d391c73ef0e","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    of ``[libvirt]/sysinfo_serial`` config option."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    ``[libvirt]/sysinfo_serial`` is also deprecated and will be remove"},{"line_number":10,"context_line":"    in Train release."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9fdfeff1_df6b0282","line":10,"updated":"2019-02-01 14:49:36.000000000","message":"I don\u0027t really see the point in deprecating and removing this, so I\u0027d vote not to do that part.\n\nBut +1 on not making this an api change, per my previous comments.","commit_id":"5158b509703a111c3f1cd5dde05dfa5e50a81f20"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"4dea2aa79a71e0cf5977e813706136c8156dc630","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    of ``[libvirt]/sysinfo_serial`` config option."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    ``[libvirt]/sysinfo_serial`` is also deprecated and will be remove"},{"line_number":10,"context_line":"    in Train release."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9fdfeff1_cb057f15","line":10,"in_reply_to":"9fdfeff1_df6b0282","updated":"2019-02-02 01:53:04.000000000","message":"Done","commit_id":"5158b509703a111c3f1cd5dde05dfa5e50a81f20"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e45d29a34f8f4759a817ed433b88042df6847d25","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":5,"context_line":"    configuration which if set will result in the guest serial number being"},{"line_number":6,"context_line":"    set to ``instance.uuid`` on this host. This is now the default value"},{"line_number":7,"context_line":"    of ``[libvirt]/sysinfo_serial`` config option."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    Changing this configuration will also affects the existing guest serial"},{"line_number":10,"context_line":"    number on the host. If it is changed to a different value of the valid"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9fdfeff1_d4419ca7","line":7,"updated":"2019-02-02 14:08:40.000000000","message":"Should probably make the default change an upgrade reno instead of a feature. I mean you can have a feature reno for the new choice and an upgrade reno for the default change.","commit_id":"fda1655fdcb0504120c8061b97b46eb52fdaabdc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e45d29a34f8f4759a817ed433b88042df6847d25","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    set to ``instance.uuid`` on this host. This is now the default value"},{"line_number":7,"context_line":"    of ``[libvirt]/sysinfo_serial`` config option."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"    Changing this configuration will also affects the existing guest serial"},{"line_number":10,"context_line":"    number on the host. If it is changed to a different value of the valid"},{"line_number":11,"context_line":"    choices, the existing guest serial could be changed when the instances"},{"line_number":12,"context_line":"    on this host performs ``hard_reboot`` and ``stop/start`` actions. If this"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9fdfeff1_7416b0aa","line":9,"range":{"start_line":9,"start_character":41,"end_line":9,"end_character":42},"updated":"2019-02-02 14:08:40.000000000","message":"affect\n\nI\u0027m not sure we need to put this in the reno, I would just add it to the option description because it\u0027s describing latent behavior.","commit_id":"fda1655fdcb0504120c8061b97b46eb52fdaabdc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":5,"context_line":"    configuration which if set will result in the guest serial number being"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9fdfeff1_3886cddd","line":2,"range":{"start_line":2,"start_character":0,"end_line":2,"end_character":7},"updated":"2019-02-04 15:17:07.000000000","message":"I\u0027m not sure if the first part of this should be a feature reno and the last part about the default change be an upgrade reno. It probably doesn\u0027t really matter for the content here. If there were more details, like why one would use unique (the serial does not change even if the instance is migrated) and what you can do if you need a mix of hosts with per-host serials and per-instance serials (restrict flavors via aggregates), then it would be worth splitting into separate feature and upgrade release notes.","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":5,"context_line":"    configuration which if set will result in the guest serial number being"},{"line_number":6,"context_line":"    set to ``instance.uuid`` on this host. This is now the default value"},{"line_number":7,"context_line":"    of ``[libvirt]/sysinfo_serial`` config option."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9fdfeff1_781775a5","line":6,"range":{"start_line":6,"start_character":29,"end_line":6,"end_character":41},"updated":"2019-02-04 15:17:07.000000000","message":"nit: remove this part","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":5,"context_line":"    configuration which if set will result in the guest serial number being"},{"line_number":6,"context_line":"    set to ``instance.uuid`` on this host. This is now the default value"},{"line_number":7,"context_line":"    of ``[libvirt]/sysinfo_serial`` config option."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9fdfeff1_6999e9ce","line":6,"range":{"start_line":6,"start_character":29,"end_line":6,"end_character":41},"in_reply_to":"9fdfeff1_781775a5","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"599052ae5ff17a0c6d847388390cfccb4ee1cb69","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":5,"context_line":"    configuration which if set will result in the guest serial number being"},{"line_number":6,"context_line":"    set to ``instance.uuid`` on this host. This is now the default value"},{"line_number":7,"context_line":"    of ``[libvirt]/sysinfo_serial`` config option."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9fdfeff1_f8228501","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":6},"updated":"2019-02-04 15:17:07.000000000","message":"of the","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b0d3abdb4e2941f0666a80cbbb52188ec8159477","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added a new ``unique`` choice to the ``[libvirt]/sysinfo_serial``"},{"line_number":5,"context_line":"    configuration which if set will result in the guest serial number being"},{"line_number":6,"context_line":"    set to ``instance.uuid`` on this host. This is now the default value"},{"line_number":7,"context_line":"    of ``[libvirt]/sysinfo_serial`` config option."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9fdfeff1_899e8db6","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":6},"in_reply_to":"9fdfeff1_f8228501","updated":"2019-02-04 16:54:11.000000000","message":"Done","commit_id":"dec5dd9286e0d218d3f7658879369b5d4a529a65"}]}
