)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"a5d347f1996f154afd92aebba128075981c6a41f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"could create CPU mixing instance through a flavor with following"},{"line_number":11,"context_line":"extra spec settings:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"```"},{"line_number":14,"context_line":" openstack flavor set \u003cflavor_id\u003e \\"},{"line_number":15,"context_line":" \t--property hw:cpu_policy\u003dmixed \\"},{"line_number":16,"context_line":"\t--property hw:cpu_dedicated_mask\u003d0-3,7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bf51134e_056227d8","line":13,"updated":"2020-06-29 13:31:00.000000000","message":"Done.","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e05db3aec7c35bd878b4a97c26053bdb00cfe1a4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"could create CPU mixing instance through a flavor with following"},{"line_number":11,"context_line":"extra spec settings:"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"```"},{"line_number":14,"context_line":" openstack flavor set \u003cflavor_id\u003e \\"},{"line_number":15,"context_line":" \t--property hw:cpu_policy\u003dmixed \\"},{"line_number":16,"context_line":"\t--property hw:cpu_dedicated_mask\u003d0-3,7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bf51134e_9ebd5204","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":3},"updated":"2020-06-22 12:18:18.000000000","message":"We don\u0027t render Markdown here. Can you indent this example instead?","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"a5d347f1996f154afd92aebba128075981c6a41f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"```"},{"line_number":14,"context_line":" openstack flavor set \u003cflavor_id\u003e \\"},{"line_number":15,"context_line":" \t--property hw:cpu_policy\u003dmixed \\"},{"line_number":16,"context_line":"\t--property hw:cpu_dedicated_mask\u003d0-3,7"},{"line_number":17,"context_line":"```"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Part of blueprint use-pcpu-and-vcpu-in-one-instance"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bf51134e_e55c531a","line":16,"updated":"2020-06-29 13:31:00.000000000","message":"Done.","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e05db3aec7c35bd878b4a97c26053bdb00cfe1a4","unresolved":false,"context_lines":[{"line_number":13,"context_line":"```"},{"line_number":14,"context_line":" openstack flavor set \u003cflavor_id\u003e \\"},{"line_number":15,"context_line":" \t--property hw:cpu_policy\u003dmixed \\"},{"line_number":16,"context_line":"\t--property hw:cpu_dedicated_mask\u003d0-3,7"},{"line_number":17,"context_line":"```"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Part of blueprint use-pcpu-and-vcpu-in-one-instance"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"bf51134e_1ecae29f","line":16,"updated":"2020-06-22 12:18:18.000000000","message":"can you drop the tabs","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2ff09f912a4855523f82765512d38b98c99aab5a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Wang Huaqiang \u003chuaqiang.wang@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-07-10 11:43:18 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"flavor: Enable \u0027hw:cpu_dedicated_mask\u0027 for creating a mixed instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Enable the \u0027hw:cpu_dedicated_mask\u0027 flavor extra spec interface, user"},{"line_number":10,"context_line":"could create CPU mixing instance through a flavor with following"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"bf51134e_6ba32201","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":6},"updated":"2020-07-14 11:10:54.000000000","message":"hardware?","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Wang Huaqiang \u003chuaqiang.wang@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-07-10 11:43:18 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"flavor: Enable \u0027hw:cpu_dedicated_mask\u0027 for creating a mixed instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Enable the \u0027hw:cpu_dedicated_mask\u0027 flavor extra spec interface, user"},{"line_number":10,"context_line":"could create CPU mixing instance through a flavor with following"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"bf51134e_cc66ba51","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":6},"in_reply_to":"bf51134e_6ba32201","updated":"2020-07-15 07:01:30.000000000","message":"s/flavor/hardware/\n\ndone.","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2ff09f912a4855523f82765512d38b98c99aab5a","unresolved":false,"context_lines":[{"line_number":13,"context_line":" openstack flavor set \u003cflavor_id\u003e \\"},{"line_number":14,"context_line":"        --property hw:cpu_policy\u003dmixed \\"},{"line_number":15,"context_line":"        --property hw:cpu_dedicated_mask\u003d0-3,7"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Part of blueprint use-pcpu-and-vcpu-in-one-instance"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I2a3311c08a52eb11859c68ef940a0bd755a94c6b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"bf51134e_ebb6123e","line":16,"updated":"2020-07-14 11:10:54.000000000","message":"Could you add a note that support for \u0027hw:cpu_realtime_mask\u0027 is coming later?","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":13,"context_line":" openstack flavor set \u003cflavor_id\u003e \\"},{"line_number":14,"context_line":"        --property hw:cpu_policy\u003dmixed \\"},{"line_number":15,"context_line":"        --property hw:cpu_dedicated_mask\u003d0-3,7"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Part of blueprint use-pcpu-and-vcpu-in-one-instance"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I2a3311c08a52eb11859c68ef940a0bd755a94c6b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"bf51134e_2c5ad681","line":16,"in_reply_to":"bf51134e_ebb6123e","updated":"2020-07-15 07:01:30.000000000","message":"Sure. It\u0027s better to mention this.","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"}],"doc/source/admin/cpu-topologies.rst":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"where ``N`` is the number of vCPUs defined in the flavor."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":".. note::"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"   It is not currently possible to request ``PCPU`` and ``VCPU`` resources in"},{"line_number":214,"context_line":"   the same instance."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"The ``shared`` CPU policy is used to specify that an instance **should not**"},{"line_number":217,"context_line":"use pinned CPUs. To configure a flavor to use the ``shared`` CPU policy, run:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_10d5711c","line":214,"range":{"start_line":211,"start_character":0,"end_line":214,"end_character":21},"updated":"2020-07-14 10:59:26.000000000","message":"this is still true at this commit and therefore should not be removed yet, right?","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":208,"context_line":""},{"line_number":209,"context_line":"where ``N`` is the number of vCPUs defined in the flavor."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":".. note::"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"   It is not currently possible to request ``PCPU`` and ``VCPU`` resources in"},{"line_number":214,"context_line":"   the same instance."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"The ``shared`` CPU policy is used to specify that an instance **should not**"},{"line_number":217,"context_line":"use pinned CPUs. To configure a flavor to use the ``shared`` CPU policy, run:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_8cecc2bb","line":214,"range":{"start_line":211,"start_character":0,"end_line":214,"end_character":21},"in_reply_to":"bf51134e_10d5711c","updated":"2020-07-15 07:01:30.000000000","message":"Yes. We\u0027ll not change/remove this note until we added the interface creating a mixed instance with \u0027resources:PCPU\u0027 and \u0027resources:VCPU\u0027.\nAnd the proposal for this feature is expected to resume after the NUMA in placement blue-print is ready.","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"   $ openstack flavor set [FLAVOR_ID] --property hw:cpu_policy\u003dshared"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"The ``mixed`` CPU policy is used to specify that an instance use the pinned"},{"line_number":224,"context_line":"CPUs along with unpinned CPUs. The instance pinned CPU is specified in"},{"line_number":225,"context_line":"``hw:cpu_dedicated_mask`` extra spec. For example, to configure a flavor to"},{"line_number":226,"context_line":"use the ``mixed`` CPU policy with 4 vCPUs in total and the first 2 vCPUs as"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_d0193922","line":223,"range":{"start_line":223,"start_character":65,"end_line":223,"end_character":68},"updated":"2020-07-14 10:59:26.000000000","message":"drop this","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":220,"context_line":""},{"line_number":221,"context_line":"   $ openstack flavor set [FLAVOR_ID] --property hw:cpu_policy\u003dshared"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"The ``mixed`` CPU policy is used to specify that an instance use the pinned"},{"line_number":224,"context_line":"CPUs along with unpinned CPUs. The instance pinned CPU is specified in"},{"line_number":225,"context_line":"``hw:cpu_dedicated_mask`` extra spec. For example, to configure a flavor to"},{"line_number":226,"context_line":"use the ``mixed`` CPU policy with 4 vCPUs in total and the first 2 vCPUs as"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_2c33f663","line":223,"range":{"start_line":223,"start_character":65,"end_line":223,"end_character":68},"in_reply_to":"bf51134e_d0193922","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":221,"context_line":"   $ openstack flavor set [FLAVOR_ID] --property hw:cpu_policy\u003dshared"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"The ``mixed`` CPU policy is used to specify that an instance use the pinned"},{"line_number":224,"context_line":"CPUs along with unpinned CPUs. The instance pinned CPU is specified in"},{"line_number":225,"context_line":"``hw:cpu_dedicated_mask`` extra spec. For example, to configure a flavor to"},{"line_number":226,"context_line":"use the ``mixed`` CPU policy with 4 vCPUs in total and the first 2 vCPUs as"},{"line_number":227,"context_line":"pinned CPUs:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_90234156","line":224,"range":{"start_line":224,"start_character":68,"end_line":224,"end_character":70},"updated":"2020-07-14 10:59:26.000000000","message":"in the","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":221,"context_line":"   $ openstack flavor set [FLAVOR_ID] --property hw:cpu_policy\u003dshared"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"The ``mixed`` CPU policy is used to specify that an instance use the pinned"},{"line_number":224,"context_line":"CPUs along with unpinned CPUs. The instance pinned CPU is specified in"},{"line_number":225,"context_line":"``hw:cpu_dedicated_mask`` extra spec. For example, to configure a flavor to"},{"line_number":226,"context_line":"use the ``mixed`` CPU policy with 4 vCPUs in total and the first 2 vCPUs as"},{"line_number":227,"context_line":"pinned CPUs:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_0c36f251","line":224,"range":{"start_line":224,"start_character":68,"end_line":224,"end_character":70},"in_reply_to":"bf51134e_90234156","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"The ``mixed`` CPU policy is used to specify that an instance use the pinned"},{"line_number":224,"context_line":"CPUs along with unpinned CPUs. The instance pinned CPU is specified in"},{"line_number":225,"context_line":"``hw:cpu_dedicated_mask`` extra spec. For example, to configure a flavor to"},{"line_number":226,"context_line":"use the ``mixed`` CPU policy with 4 vCPUs in total and the first 2 vCPUs as"},{"line_number":227,"context_line":"pinned CPUs:"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_30299536","line":225,"range":{"start_line":225,"start_character":36,"end_line":225,"end_character":37},"updated":"2020-07-14 10:59:26.000000000","message":"or, if real-time is enabled (``hw:realtime_enabled``\\ \u003d True), in the ``hw:cpu_realtime_mask`` extra spec.","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"The ``mixed`` CPU policy is used to specify that an instance use the pinned"},{"line_number":224,"context_line":"CPUs along with unpinned CPUs. The instance pinned CPU is specified in"},{"line_number":225,"context_line":"``hw:cpu_dedicated_mask`` extra spec. For example, to configure a flavor to"},{"line_number":226,"context_line":"use the ``mixed`` CPU policy with 4 vCPUs in total and the first 2 vCPUs as"},{"line_number":227,"context_line":"pinned CPUs:"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_ac7426ff","line":225,"range":{"start_line":225,"start_character":36,"end_line":225,"end_character":37},"in_reply_to":"bf51134e_30299536","updated":"2020-07-15 07:01:30.000000000","message":"How about putting the \u0027realtime\u0027 sentence in the coming realtime patch [1]? I don\u0027t think this belongs to this change.\n\n[1]  https://review.opendev.org/728485","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"426c8eacd10a6a2f1b953e4a8a726d919edcc189","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":"The ``mixed`` CPU policy is used to specify that an instance use the pinned"},{"line_number":224,"context_line":"CPUs along with unpinned CPUs. The instance pinned CPU is specified in"},{"line_number":225,"context_line":"``hw:cpu_dedicated_mask`` extra spec. For example, to configure a flavor to"},{"line_number":226,"context_line":"use the ``mixed`` CPU policy with 4 vCPUs in total and the first 2 vCPUs as"},{"line_number":227,"context_line":"pinned CPUs:"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_f307e01c","line":225,"range":{"start_line":225,"start_character":36,"end_line":225,"end_character":37},"in_reply_to":"bf51134e_ac7426ff","updated":"2020-07-17 22:11:17.000000000","message":"\u003e How about putting the \u0027realtime\u0027 sentence in the coming realtime\n \u003e patch [1]? I don\u0027t think this belongs to this change.\n \u003e \n \u003e [1]  https://review.opendev.org/728485\n\nAgreed","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":229,"context_line":".. code-block:: console"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"   $ openstack flavor set [FLAVOR_ID] \\"},{"line_number":232,"context_line":"     --vcpus\u003d4\\"},{"line_number":233,"context_line":"     --property hw:cpu_policy\u003dmixed \\"},{"line_number":234,"context_line":"     --property hw:cpu_dedicated_mask\u003d0-1"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_90fa21ba","line":232,"range":{"start_line":232,"start_character":14,"end_line":232,"end_character":15},"updated":"2020-07-14 10:59:26.000000000","message":"nit: space before backslash","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":229,"context_line":".. code-block:: console"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"   $ openstack flavor set [FLAVOR_ID] \\"},{"line_number":232,"context_line":"     --vcpus\u003d4\\"},{"line_number":233,"context_line":"     --property hw:cpu_policy\u003dmixed \\"},{"line_number":234,"context_line":"     --property hw:cpu_dedicated_mask\u003d0-1"},{"line_number":235,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"bf51134e_8c6fa226","line":232,"range":{"start_line":232,"start_character":14,"end_line":232,"end_character":15},"in_reply_to":"bf51134e_90fa21ba","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"}],"nova/api/validation/extra_specs/hw.py":[{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        ),"},{"line_number":37,"context_line":"        value\u003d{"},{"line_number":38,"context_line":"            \u0027type\u0027: str,"},{"line_number":39,"context_line":"            \u0027pattern\u0027: r\u0027(\\^)?\\d+((-\\d+)?(,\\^?\\d+(-\\d+)?)?)*\u0027,"},{"line_number":40,"context_line":"        },"},{"line_number":41,"context_line":"    ),"},{"line_number":42,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_cc507a35","line":39,"range":{"start_line":39,"start_character":25,"end_line":39,"end_character":26},"updated":"2020-07-15 07:01:30.000000000","message":"@Stephen, The open and close parentheses here are not necessary, right?","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"426c8eacd10a6a2f1b953e4a8a726d919edcc189","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        ),"},{"line_number":37,"context_line":"        value\u003d{"},{"line_number":38,"context_line":"            \u0027type\u0027: str,"},{"line_number":39,"context_line":"            \u0027pattern\u0027: r\u0027(\\^)?\\d+((-\\d+)?(,\\^?\\d+(-\\d+)?)?)*\u0027,"},{"line_number":40,"context_line":"        },"},{"line_number":41,"context_line":"    ),"},{"line_number":42,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_fe0fa72c","line":39,"range":{"start_line":39,"start_character":25,"end_line":39,"end_character":26},"in_reply_to":"bf51134e_cc507a35","updated":"2020-07-17 22:11:17.000000000","message":"Oh, yeah, correct. We can drop those in a follow-up (and make them a common variable too, as Alex suggests)","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        ),"},{"line_number":124,"context_line":"        value\u003d{"},{"line_number":125,"context_line":"            \u0027type\u0027: str,"},{"line_number":126,"context_line":"            \u0027description\u0027: (\u0027The **guest** CPU mapping to be pinned to \u0027"},{"line_number":127,"context_line":"                           \u0027**host** CPUs for an instance with a ``mixed`` \u0027"},{"line_number":128,"context_line":"                            \u0027CPU policy.\u0027),"},{"line_number":129,"context_line":"            \u0027pattern\u0027: r\u0027\\^?\\d+((-\\d+)?(,\\^?\\d+(-\\d+)?)?)*\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_10be11d4","line":126,"range":{"start_line":126,"start_character":28,"end_line":126,"end_character":32},"updated":"2020-07-14 10:59:26.000000000","message":"Can you drop this down to the next line like the rest of the file?\n\n  \u0027description\u0027: (\n      \u0027The **guest** ...\u0027\n  ),","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        ),"},{"line_number":124,"context_line":"        value\u003d{"},{"line_number":125,"context_line":"            \u0027type\u0027: str,"},{"line_number":126,"context_line":"            \u0027description\u0027: (\u0027The **guest** CPU mapping to be pinned to \u0027"},{"line_number":127,"context_line":"                           \u0027**host** CPUs for an instance with a ``mixed`` \u0027"},{"line_number":128,"context_line":"                            \u0027CPU policy.\u0027),"},{"line_number":129,"context_line":"            \u0027pattern\u0027: r\u0027\\^?\\d+((-\\d+)?(,\\^?\\d+(-\\d+)?)?)*\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_ec4d7e9a","line":126,"range":{"start_line":126,"start_character":28,"end_line":126,"end_character":32},"in_reply_to":"bf51134e_10be11d4","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            \u0027description\u0027: (\u0027The **guest** CPU mapping to be pinned to \u0027"},{"line_number":127,"context_line":"                           \u0027**host** CPUs for an instance with a ``mixed`` \u0027"},{"line_number":128,"context_line":"                            \u0027CPU policy.\u0027),"},{"line_number":129,"context_line":"            \u0027pattern\u0027: r\u0027\\^?\\d+((-\\d+)?(,\\^?\\d+(-\\d+)?)?)*\u0027,"},{"line_number":130,"context_line":"        },"},{"line_number":131,"context_line":"    ),"},{"line_number":132,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_70ccad88","line":129,"updated":"2020-07-14 10:59:26.000000000","message":"A note that this is identical to the \u0027hw_realtime_mask\u0027 pattern could be useful.","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            \u0027description\u0027: (\u0027The **guest** CPU mapping to be pinned to \u0027"},{"line_number":127,"context_line":"                           \u0027**host** CPUs for an instance with a ``mixed`` \u0027"},{"line_number":128,"context_line":"                            \u0027CPU policy.\u0027),"},{"line_number":129,"context_line":"            \u0027pattern\u0027: r\u0027\\^?\\d+((-\\d+)?(,\\^?\\d+(-\\d+)?)?)*\u0027,"},{"line_number":130,"context_line":"        },"},{"line_number":131,"context_line":"    ),"},{"line_number":132,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_2cb6568b","line":129,"in_reply_to":"bf51134e_70ccad88","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2276608b8c04168a1b88497f7b8bad6fbc0657fd","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        description\u003d("},{"line_number":35,"context_line":"            \u0027A exclusion mask of CPUs that should not be enabled for realtime.\u0027"},{"line_number":36,"context_line":"        ),"},{"line_number":37,"context_line":"        value\u003d{"},{"line_number":38,"context_line":"            \u0027type\u0027: str,"},{"line_number":39,"context_line":"            \u0027pattern\u0027: r\u0027(\\^)?\\d+((-\\d+)?(,\\^?\\d+(-\\d+)?)?)*\u0027,"},{"line_number":40,"context_line":"        },"},{"line_number":41,"context_line":"    ),"},{"line_number":42,"context_line":"]"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_219006ed","line":40,"range":{"start_line":37,"start_character":8,"end_line":40,"end_character":10},"updated":"2020-07-16 07:29:59.000000000","message":"we can put this into common variable also.","commit_id":"78d753bf3a9424f5aa9cbcc3d902350e0402ee58"}],"nova/exception.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":2329,"context_line":""},{"line_number":2330,"context_line":"class InvalidMixedInstanceDedicatedMask(Invalid):"},{"line_number":2331,"context_line":"    msg_fmt \u003d _(\"Mixed instance must have at least 1 pinned vCPU and 1 \""},{"line_number":2332,"context_line":"                \"unpinned vCPU. See hw:cpu_dedicated_mask\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_b0c2c551","line":2332,"range":{"start_line":2332,"start_character":36,"end_line":2332,"end_character":57},"updated":"2020-07-14 10:59:26.000000000","message":"can you quote this?","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":2329,"context_line":""},{"line_number":2330,"context_line":"class InvalidMixedInstanceDedicatedMask(Invalid):"},{"line_number":2331,"context_line":"    msg_fmt \u003d _(\"Mixed instance must have at least 1 pinned vCPU and 1 \""},{"line_number":2332,"context_line":"                \"unpinned vCPU. See hw:cpu_dedicated_mask\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_ec329e0f","line":2332,"range":{"start_line":2332,"start_character":36,"end_line":2332,"end_character":57},"in_reply_to":"bf51134e_b0c2c551","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"}],"nova/tests/unit/virt/test_hardware.py":[{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"a5d347f1996f154afd92aebba128075981c6a41f","unresolved":false,"context_lines":[{"line_number":1380,"context_line":"                    \"properties\": {}"},{"line_number":1381,"context_line":"                },"},{"line_number":1382,"context_line":"                \"expect\": objects.InstanceNUMATopology(cells\u003d"},{"line_number":1383,"context_line":"                ["},{"line_number":1384,"context_line":"                    objects.InstanceNUMACell("},{"line_number":1385,"context_line":"                        id\u003d0, cpuset\u003dset([0, 1, 2]), pcpuset\u003dset([3]),"},{"line_number":1386,"context_line":"                        memory\u003d1024,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_459d3fba","line":1383,"updated":"2020-06-29 13:31:00.000000000","message":"Done.\n\nand I planned to unify this test case\u0027s coding style in a separate patch[1] as this:\n\n[1] https://review.opendev.org/728793\n\n            {\n                # mixed policy instance\n                \"flavor\": objects.Flavor(\n                    vcpus\u003d4, memory_mb\u003d2048,\n                    extra_specs\u003d{\n                        \"hw:cpu_policy\": fields.CPUAllocationPolicy.MIXED,\n                        \"hw:cpu_dedicated_mask\": \"1, 3\"\n                    }\n                ),\n                \"image\": {\n                    \"properties\": {}\n                },\n                \"expect\": objects.InstanceNUMATopology(cells\u003d[\n                    objects.InstanceNUMACell(\n                        id\u003d0, cpuset\u003dset([0, 2]), pcpuset\u003dset([1, 3]),\n                        memory\u003d2048,\n                        cpu_policy\u003dfields.CPUAllocationPolicy.MIXED),\n                ])\n            },\n\nOr we can have more discussion in then.","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e05db3aec7c35bd878b4a97c26053bdb00cfe1a4","unresolved":false,"context_lines":[{"line_number":1380,"context_line":"                    \"properties\": {}"},{"line_number":1381,"context_line":"                },"},{"line_number":1382,"context_line":"                \"expect\": objects.InstanceNUMATopology(cells\u003d"},{"line_number":1383,"context_line":"                ["},{"line_number":1384,"context_line":"                    objects.InstanceNUMACell("},{"line_number":1385,"context_line":"                        id\u003d0, cpuset\u003dset([0, 1, 2]), pcpuset\u003dset([3]),"},{"line_number":1386,"context_line":"                        memory\u003d1024,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_deea2a0d","line":1383,"updated":"2020-06-22 12:18:18.000000000","message":"nit: drag this up to the previous line","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"a5d347f1996f154afd92aebba128075981c6a41f","unresolved":false,"context_lines":[{"line_number":1424,"context_line":"                    \"properties\": {}"},{"line_number":1425,"context_line":"                },"},{"line_number":1426,"context_line":"                \"expect\": objects.InstanceNUMATopology(cells\u003d"},{"line_number":1427,"context_line":"                    ["},{"line_number":1428,"context_line":"                        objects.InstanceNUMACell("},{"line_number":1429,"context_line":"                            id\u003d0, cpuset\u003dset([0]), pcpuset\u003dset([1]),"},{"line_number":1430,"context_line":"                            memory\u003d1024,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_25a00bf4","line":1427,"updated":"2020-06-29 13:31:00.000000000","message":"Done","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e05db3aec7c35bd878b4a97c26053bdb00cfe1a4","unresolved":false,"context_lines":[{"line_number":1424,"context_line":"                    \"properties\": {}"},{"line_number":1425,"context_line":"                },"},{"line_number":1426,"context_line":"                \"expect\": objects.InstanceNUMATopology(cells\u003d"},{"line_number":1427,"context_line":"                    ["},{"line_number":1428,"context_line":"                        objects.InstanceNUMACell("},{"line_number":1429,"context_line":"                            id\u003d0, cpuset\u003dset([0]), pcpuset\u003dset([1]),"},{"line_number":1430,"context_line":"                            memory\u003d1024,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_1ef14202","line":1427,"range":{"start_line":1427,"start_character":20,"end_line":1427,"end_character":21},"updated":"2020-06-22 12:18:18.000000000","message":"ditto","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"a5d347f1996f154afd92aebba128075981c6a41f","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"                    \"properties\": {}"},{"line_number":1451,"context_line":"                },"},{"line_number":1452,"context_line":"                \"expect\": objects.InstanceNUMATopology(cells\u003d"},{"line_number":1453,"context_line":"                    ["},{"line_number":1454,"context_line":"                        objects.InstanceNUMACell("},{"line_number":1455,"context_line":"                            id\u003d0, cpuset\u003dset([0, 1]), pcpuset\u003dset(),"},{"line_number":1456,"context_line":"                            memory\u003d1024,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_85a3d7ff","line":1453,"updated":"2020-06-29 13:31:00.000000000","message":"Done.","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e05db3aec7c35bd878b4a97c26053bdb00cfe1a4","unresolved":false,"context_lines":[{"line_number":1450,"context_line":"                    \"properties\": {}"},{"line_number":1451,"context_line":"                },"},{"line_number":1452,"context_line":"                \"expect\": objects.InstanceNUMATopology(cells\u003d"},{"line_number":1453,"context_line":"                    ["},{"line_number":1454,"context_line":"                        objects.InstanceNUMACell("},{"line_number":1455,"context_line":"                            id\u003d0, cpuset\u003dset([0, 1]), pcpuset\u003dset(),"},{"line_number":1456,"context_line":"                            memory\u003d1024,"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_3edb667c","line":1453,"range":{"start_line":1453,"start_character":20,"end_line":1453,"end_character":21},"updated":"2020-06-22 12:18:18.000000000","message":"you get the idea...","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":1513,"context_line":"                    vcpus\u003d8, memory_mb\u003d2048,"},{"line_number":1514,"context_line":"                    extra_specs\u003d{"},{"line_number":1515,"context_line":"                        \"hw:cpu_policy\": fields.CPUAllocationPolicy.MIXED,"},{"line_number":1516,"context_line":"                        \"hw:cpu_dedicated_mask\": \"3, 7\","},{"line_number":1517,"context_line":"                        \"hw:numa_nodes\": 2,"},{"line_number":1518,"context_line":"                    }"},{"line_number":1519,"context_line":"                ),"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_506b69ef","line":1516,"range":{"start_line":1516,"start_character":52,"end_line":1516,"end_character":53},"updated":"2020-07-14 10:59:26.000000000","message":"nit: this is allowed, but kind of odd\n\nditto below","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":1513,"context_line":"                    vcpus\u003d8, memory_mb\u003d2048,"},{"line_number":1514,"context_line":"                    extra_specs\u003d{"},{"line_number":1515,"context_line":"                        \"hw:cpu_policy\": fields.CPUAllocationPolicy.MIXED,"},{"line_number":1516,"context_line":"                        \"hw:cpu_dedicated_mask\": \"3, 7\","},{"line_number":1517,"context_line":"                        \"hw:numa_nodes\": 2,"},{"line_number":1518,"context_line":"                    }"},{"line_number":1519,"context_line":"                ),"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_4c210ab4","line":1516,"range":{"start_line":1516,"start_character":52,"end_line":1516,"end_character":53},"in_reply_to":"bf51134e_506b69ef","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":1514,"context_line":"                    extra_specs\u003d{"},{"line_number":1515,"context_line":"                        \"hw:cpu_policy\": fields.CPUAllocationPolicy.MIXED,"},{"line_number":1516,"context_line":"                        \"hw:cpu_dedicated_mask\": \"3, 7\","},{"line_number":1517,"context_line":"                        \"hw:numa_nodes\": 2,"},{"line_number":1518,"context_line":"                    }"},{"line_number":1519,"context_line":"                ),"},{"line_number":1520,"context_line":"                \"image\": {"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_306eb5ff","line":1517,"range":{"start_line":1517,"start_character":41,"end_line":1517,"end_character":42},"updated":"2020-07-14 10:59:26.000000000","message":"should be a string","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":1514,"context_line":"                    extra_specs\u003d{"},{"line_number":1515,"context_line":"                        \"hw:cpu_policy\": fields.CPUAllocationPolicy.MIXED,"},{"line_number":1516,"context_line":"                        \"hw:cpu_dedicated_mask\": \"3, 7\","},{"line_number":1517,"context_line":"                        \"hw:numa_nodes\": 2,"},{"line_number":1518,"context_line":"                    }"},{"line_number":1519,"context_line":"                ),"},{"line_number":1520,"context_line":"                \"image\": {"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_7ffbcebc","line":1517,"range":{"start_line":1517,"start_character":41,"end_line":1517,"end_character":42},"in_reply_to":"bf51134e_306eb5ff","updated":"2020-07-15 07:01:30.000000000","message":"I can make it to a string. But after checking the code handling this, I think an integer 2 is also ok here since int(2) is 2.\n\n    flavor_nodes, image_nodes \u003d _get_flavor_image_meta(\n        \u0027numa_nodes\u0027, flavor, image_meta)\n    if flavor_nodes and image_nodes:\n        raise exception.ImageNUMATopologyForbidden(name\u003d\u0027hw_numa_nodes\u0027)\n\n    nodes \u003d flavor_nodes or image_nodes\n    if nodes is not None and (not strutils.is_int_like(nodes) or\n            int(nodes) \u003c 1):\n        raise exception.InvalidNUMANodesNumber(nodes\u003dnodes)\n\n    return int(nodes) if nodes else nodes","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"426c8eacd10a6a2f1b953e4a8a726d919edcc189","unresolved":false,"context_lines":[{"line_number":1514,"context_line":"                    extra_specs\u003d{"},{"line_number":1515,"context_line":"                        \"hw:cpu_policy\": fields.CPUAllocationPolicy.MIXED,"},{"line_number":1516,"context_line":"                        \"hw:cpu_dedicated_mask\": \"3, 7\","},{"line_number":1517,"context_line":"                        \"hw:numa_nodes\": 2,"},{"line_number":1518,"context_line":"                    }"},{"line_number":1519,"context_line":"                ),"},{"line_number":1520,"context_line":"                \"image\": {"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_1e17fb47","line":1517,"range":{"start_line":1517,"start_character":41,"end_line":1517,"end_character":42},"in_reply_to":"bf51134e_7ffbcebc","updated":"2020-07-17 22:11:17.000000000","message":"Yes, the code accepts it but the type will always be a string in real-life since the API doesn\u0027t translate things for us.","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":1556,"context_line":"                    vcpus\u003d8, memory_mb\u003d2048,"},{"line_number":1557,"context_line":"                    extra_specs\u003d{"},{"line_number":1558,"context_line":"                        \"hw:cpu_policy\": fields.CPUAllocationPolicy.MIXED,"},{"line_number":1559,"context_line":"                        \"hw:cpu_dedicated_mask\": \"1, 3\","},{"line_number":1560,"context_line":"                        \"hw:numa_nodes\": 2,"},{"line_number":1561,"context_line":"                        \"hw:numa_cpus.0\": \"0-1\","},{"line_number":1562,"context_line":"                        \"hw:numa_mem.0\": \"1024\","}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_ec1bbe7d","line":1559,"range":{"start_line":1559,"start_character":52,"end_line":1559,"end_character":53},"updated":"2020-07-15 07:01:30.000000000","message":"And here, no space.","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":1637,"context_line":"                \"expect\": exception.InvalidMixedInstanceDedicatedMask,"},{"line_number":1638,"context_line":"            },"},{"line_number":1639,"context_line":"            {"},{"line_number":1640,"context_line":"                # \u0027hw:cpu_dedicated_mask\u0027 should be defined along with"},{"line_number":1641,"context_line":"                # \u0027hw:cpu_policy\u003dshared\u0027"},{"line_number":1642,"context_line":"                \"flavor\": objects.Flavor("},{"line_number":1643,"context_line":"                    vcpus\u003d4, memory_mb\u003d2048,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_1033b115","line":1640,"range":{"start_line":1640,"start_character":49,"end_line":1640,"end_character":50},"updated":"2020-07-14 10:59:26.000000000","message":"not be","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":1637,"context_line":"                \"expect\": exception.InvalidMixedInstanceDedicatedMask,"},{"line_number":1638,"context_line":"            },"},{"line_number":1639,"context_line":"            {"},{"line_number":1640,"context_line":"                # \u0027hw:cpu_dedicated_mask\u0027 should be defined along with"},{"line_number":1641,"context_line":"                # \u0027hw:cpu_policy\u003dshared\u0027"},{"line_number":1642,"context_line":"                \"flavor\": objects.Flavor("},{"line_number":1643,"context_line":"                    vcpus\u003d4, memory_mb\u003d2048,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_ff287e33","line":1640,"range":{"start_line":1640,"start_character":49,"end_line":1640,"end_character":50},"in_reply_to":"bf51134e_1033b115","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":1652,"context_line":"                \"expect\": exception.RequiredMixedInstancePolicy,"},{"line_number":1653,"context_line":"            },"},{"line_number":1654,"context_line":"            {"},{"line_number":1655,"context_line":"                # \u0027hw:cpu_dedicated_mask\u0027 should be defined along with"},{"line_number":1656,"context_line":"                # \u0027hw:cpu_policy\u003ddedicated\u0027"},{"line_number":1657,"context_line":"                \"flavor\": objects.Flavor("},{"line_number":1658,"context_line":"                    vcpus\u003d4, memory_mb\u003d2048,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_f0355df8","line":1655,"range":{"start_line":1655,"start_character":49,"end_line":1655,"end_character":52},"updated":"2020-07-14 10:59:26.000000000","message":"not be","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":1652,"context_line":"                \"expect\": exception.RequiredMixedInstancePolicy,"},{"line_number":1653,"context_line":"            },"},{"line_number":1654,"context_line":"            {"},{"line_number":1655,"context_line":"                # \u0027hw:cpu_dedicated_mask\u0027 should be defined along with"},{"line_number":1656,"context_line":"                # \u0027hw:cpu_policy\u003ddedicated\u0027"},{"line_number":1657,"context_line":"                \"flavor\": objects.Flavor("},{"line_number":1658,"context_line":"                    vcpus\u003d4, memory_mb\u003d2048,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_5f236a56","line":1655,"range":{"start_line":1655,"start_character":49,"end_line":1655,"end_character":52},"in_reply_to":"bf51134e_f0355df8","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":1680,"context_line":"                },"},{"line_number":1681,"context_line":"                \"expect\": exception.RequiredMixedOrRealtimeCPUMask,"},{"line_number":1682,"context_line":"            },"},{"line_number":1683,"context_line":"            {  # Create \u0027mixed\u0027 instance with the \u0027ISOLATE\u0027 emulator"},{"line_number":1684,"context_line":"                # thread policy"},{"line_number":1685,"context_line":"                \"flavor\": objects.Flavor("},{"line_number":1686,"context_line":"                    vcpus\u003d4, memory_mb\u003d2048,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_5039a9ef","line":1683,"range":{"start_line":1683,"start_character":14,"end_line":1683,"end_character":15},"updated":"2020-07-14 10:59:26.000000000","message":"nit: newline","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":1680,"context_line":"                },"},{"line_number":1681,"context_line":"                \"expect\": exception.RequiredMixedOrRealtimeCPUMask,"},{"line_number":1682,"context_line":"            },"},{"line_number":1683,"context_line":"            {  # Create \u0027mixed\u0027 instance with the \u0027ISOLATE\u0027 emulator"},{"line_number":1684,"context_line":"                # thread policy"},{"line_number":1685,"context_line":"                \"flavor\": objects.Flavor("},{"line_number":1686,"context_line":"                    vcpus\u003d4, memory_mb\u003d2048,"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_bf3286a5","line":1683,"range":{"start_line":1683,"start_character":14,"end_line":1683,"end_character":15},"in_reply_to":"bf51134e_5039a9ef","updated":"2020-07-15 07:01:30.000000000","message":"Done","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"                        cpu_policy\u003dfields.CPUAllocationPolicy.MIXED)"},{"line_number":1703,"context_line":"                    ]"},{"line_number":1704,"context_line":"                ),"},{"line_number":1705,"context_line":"            },"},{"line_number":1706,"context_line":"            {"},{"line_number":1707,"context_line":"                # Invalid CPU thread pinning override"},{"line_number":1708,"context_line":"                \"flavor\": objects.Flavor("}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_101c5176","line":1705,"updated":"2020-07-14 10:59:26.000000000","message":"we\u0027re missing tests for:\n\n- use hw:cpu_dedicated_mask as an exclusion mask (i.e. \u0027^0\u0027)\n- use hw:cpu_policy\u003dmixed along with hw:cpu_realtime_mask and hw:cpu_realtime","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"2ff09f912a4855523f82765512d38b98c99aab5a","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"                        cpu_policy\u003dfields.CPUAllocationPolicy.MIXED)"},{"line_number":1703,"context_line":"                    ]"},{"line_number":1704,"context_line":"                ),"},{"line_number":1705,"context_line":"            },"},{"line_number":1706,"context_line":"            {"},{"line_number":1707,"context_line":"                # Invalid CPU thread pinning override"},{"line_number":1708,"context_line":"                \"flavor\": objects.Flavor("}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_4ba61e11","line":1705,"in_reply_to":"bf51134e_101c5176","updated":"2020-07-14 11:10:54.000000000","message":"\u003e we\u0027re missing tests for:\n \u003e \n \u003e - use hw:cpu_dedicated_mask as an exclusion mask (i.e. \u0027^0\u0027)\n \u003e - use hw:cpu_policy\u003dmixed along with hw:cpu_realtime_mask and\n \u003e hw:cpu_realtime\n\nActually, the realtime stuff comes later (https://review.opendev.org/#/c/728485/). Apologies. The first test case is still missing though","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":1702,"context_line":"                        cpu_policy\u003dfields.CPUAllocationPolicy.MIXED)"},{"line_number":1703,"context_line":"                    ]"},{"line_number":1704,"context_line":"                ),"},{"line_number":1705,"context_line":"            },"},{"line_number":1706,"context_line":"            {"},{"line_number":1707,"context_line":"                # Invalid CPU thread pinning override"},{"line_number":1708,"context_line":"                \"flavor\": objects.Flavor("}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_5f57ea58","line":1705,"in_reply_to":"bf51134e_4ba61e11","updated":"2020-07-15 07:01:30.000000000","message":"I\u0027ll add test case for setting an exclusive CPU set in \u0027hw:cpu_dedicated_mask\u0027.","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"426c8eacd10a6a2f1b953e4a8a726d919edcc189","unresolved":false,"context_lines":[{"line_number":1574,"context_line":"                        memory\u003d2048,"},{"line_number":1575,"context_line":"                        cpu_policy\u003dfields.CPUAllocationPolicy.MIXED),"},{"line_number":1576,"context_line":"                ])"},{"line_number":1577,"context_line":"            },"},{"line_number":1578,"context_line":"            {"},{"line_number":1579,"context_line":"                # NUMA + mixed policy instance"},{"line_number":1580,"context_line":"                \"flavor\": objects.Flavor("}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_de3583dd","line":1577,"updated":"2020-07-17 22:11:17.000000000","message":"++","commit_id":"78d753bf3a9424f5aa9cbcc3d902350e0402ee58"}],"nova/virt/hardware.py":[{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"161d81f97c9cf0bc608a3dafbb852f9301421061","unresolved":false,"context_lines":[{"line_number":1728,"context_line":"    cpus_std \u003d cpus_set - pcpus"},{"line_number":1729,"context_line":"    if not pcpus or not cpus_std:"},{"line_number":1730,"context_line":"        msg \u003d _(\u0027Mask should specify at least once CPU.\u0027)"},{"line_number":1731,"context_line":"        raise exception.Invalid(msg)"},{"line_number":1732,"context_line":"    if not pcpus.issubset(cpus_set):"},{"line_number":1733,"context_line":"        msg \u003d _(\"Mixed CPU policy CPU(s) mask is configured with CPUs \""},{"line_number":1734,"context_line":"                \"that are not a subset of the CPUs in the flavor. See \""}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_b8762d3d","line":1731,"updated":"2020-04-01 11:18:34.000000000","message":"Understand. will be done.","commit_id":"375ecf7c1b3cebb1324bfeb365fb7e7322452b8a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d71da481e87703f1ee359a3dbcfa70fa6617a6fb","unresolved":false,"context_lines":[{"line_number":1728,"context_line":"    cpus_std \u003d cpus_set - pcpus"},{"line_number":1729,"context_line":"    if not pcpus or not cpus_std:"},{"line_number":1730,"context_line":"        msg \u003d _(\u0027Mask should specify at least once CPU.\u0027)"},{"line_number":1731,"context_line":"        raise exception.Invalid(msg)"},{"line_number":1732,"context_line":"    if not pcpus.issubset(cpus_set):"},{"line_number":1733,"context_line":"        msg \u003d _(\"Mixed CPU policy CPU(s) mask is configured with CPUs \""},{"line_number":1734,"context_line":"                \"that are not a subset of the CPUs in the flavor. See \""}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_f328e1e2","line":1731,"range":{"start_line":1731,"start_character":24,"end_line":1731,"end_character":31},"updated":"2020-04-01 02:57:38.000000000","message":"you can create specific exception for this instead of using generic Invalid exception.\n\nAfter you added specific exception, you should add exception to https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L57","commit_id":"375ecf7c1b3cebb1324bfeb365fb7e7322452b8a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bb61ded606a8b14b74580112f0a796a796d09acc","unresolved":false,"context_lines":[{"line_number":1728,"context_line":"    cpus_std \u003d cpus_set - pcpus"},{"line_number":1729,"context_line":"    if not pcpus or not cpus_std:"},{"line_number":1730,"context_line":"        msg \u003d _(\u0027Mask should specify at least once CPU.\u0027)"},{"line_number":1731,"context_line":"        raise exception.Invalid(msg)"},{"line_number":1732,"context_line":"    if not pcpus.issubset(cpus_set):"},{"line_number":1733,"context_line":"        msg \u003d _(\"Mixed CPU policy CPU(s) mask is configured with CPUs \""},{"line_number":1734,"context_line":"                \"that are not a subset of the CPUs in the flavor. See \""}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_692ab490","line":1731,"in_reply_to":"df33271e_b8762d3d","updated":"2020-04-06 09:57:19.000000000","message":"I guess you forget to exception to https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L57","commit_id":"375ecf7c1b3cebb1324bfeb365fb7e7322452b8a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d71da481e87703f1ee359a3dbcfa70fa6617a6fb","unresolved":false,"context_lines":[{"line_number":1733,"context_line":"        msg \u003d _(\"Mixed CPU policy CPU(s) mask is configured with CPUs \""},{"line_number":1734,"context_line":"                \"that are not a subset of the CPUs in the flavor. See \""},{"line_number":1735,"context_line":"                \"hw:cpu_dedicated_mask\")"},{"line_number":1736,"context_line":"        raise exception.Invalid(msg)"},{"line_number":1737,"context_line":""},{"line_number":1738,"context_line":"    return pcpus"},{"line_number":1739,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_d325dd0a","line":1736,"updated":"2020-04-01 02:57:38.000000000","message":"ditto","commit_id":"375ecf7c1b3cebb1324bfeb365fb7e7322452b8a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d71da481e87703f1ee359a3dbcfa70fa6617a6fb","unresolved":false,"context_lines":[{"line_number":1954,"context_line":"            raise exception.RealtimeConfigurationInvalid()"},{"line_number":1955,"context_line":"    elif cpu_policy \u003d\u003d fields.CPUAllocationPolicy.DEDICATED:"},{"line_number":1956,"context_line":"        if dedicated_cpus:"},{"line_number":1957,"context_line":"            raise exception.Invalid("},{"line_number":1958,"context_line":"                \"Cannot specify \u0027hw:dedicated_cpu_mask\u0027 without the \u0027mixed\u0027 \""},{"line_number":1959,"context_line":"                \"policy.\""},{"line_number":1960,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_131c65bf","line":1957,"updated":"2020-04-01 02:57:38.000000000","message":"ditto","commit_id":"375ecf7c1b3cebb1324bfeb365fb7e7322452b8a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d71da481e87703f1ee359a3dbcfa70fa6617a6fb","unresolved":false,"context_lines":[{"line_number":1960,"context_line":"            )"},{"line_number":1961,"context_line":"    else:  # MIXED"},{"line_number":1962,"context_line":"        if not (realtime_cpus or dedicated_cpus):"},{"line_number":1963,"context_line":"            raise exception.Invalid("},{"line_number":1964,"context_line":"                \"When using the \u0027mixed\u0027 CPU policy, one of \""},{"line_number":1965,"context_line":"                \"\u0027hw:cpu_dedicated_mask\u0027 or \u0027hw:cpu_realtime_mask\u0027 must be \""},{"line_number":1966,"context_line":"                \"specified.\""}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_537f0ddf","line":1963,"updated":"2020-04-01 02:57:38.000000000","message":"ditto","commit_id":"375ecf7c1b3cebb1324bfeb365fb7e7322452b8a"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"161d81f97c9cf0bc608a3dafbb852f9301421061","unresolved":false,"context_lines":[{"line_number":1986,"context_line":"        nodes \u003d nodes or 1"},{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        cpus \u003d set(range(flavor.vcpus))"},{"line_number":1989,"context_line":"        pcpus \u003d cpus \u0026 (realtime_cpus or dedicated_cpus or set())"},{"line_number":1990,"context_line":"        vcpus \u003d cpus - pcpus"},{"line_number":1991,"context_line":""},{"line_number":1992,"context_line":"        cpu_list \u003d _get_numa_cpu_constraint(flavor, image_meta)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_9871a947","line":1989,"updated":"2020-04-01 11:18:34.000000000","message":"You are right, dedicatd_cpus and realtime_cpus are already ensured being a sutset of cpus, which actually is set(range(flavor.vcpus)).","commit_id":"375ecf7c1b3cebb1324bfeb365fb7e7322452b8a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d71da481e87703f1ee359a3dbcfa70fa6617a6fb","unresolved":false,"context_lines":[{"line_number":1986,"context_line":"        nodes \u003d nodes or 1"},{"line_number":1987,"context_line":""},{"line_number":1988,"context_line":"        cpus \u003d set(range(flavor.vcpus))"},{"line_number":1989,"context_line":"        pcpus \u003d cpus \u0026 (realtime_cpus or dedicated_cpus or set())"},{"line_number":1990,"context_line":"        vcpus \u003d cpus - pcpus"},{"line_number":1991,"context_line":""},{"line_number":1992,"context_line":"        cpu_list \u003d _get_numa_cpu_constraint(flavor, image_meta)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df33271e_938515d2","line":1989,"range":{"start_line":1989,"start_character":16,"end_line":1989,"end_character":22},"updated":"2020-04-01 02:57:38.000000000","message":"still not sure why you \u0026 with cpus, since you already ensure the realtime_cpus and dedicated_cpus are valid set in the above.","commit_id":"375ecf7c1b3cebb1324bfeb365fb7e7322452b8a"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"19b46ceccee2b1b658cace5b8deab46943c50d72","unresolved":false,"context_lines":[{"line_number":1935,"context_line":"    # sanity checks"},{"line_number":1936,"context_line":""},{"line_number":1937,"context_line":"    if realtime_cpus and dedicated_cpus:"},{"line_number":1938,"context_line":"        raise exception.Invalid("},{"line_number":1939,"context_line":"            \"You should configure either \u0027hw:cpu_dedicated_mask\u0027 or \""},{"line_number":1940,"context_line":"            \"\u0027hw:cpu_realtime_mask\u0027, not both.\""},{"line_number":1941,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"df33271e_5c185074","line":1938,"range":{"start_line":1938,"start_character":24,"end_line":1938,"end_character":31},"updated":"2020-04-06 09:58:28.000000000","message":"Better to use specific exception for this one also","commit_id":"abdc43c43a22c6f862b83e2f324b78d03b39e4a1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1032,"context_line":"            LOG.debug(\u0027Host does not support requested memory pagesize, \u0027"},{"line_number":1033,"context_line":"                      \u0027or not enough free pages of the requested size. \u0027"},{"line_number":1034,"context_line":"                      \u0027Requested: %d kB\u0027, instance_cell.pagesize)"},{"line_number":1035,"context_line":"            return"},{"line_number":1036,"context_line":"        LOG.debug(\u0027Selected memory pagesize: %(selected_mem_pagesize)d kB. \u0027"},{"line_number":1037,"context_line":"                  \u0027Requested memory pagesize: %(requested_mem_pagesize)d \u0027"},{"line_number":1038,"context_line":"                  \u0027(small \u003d -1, large \u003d -2, any \u003d -3)\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_b802110a","line":1035,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1061,"context_line":"                           \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1062,"context_line":"                           \u0027total\u0027: host_cell.memory,"},{"line_number":1063,"context_line":"                           \u0027pagesize\u0027: pagesize})"},{"line_number":1064,"context_line":"                return"},{"line_number":1065,"context_line":"        else:"},{"line_number":1066,"context_line":"            # The host does not support explicit page sizes. Ignore pagesizes"},{"line_number":1067,"context_line":"            # completely."}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_1bffb701","line":1064,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"                          \u0027Required: %(required)d, actual: %(actual)d\u0027,"},{"line_number":1075,"context_line":"                          {\u0027required\u0027: instance_cell.memory,"},{"line_number":1076,"context_line":"                           \u0027actual\u0027: host_cell.memory})"},{"line_number":1077,"context_line":"                return"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"    # NOTE(stephenfin): As with memory, do not allow an instance to overcommit"},{"line_number":1080,"context_line":"    # against itself on any NUMA cell"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_fb013306","line":1077,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1088,"context_line":"                          \u0027actual\u0027: len(host_cell.pcpuset),"},{"line_number":1089,"context_line":"                          \u0027cpuset_reserved\u0027: cpuset_reserved"},{"line_number":1090,"context_line":"                      })"},{"line_number":1091,"context_line":"            return"},{"line_number":1092,"context_line":"    else:"},{"line_number":1093,"context_line":"        required_cpus \u003d len(instance_cell.cpuset)"},{"line_number":1094,"context_line":"        if required_cpus \u003e len(host_cell.cpuset):"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_5b093f2a","line":1091,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1097,"context_line":"                          \u0027required\u0027: len(instance_cell.cpuset),"},{"line_number":1098,"context_line":"                          \u0027actual\u0027: len(host_cell.cpuset),"},{"line_number":1099,"context_line":"                      })"},{"line_number":1100,"context_line":"            return"},{"line_number":1101,"context_line":""},{"line_number":1102,"context_line":"    if instance_cell.cpu_policy \u003d\u003d fields.CPUAllocationPolicy.DEDICATED:"},{"line_number":1103,"context_line":"        LOG.debug(\u0027Pinning has been requested\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_3b0c3b3a","line":1100,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1111,"context_line":"                       \u0027vcpus\u0027: len(instance_cell.pcpuset),"},{"line_number":1112,"context_line":"                       \u0027actual\u0027: host_cell.avail_pcpus,"},{"line_number":1113,"context_line":"                       \u0027num_cpu_reserved\u0027: cpuset_reserved})"},{"line_number":1114,"context_line":"            return"},{"line_number":1115,"context_line":""},{"line_number":1116,"context_line":"        if instance_cell.memory \u003e host_cell.avail_memory:"},{"line_number":1117,"context_line":"            LOG.debug(\u0027Not enough available memory to schedule instance. \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_9b12a757","line":1114,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1121,"context_line":"                      {\u0027required\u0027: instance_cell.memory,"},{"line_number":1122,"context_line":"                       \u0027available\u0027: host_cell.avail_memory,"},{"line_number":1123,"context_line":"                       \u0027total\u0027: host_cell.memory})"},{"line_number":1124,"context_line":"            return"},{"line_number":1125,"context_line":""},{"line_number":1126,"context_line":"        # Try to pack the instance cell onto cores"},{"line_number":1127,"context_line":"        instance_cell \u003d _pack_instance_onto_cores("}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_7b0d2334","line":1124,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"        )"},{"line_number":1130,"context_line":"        if not instance_cell:"},{"line_number":1131,"context_line":"            LOG.debug(\u0027Failed to map instance cell CPUs to host cell CPUs\u0027)"},{"line_number":1132,"context_line":"            return"},{"line_number":1133,"context_line":""},{"line_number":1134,"context_line":"    elif limits:"},{"line_number":1135,"context_line":"        LOG.debug(\u0027No pinning requested, considering limitations on usable cpu\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_db1c2f6c","line":1132,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"                      \u0027not enough free CPUs to schedule this instance. \u0027"},{"line_number":1142,"context_line":"                      \u0027Usage: %(usage)d, limit: %(limit)d\u0027,"},{"line_number":1143,"context_line":"                      {\u0027usage\u0027: cpu_usage, \u0027limit\u0027: cpu_limit})"},{"line_number":1144,"context_line":"            return"},{"line_number":1145,"context_line":""},{"line_number":1146,"context_line":"        ram_usage \u003d host_cell.memory_usage + instance_cell.memory"},{"line_number":1147,"context_line":"        ram_limit \u003d host_cell.memory * limits.ram_allocation_ratio"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_bb17ab45","line":1144,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":1150,"context_line":"                      \u0027not enough free memory to schedule this instance. \u0027"},{"line_number":1151,"context_line":"                      \u0027Usage: %(usage)d, limit: %(limit)d\u0027,"},{"line_number":1152,"context_line":"                      {\u0027usage\u0027: ram_usage, \u0027limit\u0027: ram_limit})"},{"line_number":1153,"context_line":"            return"},{"line_number":1154,"context_line":""},{"line_number":1155,"context_line":"    instance_cell.id \u003d host_cell.id"},{"line_number":1156,"context_line":"    return instance_cell"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_1b285784","line":1153,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Return value expected","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"415da6b89550d66deec465ecec7b9a05be6c7064","unresolved":false,"context_lines":[{"line_number":2154,"context_line":"    # indicative of a PCI device being associated with that node"},{"line_number":2155,"context_line":"    if not pci_requests and pci_stats:"},{"line_number":2156,"context_line":"        host_cells \u003d sorted(host_cells, key\u003dlambda cell: cell.id in ["},{"line_number":2157,"context_line":"            pool[\u0027numa_node\u0027] for pool in pci_stats.pools])"},{"line_number":2158,"context_line":""},{"line_number":2159,"context_line":"    for host_cell_perm in itertools.permutations("},{"line_number":2160,"context_line":"            host_cells, len(instance_topology)):"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_fb2ad37b","line":2157,"updated":"2020-04-08 03:54:00.000000000","message":"pep8: error: Item \"None\" of \"Optional[Any]\" has no attribute \"pools\"","commit_id":"57843f0b98484ece47c023cfb0f891ef2f7451b1"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"f632ab0086c5d52afa7bd0f1055a2d191369a42c","unresolved":false,"context_lines":[{"line_number":1723,"context_line":"    if not mask:"},{"line_number":1724,"context_line":"        return None"},{"line_number":1725,"context_line":""},{"line_number":1726,"context_line":"    if mask.strip().startswith(\u0027^\u0027):"},{"line_number":1727,"context_line":"        pcpus \u003d parse_cpu_spec(\"0-%d,%s\" % (flavor.vcpus - 1, mask))"},{"line_number":1728,"context_line":"    else:"},{"line_number":1729,"context_line":"        pcpus \u003d parse_cpu_spec(\"%s\" % (mask))"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"    cpus_set \u003d set(range(flavor.vcpus))"},{"line_number":1732,"context_line":"    cpus_std \u003d cpus_set - pcpus"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_63f0d768","line":1729,"range":{"start_line":1726,"start_character":0,"end_line":1729,"end_character":45},"updated":"2020-06-18 17:15:11.000000000","message":"FWIW I\u0027m against this approach. If this is a mask, then we need to own that, and enforce its \"maskness\". This kind of \"guess the intention\" approach is asking for trouble.","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"a5d347f1996f154afd92aebba128075981c6a41f","unresolved":false,"context_lines":[{"line_number":1726,"context_line":"    if mask.strip().startswith(\u0027^\u0027):"},{"line_number":1727,"context_line":"        pcpus \u003d parse_cpu_spec(\"0-%d,%s\" % (flavor.vcpus - 1, mask))"},{"line_number":1728,"context_line":"    else:"},{"line_number":1729,"context_line":"        pcpus \u003d parse_cpu_spec(\"%s\" % (mask))"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"    cpus_set \u003d set(range(flavor.vcpus))"},{"line_number":1732,"context_line":"    cpus_std \u003d cpus_set - pcpus"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_65a68311","line":1729,"updated":"2020-06-29 13:31:00.000000000","message":"Thanks for clarifying.","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"af7366fc22a3e4329b694b3bd3ac9c0609178b46","unresolved":false,"context_lines":[{"line_number":1723,"context_line":"    if not mask:"},{"line_number":1724,"context_line":"        return None"},{"line_number":1725,"context_line":""},{"line_number":1726,"context_line":"    if mask.strip().startswith(\u0027^\u0027):"},{"line_number":1727,"context_line":"        pcpus \u003d parse_cpu_spec(\"0-%d,%s\" % (flavor.vcpus - 1, mask))"},{"line_number":1728,"context_line":"    else:"},{"line_number":1729,"context_line":"        pcpus \u003d parse_cpu_spec(\"%s\" % (mask))"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"    cpus_set \u003d set(range(flavor.vcpus))"},{"line_number":1732,"context_line":"    cpus_std \u003d cpus_set - pcpus"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_8e46e14e","line":1729,"range":{"start_line":1726,"start_character":0,"end_line":1729,"end_character":45},"in_reply_to":"bf51134e_63f0d768","updated":"2020-06-19 12:25:17.000000000","message":"I think this just copies the way of parsing \u0027hw:cpu_realtime_mask\u0027, which is presented in [1]. I think Stephen might have a comment on this.\n\nAnyway, for current code, just as you commented in review[2], it\u0027s better to handle the setting, such as specifying \u0027hw:cpu_dedicated_mask\u003d^10\u0027 and flavor.vcpus\u003d2, by raising an error indicating the value in \u0027hw:cpu_dedicated_mask\u0027 is invalid.\n\n1:https://review.opendev.org/#/c/461456/14/nova/virt/hardware.py\n2: https://review.opendev.org/#/c/468203/","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e05db3aec7c35bd878b4a97c26053bdb00cfe1a4","unresolved":false,"context_lines":[{"line_number":1723,"context_line":"    if not mask:"},{"line_number":1724,"context_line":"        return None"},{"line_number":1725,"context_line":""},{"line_number":1726,"context_line":"    if mask.strip().startswith(\u0027^\u0027):"},{"line_number":1727,"context_line":"        pcpus \u003d parse_cpu_spec(\"0-%d,%s\" % (flavor.vcpus - 1, mask))"},{"line_number":1728,"context_line":"    else:"},{"line_number":1729,"context_line":"        pcpus \u003d parse_cpu_spec(\"%s\" % (mask))"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"    cpus_set \u003d set(range(flavor.vcpus))"},{"line_number":1732,"context_line":"    cpus_std \u003d cpus_set - pcpus"}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_7eb31e4e","line":1729,"range":{"start_line":1726,"start_character":0,"end_line":1729,"end_character":45},"in_reply_to":"bf51134e_8e46e14e","updated":"2020-06-22 12:18:18.000000000","message":"We discussed this on IRC on Friday. In short, I think Artom is asking for it to be an exclusion mask. However, there\u0027s no reason we need to restrict ourselves to exclusion masks for the real time CPU mask and I don\u0027t see any reason to do that here either.","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"a5d347f1996f154afd92aebba128075981c6a41f","unresolved":false,"context_lines":[{"line_number":1729,"context_line":"        pcpus \u003d parse_cpu_spec(\"%s\" % (mask))"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"    cpus_set \u003d set(range(flavor.vcpus))"},{"line_number":1732,"context_line":"    cpus_std \u003d cpus_set - pcpus"},{"line_number":1733,"context_line":"    if not pcpus or not cpus_std:"},{"line_number":1734,"context_line":"        raise exception.InvalidMixedPolicyInstanceCPUMask"},{"line_number":1735,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_c5b02f46","line":1732,"updated":"2020-06-29 13:31:00.000000000","message":"\u0027vcpus\u0027 is better. Done.","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e05db3aec7c35bd878b4a97c26053bdb00cfe1a4","unresolved":false,"context_lines":[{"line_number":1729,"context_line":"        pcpus \u003d parse_cpu_spec(\"%s\" % (mask))"},{"line_number":1730,"context_line":""},{"line_number":1731,"context_line":"    cpus_set \u003d set(range(flavor.vcpus))"},{"line_number":1732,"context_line":"    cpus_std \u003d cpus_set - pcpus"},{"line_number":1733,"context_line":"    if not pcpus or not cpus_std:"},{"line_number":1734,"context_line":"        raise exception.InvalidMixedPolicyInstanceCPUMask"},{"line_number":1735,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_be8ad666","line":1732,"range":{"start_line":1732,"start_character":4,"end_line":1732,"end_character":12},"updated":"2020-06-22 12:18:18.000000000","message":"vcpus ?","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"a5d347f1996f154afd92aebba128075981c6a41f","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"        raise exception.InvalidMixedPolicyInstanceCPUMask"},{"line_number":1735,"context_line":""},{"line_number":1736,"context_line":"    if not pcpus.issubset(cpus_set):"},{"line_number":1737,"context_line":"        raise exception.InvalidMixedPolicyInstanceCPUMask"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":"    return pcpus"},{"line_number":1740,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_a5ab7bd3","line":1737,"updated":"2020-06-29 13:31:00.000000000","message":"Done.","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e05db3aec7c35bd878b4a97c26053bdb00cfe1a4","unresolved":false,"context_lines":[{"line_number":1734,"context_line":"        raise exception.InvalidMixedPolicyInstanceCPUMask"},{"line_number":1735,"context_line":""},{"line_number":1736,"context_line":"    if not pcpus.issubset(cpus_set):"},{"line_number":1737,"context_line":"        raise exception.InvalidMixedPolicyInstanceCPUMask"},{"line_number":1738,"context_line":""},{"line_number":1739,"context_line":"    return pcpus"},{"line_number":1740,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bf51134e_7e8cbe7e","line":1737,"updated":"2020-06-22 12:18:18.000000000","message":"I\u0027d rather we replicated what we\u0027re doing in \u0027get_realtime_cpu_constraint\u0027 and provided unique error message for each of these conditions","commit_id":"2a9dc870dd4b725bc5fead84d380c6b1ffbb1f00"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"2263517f96acaa95d2072d4699bfab7c34454e93","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"    :param flavor: ``nova.objects.Flavor`` instance"},{"line_number":1716,"context_line":"    :returns: The dedicated CPUs requested, else None."},{"line_number":1717,"context_line":"    \"\"\""},{"line_number":1718,"context_line":"    mask \u003d flavor.get(\u0027extra_specs\u0027, {}).get(\u0027hw:cpu_dedicated_mask\u0027)"},{"line_number":1719,"context_line":"    if not mask:"},{"line_number":1720,"context_line":"        return None"},{"line_number":1721,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bf51134e_9c4aa924","line":1718,"updated":"2020-07-07 07:32:39.000000000","message":"Yes. I missed the extra spec validator and the documents.\nWill fix.","commit_id":"58cc1209aedd78f83bc3ce0a16ef71a12fb4bc63"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6714d441ea9af4a99ac6dea07ba087238f2a4ce5","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"    :param flavor: ``nova.objects.Flavor`` instance"},{"line_number":1716,"context_line":"    :returns: The dedicated CPUs requested, else None."},{"line_number":1717,"context_line":"    \"\"\""},{"line_number":1718,"context_line":"    mask \u003d flavor.get(\u0027extra_specs\u0027, {}).get(\u0027hw:cpu_dedicated_mask\u0027)"},{"line_number":1719,"context_line":"    if not mask:"},{"line_number":1720,"context_line":"        return None"},{"line_number":1721,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bf51134e_d8cf1b55","line":1718,"updated":"2020-07-06 14:39:36.000000000","message":"we should add validation for this new extra specs https://github.com/openstack/nova/blob/master/nova/api/validation/extra_specs/hw.py","commit_id":"58cc1209aedd78f83bc3ce0a16ef71a12fb4bc63"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"e6e5c9a550dc148c7b0ea1d71ba75a9fbc1cd141","unresolved":false,"context_lines":[{"line_number":1715,"context_line":"    :param flavor: ``nova.objects.Flavor`` instance"},{"line_number":1716,"context_line":"    :returns: The dedicated CPUs requested, else None."},{"line_number":1717,"context_line":"    \"\"\""},{"line_number":1718,"context_line":"    mask \u003d flavor.get(\u0027extra_specs\u0027, {}).get(\u0027hw:cpu_dedicated_mask\u0027)"},{"line_number":1719,"context_line":"    if not mask:"},{"line_number":1720,"context_line":"        return None"},{"line_number":1721,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"bf51134e_184873ca","line":1718,"in_reply_to":"bf51134e_d8cf1b55","updated":"2020-07-06 14:40:31.000000000","message":"I saw Stephen mentioned this, I guess you forget update this.","commit_id":"58cc1209aedd78f83bc3ce0a16ef71a12fb4bc63"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7d51d8249515f1ea249ed324ffb84c704f3905ae","unresolved":false,"context_lines":[{"line_number":1724,"context_line":"    else:"},{"line_number":1725,"context_line":"        pcpus \u003d parse_cpu_spec(\"%s\" % (mask))"},{"line_number":1726,"context_line":""},{"line_number":1727,"context_line":"    cpus_set \u003d set(range(flavor.vcpus))"},{"line_number":1728,"context_line":"    vcpus \u003d cpus_set - pcpus"},{"line_number":1729,"context_line":"    if not pcpus or not vcpus:"},{"line_number":1730,"context_line":"        raise exception.InvalidMixedInstanceDedicatedMask()"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_900fc135","line":1727,"range":{"start_line":1727,"start_character":4,"end_line":1727,"end_character":12},"updated":"2020-07-14 10:59:26.000000000","message":"Maybe just \u0027cpus\u0027 ?","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":30209,"name":"Huaqiang","email":"huaqiang.wang@intel.com","username":"Huaqiang.Wang"},"change_message_id":"8ddd0afeb679d1b4f5ca02ce061ba91f72fdac43","unresolved":false,"context_lines":[{"line_number":1724,"context_line":"    else:"},{"line_number":1725,"context_line":"        pcpus \u003d parse_cpu_spec(\"%s\" % (mask))"},{"line_number":1726,"context_line":""},{"line_number":1727,"context_line":"    cpus_set \u003d set(range(flavor.vcpus))"},{"line_number":1728,"context_line":"    vcpus \u003d cpus_set - pcpus"},{"line_number":1729,"context_line":"    if not pcpus or not vcpus:"},{"line_number":1730,"context_line":"        raise exception.InvalidMixedInstanceDedicatedMask()"}],"source_content_type":"text/x-python","patch_set":13,"id":"bf51134e_2233fd63","line":1727,"range":{"start_line":1727,"start_character":4,"end_line":1727,"end_character":12},"in_reply_to":"bf51134e_900fc135","updated":"2020-07-15 07:01:30.000000000","message":"Done. We have made similar name substitution before.","commit_id":"a2dc7e8e12940a9f4d8c84c0b19bd3b0434fef81"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2276608b8c04168a1b88497f7b8bad6fbc0657fd","unresolved":false,"context_lines":[{"line_number":1748,"context_line":"    :param image_meta: ``nova.objects.ImageMeta`` instance"},{"line_number":1749,"context_line":"    :returns: The realtime CPU set requested, else None."},{"line_number":1750,"context_line":"    \"\"\""},{"line_number":1751,"context_line":"    if not is_realtime_enabled(flavor):"},{"line_number":1752,"context_line":"        return None"},{"line_number":1753,"context_line":""},{"line_number":1754,"context_line":"    flavor_mask, image_mask \u003d _get_flavor_image_meta("},{"line_number":1755,"context_line":"        \u0027cpu_realtime_mask\u0027, flavor, image_meta)"},{"line_number":1756,"context_line":""},{"line_number":1757,"context_line":"    # Image masks are used ahead of flavor masks as they will have more"},{"line_number":1758,"context_line":"    # specific requirements"},{"line_number":1759,"context_line":"    mask \u003d image_mask or flavor_mask"},{"line_number":1760,"context_line":""},{"line_number":1761,"context_line":"    vcpus_set \u003d set(range(flavor.vcpus))"},{"line_number":1762,"context_line":"    if mask:"},{"line_number":1763,"context_line":"        if mask.strip().startswith(\u0027^\u0027):"},{"line_number":1764,"context_line":"            vcpus_rt \u003d parse_cpu_spec(\"0-%d,%s\" % (flavor.vcpus - 1, mask))"},{"line_number":1765,"context_line":"        else:"},{"line_number":1766,"context_line":"            vcpus_rt \u003d parse_cpu_spec(\"%s\" % (mask))"},{"line_number":1767,"context_line":"    else:"},{"line_number":1768,"context_line":"        vcpus_rt \u003d set(range(flavor.vcpus))"},{"line_number":1769,"context_line":""},{"line_number":1770,"context_line":"    if not vcpus_rt:"},{"line_number":1771,"context_line":"        raise exception.RealtimeMaskNotFoundOrInvalid()"},{"line_number":1772,"context_line":""},{"line_number":1773,"context_line":"    # TODO(stephenfin): Do this check in numa_get_constraints instead"},{"line_number":1774,"context_line":"    emu_policy \u003d get_emulator_thread_policy_constraint(flavor)"},{"line_number":1775,"context_line":"    if vcpus_set \u003d\u003d vcpus_rt and not emu_policy:"},{"line_number":1776,"context_line":"        raise exception.RealtimeMaskNotFoundOrInvalid()"},{"line_number":1777,"context_line":""},{"line_number":1778,"context_line":"    if not vcpus_rt.issubset(vcpus_set):"},{"line_number":1779,"context_line":"        msg \u003d _(\"Realtime policy vCPU(s) mask is configured with RT vCPUs \""},{"line_number":1780,"context_line":"                \"that are not a subset of the vCPUs in the flavor. See \""},{"line_number":1781,"context_line":"                \"hw:cpu_realtime_mask or hw_cpu_realtime_mask\")"},{"line_number":1782,"context_line":"        raise exception.RealtimeMaskNotFoundOrInvalid(msg)"},{"line_number":1783,"context_line":""},{"line_number":1784,"context_line":"    return vcpus_rt"},{"line_number":1785,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"bf51134e_e189eec9","line":1782,"range":{"start_line":1751,"start_character":4,"end_line":1782,"end_character":58},"updated":"2020-07-16 07:29:59.000000000","message":"feel like there can be a common method, but can be refactor later.","commit_id":"78d753bf3a9424f5aa9cbcc3d902350e0402ee58"}]}
