)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"a34ab1d1578f85b23bc5c1de138f35c5d70787de","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Reject HW_CPU_HYPERTHREADING trait in named groups"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch 278ab01c32 added support for specifying cpu_thread_policy as a"},{"line_number":10,"context_line":"trait in the flavor extra_spec. The original regexp supported numbered"},{"line_number":11,"context_line":"request groups. Nova now support named request groups [1]. However"},{"line_number":12,"context_line":"after discussing this in the review we think this trait only be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"edc1829d_b71b2be8","line":9,"range":{"start_line":9,"start_character":10,"end_line":9,"end_character":20},"updated":"2021-03-11 10:36:07.000000000","message":"supernit - Change-Ids \u003e commit SHAs IMHO with gerrit and actually makes this clickable in the review UI.","commit_id":"87f162b90cdd3034933d1f15331a655385a1403e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"a34ab1d1578f85b23bc5c1de138f35c5d70787de","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch 278ab01c32 added support for specifying cpu_thread_policy as a"},{"line_number":10,"context_line":"trait in the flavor extra_spec. The original regexp supported numbered"},{"line_number":11,"context_line":"request groups. Nova now support named request groups [1]. However"},{"line_number":12,"context_line":"after discussing this in the review we think this trait only be"},{"line_number":13,"context_line":"provided in the unnamed group."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So this patch adds an extra_spec validator that rejects"},{"line_number":16,"context_line":"HW_CPU_HYPERTHREADING in a named group. Existing flavors with such"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"578e1c0f_d28d2527","line":13,"range":{"start_line":11,"start_character":59,"end_line":13,"end_character":30},"updated":"2021-03-11 10:36:07.000000000","message":"Would be nice to summarise the reasoning here for reviewers not involved in that discussion. After reading and re-reading the allocation_candidates API reference [1] I assume this is because we want to require HW_CPU_HYPERTHREADING in a single provider as opposed to potentially different providers via numbered/named request groups. Is that correct or total gibberish?\n\n[1] https://docs.openstack.org/api-ref/placement/?expanded\u003dlist-allocation-candidates-detail#list-allocation-candidates","commit_id":"87f162b90cdd3034933d1f15331a655385a1403e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3c6b8aea827e308ec6e10d63d27a19819a55c30a","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch 278ab01c32 added support for specifying cpu_thread_policy as a"},{"line_number":10,"context_line":"trait in the flavor extra_spec. The original regexp supported numbered"},{"line_number":11,"context_line":"request groups. Nova now support named request groups [1]. However"},{"line_number":12,"context_line":"after discussing this in the review we think this trait only be"},{"line_number":13,"context_line":"provided in the unnamed group."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So this patch adds an extra_spec validator that rejects"},{"line_number":16,"context_line":"HW_CPU_HYPERTHREADING in a named group. Existing flavors with such"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"afdb4ece_77f9b5c5","line":13,"range":{"start_line":11,"start_character":59,"end_line":13,"end_character":30},"in_reply_to":"578e1c0f_d28d2527","updated":"2021-03-11 11:26:07.000000000","message":"Not really.\nthe unnammed group does not require that all traits are provided form a single provded so that is not the reasoning for this.\n\nhyperthreading si a host wide configuration option but in the orginial CPU in placment spec we explictly said that virt driver must not report this trait so that operatos could enable HT on the host but choose if they wanted to report it to placemnt.  the use case here was once numa was in plcment we could enable all the thread on 1 numa node and declare HW_CPU_HYPERTHREADING on te numa node RP and then on a second numa node we coudl declare only 1 of the HT siblings in the cpu_dedicated_set so that we could preseve the old isolate cpu thread policy behavior.\n\nwe later decided to remove this constriant on the virt driver and have libvirt report HW_CPU_HYPERTHREADING\n\nas such this is now a host wide configuration option and it nolonger makes sense to allow it to var per group.\nas such we are blocking it in the named_groups which we do not want peopel to use in general and requiring that\nif this is set it is only set in the unnamed group.\n\nas i have noted in previous review i think we should be applying the same restrction to all tratis in the HW_CPU namespace and possible all traits in HW though i have not chack all in the hardware namespace. the hardware cpu traits however i dont se a valid usecase for varying in the named groups today and specificly HW_CPU_HYPERTHREADING\n\nhttps://review.opendev.org/c/openstack/nova/+/735947/5/nova/api/validation/extra_specs/traits.py#26","commit_id":"87f162b90cdd3034933d1f15331a655385a1403e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"ccd74be4b85166b0fc801d61eb4a08fe4f4d7672","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch 278ab01c32 added support for specifying cpu_thread_policy as a"},{"line_number":10,"context_line":"trait in the flavor extra_spec. The original regexp supported numbered"},{"line_number":11,"context_line":"request groups. Nova now support named request groups [1]. However"},{"line_number":12,"context_line":"after discussing this in the review we think this trait only be"},{"line_number":13,"context_line":"provided in the unnamed group."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So this patch adds an extra_spec validator that rejects"},{"line_number":16,"context_line":"HW_CPU_HYPERTHREADING in a named group. Existing flavors with such"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"f0ffdd12_7906bbbb","line":13,"range":{"start_line":11,"start_character":59,"end_line":13,"end_character":30},"in_reply_to":"5acc3d06_22e82785","updated":"2021-03-11 13:23:24.000000000","message":"Right sorry it\u0027s the collective set of resource provides that need to contain the required traits, unlike named groups where it\u0027s limited to the same provider right?","commit_id":"87f162b90cdd3034933d1f15331a655385a1403e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e82b628a91424b444f9d1c625a9aa2888ae10216","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch 278ab01c32 added support for specifying cpu_thread_policy as a"},{"line_number":10,"context_line":"trait in the flavor extra_spec. The original regexp supported numbered"},{"line_number":11,"context_line":"request groups. Nova now support named request groups [1]. However"},{"line_number":12,"context_line":"after discussing this in the review we think this trait only be"},{"line_number":13,"context_line":"provided in the unnamed group."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So this patch adds an extra_spec validator that rejects"},{"line_number":16,"context_line":"HW_CPU_HYPERTHREADING in a named group. Existing flavors with such"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"5acc3d06_22e82785","line":13,"range":{"start_line":11,"start_character":59,"end_line":13,"end_character":30},"in_reply_to":"afdb4ece_77f9b5c5","updated":"2021-03-11 11:31:14.000000000","message":"this is where we removed the special handeling fo the HT trait allowing virt drivers to report it\nhttps://github.com/openstack/nova-specs/commit/4b506d0e9f75200940aa41de419cc626b7dfbbbf#diff-58c3f3699a62919b353e00ffdc5e6c34a955209bfdb3f40234022575e07b0932L166","commit_id":"87f162b90cdd3034933d1f15331a655385a1403e"},{"author":{"_account_id":10135,"name":"Lee Yarwood","display_name":"Lee Yarwood","email":"lyarwood@redhat.com","username":"lyarwood"},"change_message_id":"a34ab1d1578f85b23bc5c1de138f35c5d70787de","unresolved":true,"context_lines":[{"line_number":12,"context_line":"after discussing this in the review we think this trait only be"},{"line_number":13,"context_line":"provided in the unnamed group."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"So this patch adds an extra_spec validator that rejects"},{"line_number":16,"context_line":"HW_CPU_HYPERTHREADING in a named group. Existing flavors with such"},{"line_number":17,"context_line":"config is usable but the trait in the named group is ignored."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://github.com/openstack/nova/blob/1490a54fa92ece6d9fd676d8e4a7498460714f92/nova/api/validation/extra_specs/traits.py#L39"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"904e9f00_e59e1136","line":17,"range":{"start_line":15,"start_character":0,"end_line":17,"end_character":61},"updated":"2021-03-11 10:36:07.000000000","message":"Shouldn\u0027t this be called out in a releasenote given we at least supported numbered groups in code previously even if it was the wrong thing to do?","commit_id":"87f162b90cdd3034933d1f15331a655385a1403e"}],"nova/api/validation/extra_specs/traits.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ed7629a849ab87a8bc46c37ebcd2a351d1650945","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"EXTRA_SPEC_VALIDATORS \u003d []"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"for trait in filter(lambda trait:"},{"line_number":25,"context_line":"                    trait !\u003d os_traits.HW_CPU_HYPERTHREADING,"},{"line_number":26,"context_line":"                    os_traits.get_traits()):"},{"line_number":27,"context_line":"    EXTRA_SPEC_VALIDATORS.append("},{"line_number":28,"context_line":"        base.ExtraSpecValidator("},{"line_number":29,"context_line":"            name\u003df\u0027trait{{group}}:{trait}\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_7c643622","line":26,"range":{"start_line":24,"start_character":13,"end_line":26,"end_character":43},"updated":"2020-09-15 13:40:36.000000000","message":"Can we use a list comprehension here? Yes, it\u0027s slower, but it\u0027s arguably more readable.\n\nAlternatively:\n\n  reserved_traits \u003d [\n      os_traits.HW_CPU_HYPERTHREADING\n  ]\n\n  for trait in os_traits.get_traits():\n      name \u003d f\u0027trait{{group}}:{trait}\u0027\n      parameters \u003d [\n          # ...\n      ]\n      if trait in reserved_traits:\n          # These are special cases that are not allowed in named groups\n          name \u003d f\u0027trait:{trait}\u0027\n          parameters \u003d None\n\nwhich allows us to expand this list in the future (I bet there are more like this)","commit_id":"9cd15ae4f3dbc150416aa9be4eb04192ff42e10a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d9cd0b3180bab5d8286e9105b09d4bb9c74c9fb3","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"EXTRA_SPEC_VALIDATORS \u003d []"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"for trait in filter(lambda trait:"},{"line_number":25,"context_line":"                    trait !\u003d os_traits.HW_CPU_HYPERTHREADING,"},{"line_number":26,"context_line":"                    os_traits.get_traits()):"},{"line_number":27,"context_line":"    EXTRA_SPEC_VALIDATORS.append("},{"line_number":28,"context_line":"        base.ExtraSpecValidator("},{"line_number":29,"context_line":"            name\u003df\u0027trait{{group}}:{trait}\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_3762a63e","line":26,"range":{"start_line":24,"start_character":13,"end_line":26,"end_character":43},"in_reply_to":"9f560f44_7c643622","updated":"2020-09-17 15:43:48.000000000","message":"Done a bit differently though. Let me know how do you feel about it.","commit_id":"9cd15ae4f3dbc150416aa9be4eb04192ff42e10a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d93e49ac5a08f82c6321a4bd4677c27564382fad","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        )"},{"line_number":45,"context_line":"    )"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"# NOTE(gibi): HW_CPU_HYPERTHREADING is a special case, it is only allowed in"},{"line_number":48,"context_line":"# the unnamed group"},{"line_number":49,"context_line":"EXTRA_SPEC_VALIDATORS.append("},{"line_number":50,"context_line":"    base.ExtraSpecValidator("}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_bc3c0ee2","line":47,"range":{"start_line":47,"start_character":14,"end_line":47,"end_character":53},"updated":"2020-11-23 20:55:37.000000000","message":"does it actully make sense to extend this to all HW_CPU_* traits?","commit_id":"9cd15ae4f3dbc150416aa9be4eb04192ff42e10a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ed7629a849ab87a8bc46c37ebcd2a351d1650945","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# the unnamed group"},{"line_number":49,"context_line":"EXTRA_SPEC_VALIDATORS.append("},{"line_number":50,"context_line":"    base.ExtraSpecValidator("},{"line_number":51,"context_line":"        name\u003d\u0027trait:\u0027 + os_traits.HW_CPU_HYPERTHREADING,"},{"line_number":52,"context_line":"        description\u003d("},{"line_number":53,"context_line":"            \u0027Require or forbid trait \u0027 + os_traits.HW_CPU_HYPERTHREADING"},{"line_number":54,"context_line":"        ),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_1c5c1a4b","line":51,"updated":"2020-09-15 13:40:36.000000000","message":"f-string?","commit_id":"9cd15ae4f3dbc150416aa9be4eb04192ff42e10a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d9cd0b3180bab5d8286e9105b09d4bb9c74c9fb3","unresolved":false,"context_lines":[{"line_number":48,"context_line":"# the unnamed group"},{"line_number":49,"context_line":"EXTRA_SPEC_VALIDATORS.append("},{"line_number":50,"context_line":"    base.ExtraSpecValidator("},{"line_number":51,"context_line":"        name\u003d\u0027trait:\u0027 + os_traits.HW_CPU_HYPERTHREADING,"},{"line_number":52,"context_line":"        description\u003d("},{"line_number":53,"context_line":"            \u0027Require or forbid trait \u0027 + os_traits.HW_CPU_HYPERTHREADING"},{"line_number":54,"context_line":"        ),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_775c1e7d","line":51,"in_reply_to":"9f560f44_1c5c1a4b","updated":"2020-09-17 15:43:48.000000000","message":"Done","commit_id":"9cd15ae4f3dbc150416aa9be4eb04192ff42e10a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"ed7629a849ab87a8bc46c37ebcd2a351d1650945","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        name\u003d\u0027trait:\u0027 + os_traits.HW_CPU_HYPERTHREADING,"},{"line_number":52,"context_line":"        description\u003d("},{"line_number":53,"context_line":"            \u0027Require or forbid trait \u0027 + os_traits.HW_CPU_HYPERTHREADING"},{"line_number":54,"context_line":"        ),"},{"line_number":55,"context_line":"        value\u003d{"},{"line_number":56,"context_line":"            \u0027type\u0027: str,"},{"line_number":57,"context_line":"            \u0027enum\u0027: ["}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_fc584658","line":54,"updated":"2020-09-15 13:40:36.000000000","message":"ditto","commit_id":"9cd15ae4f3dbc150416aa9be4eb04192ff42e10a"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d9cd0b3180bab5d8286e9105b09d4bb9c74c9fb3","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        name\u003d\u0027trait:\u0027 + os_traits.HW_CPU_HYPERTHREADING,"},{"line_number":52,"context_line":"        description\u003d("},{"line_number":53,"context_line":"            \u0027Require or forbid trait \u0027 + os_traits.HW_CPU_HYPERTHREADING"},{"line_number":54,"context_line":"        ),"},{"line_number":55,"context_line":"        value\u003d{"},{"line_number":56,"context_line":"            \u0027type\u0027: str,"},{"line_number":57,"context_line":"            \u0027enum\u0027: ["}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_d7524a68","line":54,"in_reply_to":"9f560f44_fc584658","updated":"2020-09-17 15:43:48.000000000","message":"Done","commit_id":"9cd15ae4f3dbc150416aa9be4eb04192ff42e10a"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d93e49ac5a08f82c6321a4bd4677c27564382fad","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"# These are traits that is only allowed in the unnamed request group"},{"line_number":25,"context_line":"restricted_traits \u003d {"},{"line_number":26,"context_line":"    os_traits.HW_CPU_HYPERTHREADING,"},{"line_number":27,"context_line":"}"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"normal_traits \u003d set(os_traits.get_traits()).difference(restricted_traits)"}],"source_content_type":"text/x-python","patch_set":5,"id":"86b4d9b6_b044c50e","line":26,"range":{"start_line":26,"start_character":4,"end_line":26,"end_character":36},"updated":"2020-11-23 20:55:37.000000000","message":"i still think we might want to extend this to all traits in the the hardware namespace.\nbut i guess this is an oke start.\n\ncertenly traits under the HW_CPU namesapce but im not sure if there are others in the HW namespace that could vary per group and still make sense.","commit_id":"87f162b90cdd3034933d1f15331a655385a1403e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d93e49ac5a08f82c6321a4bd4677c27564382fad","unresolved":true,"context_lines":[{"line_number":40,"context_line":"                    \u0027forbidden\u0027,"},{"line_number":41,"context_line":"                ],"},{"line_number":42,"context_line":"            },"},{"line_number":43,"context_line":"            parameters\u003d["},{"line_number":44,"context_line":"                {"},{"line_number":45,"context_line":"                    \u0027name\u0027: \u0027group\u0027,"},{"line_number":46,"context_line":"                    \u0027pattern\u0027: r\u0027([a-zA-Z0-9_-]{1,64})?\u0027,"},{"line_number":47,"context_line":"                },"},{"line_number":48,"context_line":"            ],"},{"line_number":49,"context_line":"        )"},{"line_number":50,"context_line":"    )"},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"b41be412_34b5d8d5","line":48,"range":{"start_line":43,"start_character":12,"end_line":48,"end_character":14},"updated":"2020-11-23 20:55:37.000000000","message":"ah yes by removing this match critiria for the restrived traits we block them from being added for new flavors that use the validation.","commit_id":"87f162b90cdd3034933d1f15331a655385a1403e"}],"nova/virt/hardware.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"bb7dbb64228f1238d60212d9fde00908747d696d","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"def _get_hyperthreading_trait(flavor, image_meta):"},{"line_number":1642,"context_line":"    # type: (objects.Flavor, objects.ImageMeta) -\u003e Optional[str]"},{"line_number":1643,"context_line":"    for key, val in flavor.get(\u0027extra_specs\u0027, {}).items():"},{"line_number":1644,"context_line":"        if re.match(\u0027trait([a-zA-Z0-9_-]{1,64})?:%s\u0027"},{"line_number":1645,"context_line":"                    % os_traits.HW_CPU_HYPERTHREADING, key):"},{"line_number":1646,"context_line":"            return val"},{"line_number":1647,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_35b0fcf4","line":1644,"range":{"start_line":1644,"start_character":21,"end_line":1644,"end_character":51},"updated":"2020-06-17 08:55:42.000000000","message":"It doesn\u0027t feel like we will use named request group for this.\n\nand when we have numa in placement, we may need to use root_required for this trait. https://docs.openstack.org/placement/latest/specs/train/implemented/2005575-nested-magic-1.html#root-required\n\nAlso, not sure we will support root-required in the flavor or not.","commit_id":"adcfc2385c4dad93864c58148c92ab23910e8e0e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2cd71262e803f8079c8f7f809dda9604833da8b9","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"def _get_hyperthreading_trait(flavor, image_meta):"},{"line_number":1642,"context_line":"    # type: (objects.Flavor, objects.ImageMeta) -\u003e Optional[str]"},{"line_number":1643,"context_line":"    for key, val in flavor.get(\u0027extra_specs\u0027, {}).items():"},{"line_number":1644,"context_line":"        if re.match(\u0027trait([a-zA-Z0-9_-]{1,64})?:%s\u0027"},{"line_number":1645,"context_line":"                    % os_traits.HW_CPU_HYPERTHREADING, key):"},{"line_number":1646,"context_line":"            return val"},{"line_number":1647,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_7c409836","line":1644,"range":{"start_line":1644,"start_character":21,"end_line":1644,"end_character":51},"in_reply_to":"bf51134e_35b0fcf4","updated":"2020-06-17 14:13:12.000000000","message":"\u003e It doesn\u0027t feel like we will use named request group for this.\n \u003e \n\nThe old regexp supports numbered groups but does not support named groups. The API validation allows named groups to be present in the flavor extra spec. \n\nCan I then remove the support for numbered groups then and only allow the unnamed group (e.g. trait:HW_CPU_HYPERTHREADING)? Can I raise an exception if a named / numbered group contains the HW_CPU_HYPERTHREADING trait instead of the unnamed one?","commit_id":"adcfc2385c4dad93864c58148c92ab23910e8e0e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"22e5e683e718a458dc404f7818285efff55487ef","unresolved":false,"context_lines":[{"line_number":1641,"context_line":"def _get_hyperthreading_trait(flavor, image_meta):"},{"line_number":1642,"context_line":"    # type: (objects.Flavor, objects.ImageMeta) -\u003e Optional[str]"},{"line_number":1643,"context_line":"    for key, val in flavor.get(\u0027extra_specs\u0027, {}).items():"},{"line_number":1644,"context_line":"        if re.match(\u0027trait([a-zA-Z0-9_-]{1,64})?:%s\u0027"},{"line_number":1645,"context_line":"                    % os_traits.HW_CPU_HYPERTHREADING, key):"},{"line_number":1646,"context_line":"            return val"},{"line_number":1647,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bf51134e_7b29a935","line":1644,"range":{"start_line":1644,"start_character":21,"end_line":1644,"end_character":51},"in_reply_to":"bf51134e_7c409836","updated":"2020-07-22 15:35:01.000000000","message":"\u003e Can I then remove the support for numbered groups then and only\n \u003e allow the unnamed group (e.g. trait:HW_CPU_HYPERTHREADING)? Can I\n \u003e raise an exception if a named / numbered group contains the\n \u003e HW_CPU_HYPERTHREADING trait instead of the unnamed one?\n\nBoth of these sound sensible, yes.","commit_id":"adcfc2385c4dad93864c58148c92ab23910e8e0e"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b2fc0c3645a1571c4c3d9b93120c2d2f0dced0c2","unresolved":false,"context_lines":[{"line_number":1748,"context_line":"    image_meta: \u0027objects.ImageMeta\u0027,"},{"line_number":1749,"context_line":") -\u003e ty.Optional[str]:"},{"line_number":1750,"context_line":""},{"line_number":1751,"context_line":"    # NOTE(gibi): we only support HW_CPU_HYPERTHREDING trait in the unnamed"},{"line_number":1752,"context_line":"    # request group. If it is provided in other request groups then it is"},{"line_number":1753,"context_line":"    # simply ignored"},{"line_number":1754,"context_line":"    flavor_val \u003d flavor.get(\u0027extra_specs\u0027, {}).get("},{"line_number":1755,"context_line":"        \u0027trait:\u0027 + os_traits.HW_CPU_HYPERTHREADING)"},{"line_number":1756,"context_line":"    if flavor_val:"},{"line_number":1757,"context_line":"        return flavor_val"},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"    if os_traits.HW_CPU_HYPERTHREADING in image_meta.properties.get("},{"line_number":1760,"context_line":"            \u0027traits_required\u0027, []):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_81644723","line":1757,"range":{"start_line":1751,"start_character":0,"end_line":1757,"end_character":25},"updated":"2020-09-15 12:49:37.000000000","message":"ya i think this makes sense to do we spoke about this on irc for a bit and i think ignoring it for existing flaovrs is fine when its specified in a named/numbered group but\nit would be nice to add a check to the flavor validation too to make it an error in that case.","commit_id":"0c6e33093e42e95e096b2a351c1c5728dd897257"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b8a6bf836e08dd41cbd5896644dfa725dcf2b031","unresolved":false,"context_lines":[{"line_number":1748,"context_line":"    image_meta: \u0027objects.ImageMeta\u0027,"},{"line_number":1749,"context_line":") -\u003e ty.Optional[str]:"},{"line_number":1750,"context_line":""},{"line_number":1751,"context_line":"    # NOTE(gibi): we only support HW_CPU_HYPERTHREDING trait in the unnamed"},{"line_number":1752,"context_line":"    # request group. If it is provided in other request groups then it is"},{"line_number":1753,"context_line":"    # simply ignored"},{"line_number":1754,"context_line":"    flavor_val \u003d flavor.get(\u0027extra_specs\u0027, {}).get("},{"line_number":1755,"context_line":"        \u0027trait:\u0027 + os_traits.HW_CPU_HYPERTHREADING)"},{"line_number":1756,"context_line":"    if flavor_val:"},{"line_number":1757,"context_line":"        return flavor_val"},{"line_number":1758,"context_line":""},{"line_number":1759,"context_line":"    if os_traits.HW_CPU_HYPERTHREADING in image_meta.properties.get("},{"line_number":1760,"context_line":"            \u0027traits_required\u0027, []):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_bc36ce50","line":1757,"range":{"start_line":1751,"start_character":0,"end_line":1757,"end_character":25},"in_reply_to":"9f560f44_81644723","updated":"2020-09-15 13:30:26.000000000","message":"Added a flavor extra_spec validator for this case.","commit_id":"0c6e33093e42e95e096b2a351c1c5728dd897257"}]}
