)]}'
{"deployment/nova/nova-compute-container-puppet.yaml":[{"author":{"_account_id":17216,"name":"Martin Schuppert","email":"mschuppert@redhat.com","username":"mcschupp"},"change_message_id":"1ae21d86f5ad73d5e062fbbbe4a6d19bfa247f59","unresolved":false,"context_lines":[{"line_number":179,"context_line":"      - role_specific"},{"line_number":180,"context_line":"  NovaReservedHugePages:"},{"line_number":181,"context_line":"    description: \u003e"},{"line_number":182,"context_line":"      A list of valid key\u003dvalue which reflect NUMA node ID, "},{"line_number":183,"context_line":"      page size (Default unit is KiB) and number of pages to be reserved."},{"line_number":184,"context_line":"      Example -"},{"line_number":185,"context_line":"      NovaReservedHugePages: [\"node:0,size:2048,count:64\",\"node:1,size:1GB,count:1\"]"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3fa7e38b_78a157a8","line":182,"range":{"start_line":182,"start_character":59,"end_line":182,"end_character":60},"updated":"2019-11-13 11:14:33.000000000","message":"nit","commit_id":"e9278b1ac5ce7c4055a2e8cacb6a39941d530117"},{"author":{"_account_id":14972,"name":"yogananth Subramanian","email":"ysubrama@redhat.com","username":"yogi"},"change_message_id":"64002fabeefa8ec17498a30a3daf717fa3c1efc5","unresolved":false,"context_lines":[{"line_number":179,"context_line":"      - role_specific"},{"line_number":180,"context_line":"  NovaReservedHugePages:"},{"line_number":181,"context_line":"    description: \u003e"},{"line_number":182,"context_line":"      A list of valid key\u003dvalue which reflect NUMA node ID, "},{"line_number":183,"context_line":"      page size (Default unit is KiB) and number of pages to be reserved."},{"line_number":184,"context_line":"      Example -"},{"line_number":185,"context_line":"      NovaReservedHugePages: [\"node:0,size:2048,count:64\",\"node:1,size:1GB,count:1\"]"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3fa7e38b_371bdb80","line":182,"range":{"start_line":182,"start_character":59,"end_line":182,"end_character":60},"in_reply_to":"3fa7e38b_78a157a8","updated":"2019-11-14 08:49:24.000000000","message":"Done","commit_id":"e9278b1ac5ce7c4055a2e8cacb6a39941d530117"},{"author":{"_account_id":7144,"name":"James Slagle","email":"jslagle@redhat.com","username":"slagle"},"change_message_id":"8e7dcf2fe257523391d3f380aedec1e99aeb2b6d","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    default: []"},{"line_number":189,"context_line":"    tags:"},{"line_number":190,"context_line":"      - role_specific"},{"line_number":191,"context_line":"  KernelArgs: "},{"line_number":192,"context_line":"    default: \"\""},{"line_number":193,"context_line":"    type: string"},{"line_number":194,"context_line":"    description: Kernel Args to apply to the host"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3fa7e38b_1e429369","line":191,"updated":"2019-12-02 21:30:48.000000000","message":"trailing whitespace\n\nalso, i don\u0027t see where this parameter gets used. Looks like you\u0027re only pulling it from RoleParameters.","commit_id":"64aaef0bccefbcd5d6dcca0d879cc6ca6ea28a88"},{"author":{"_account_id":14972,"name":"yogananth Subramanian","email":"ysubrama@redhat.com","username":"yogi"},"change_message_id":"4edbe8f6cd00a21e290af8b67b0b87114282ca33","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    default: []"},{"line_number":189,"context_line":"    tags:"},{"line_number":190,"context_line":"      - role_specific"},{"line_number":191,"context_line":"  KernelArgs: "},{"line_number":192,"context_line":"    default: \"\""},{"line_number":193,"context_line":"    type: string"},{"line_number":194,"context_line":"    description: Kernel Args to apply to the host"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3fa7e38b_0d7fc7df","line":191,"in_reply_to":"3fa7e38b_1e429369","updated":"2019-12-03 08:09:04.000000000","message":"Hello James,\nThanks for the review.\nKernelArgs helps determine the huge page size to use for NovaReservedHugePages.\nFixed the whitespace in next patch.","commit_id":"64aaef0bccefbcd5d6dcca0d879cc6ca6ea28a88"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"c10c7100ab86e1805446c91661cf75205affd5ac","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                          expression: range(0,len($.data.dpdk_p)).join(\",\").split(\",\")"},{"line_number":480,"context_line":"                          data:"},{"line_number":481,"context_line":"                            dpdk_p:"},{"line_number":482,"context_line":"                              str_split: [\u0027,\u0027,{get_param: [RoleParameters, OvsDpdkSocketMemory]}]"},{"line_number":483,"context_line":"                      \u003c%size%\u003e:"},{"line_number":484,"context_line":"                        yaql:"},{"line_number":485,"context_line":"                          expression: let(hzx \u003d\u003e regex(\"([0-9]+[K|M|G])\").search($.data.kern_p)) -\u003e let(hz \u003d\u003eswitch($hzx \u003d \"4K\" \u003d\u003e \"4\", $hzx \u003d \"2M\" \u003d\u003e \"2048\", $hzx \u003d \"1G\" \u003d\u003e \"1048576\", $hzx  \u003d\u003e \"2048\", $hzx \u003d null \u003d\u003e \"2048\")) -\u003e[$hz]*len($.data.dpdk_p)"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_9b83ea55","line":482,"updated":"2019-12-03 13:08:00.000000000","message":"It is possible to set OvsDpdkSocketMemory globally to, which is ignored. Is this intentional?","commit_id":"e03a7155b58a21bd474fb2adec7512bda03deed8"},{"author":{"_account_id":14972,"name":"yogananth Subramanian","email":"ysubrama@redhat.com","username":"yogi"},"change_message_id":"a27caa3ce0b0d742a8ac431dfc9354efd1fa631c","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                          expression: range(0,len($.data.dpdk_p)).join(\",\").split(\",\")"},{"line_number":480,"context_line":"                          data:"},{"line_number":481,"context_line":"                            dpdk_p:"},{"line_number":482,"context_line":"                              str_split: [\u0027,\u0027,{get_param: [RoleParameters, OvsDpdkSocketMemory]}]"},{"line_number":483,"context_line":"                      \u003c%size%\u003e:"},{"line_number":484,"context_line":"                        yaql:"},{"line_number":485,"context_line":"                          expression: let(hzx \u003d\u003e regex(\"([0-9]+[K|M|G])\").search($.data.kern_p)) -\u003e let(hz \u003d\u003eswitch($hzx \u003d \"4K\" \u003d\u003e \"4\", $hzx \u003d \"2M\" \u003d\u003e \"2048\", $hzx \u003d \"1G\" \u003d\u003e \"1048576\", $hzx  \u003d\u003e \"2048\", $hzx \u003d null \u003d\u003e \"2048\")) -\u003e[$hz]*len($.data.dpdk_p)"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_460804d8","line":482,"in_reply_to":"3fa7e38b_9a1e760b","updated":"2019-12-06 03:30:47.000000000","message":"Thank you for the review, have add support for global OvsDpdkSocketMemory in patch 5","commit_id":"e03a7155b58a21bd474fb2adec7512bda03deed8"},{"author":{"_account_id":14972,"name":"yogananth Subramanian","email":"ysubrama@redhat.com","username":"yogi"},"change_message_id":"ac8b2253f588d9940035775ba7006d2f4d3ae9af","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                          expression: range(0,len($.data.dpdk_p)).join(\",\").split(\",\")"},{"line_number":480,"context_line":"                          data:"},{"line_number":481,"context_line":"                            dpdk_p:"},{"line_number":482,"context_line":"                              str_split: [\u0027,\u0027,{get_param: [RoleParameters, OvsDpdkSocketMemory]}]"},{"line_number":483,"context_line":"                      \u003c%size%\u003e:"},{"line_number":484,"context_line":"                        yaql:"},{"line_number":485,"context_line":"                          expression: let(hzx \u003d\u003e regex(\"([0-9]+[K|M|G])\").search($.data.kern_p)) -\u003e let(hz \u003d\u003eswitch($hzx \u003d \"4K\" \u003d\u003e \"4\", $hzx \u003d \"2M\" \u003d\u003e \"2048\", $hzx \u003d \"1G\" \u003d\u003e \"1048576\", $hzx  \u003d\u003e \"2048\", $hzx \u003d null \u003d\u003e \"2048\")) -\u003e[$hz]*len($.data.dpdk_p)"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_ea9a3f5e","line":482,"in_reply_to":"3fa7e38b_9b83ea55","updated":"2019-12-03 23:07:59.000000000","message":"Since OvsDpdkSocketMemory is tightly coupled to dpdk compute role and more likely to be used as role base parameter, had considered only role based value of OvsDpdkSocketMemory.\n\nIn case of reserved_huge_pages, though enabling support for OVS DPDK PMDs was primary cause for introducing \"reserved_huge_pages\" option base on bug #1804169, being a nova config option, it could be applied to any compute role, dpdk or non dpdk. Hence have considered global value for NovaReservedHugePages when setting reserved_huge_pages but only role value for OvsDpdkSocketMemory.\n\nHappy to modify the resubmit the code with support for both global or role based value for OvsDpdkSocketMemory, with higher priority for role value for OvsDpdkSocketMemory.","commit_id":"e03a7155b58a21bd474fb2adec7512bda03deed8"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"7f26a38ad8934a55ab60fbf2506e98e25f12df8e","unresolved":false,"context_lines":[{"line_number":479,"context_line":"                          expression: range(0,len($.data.dpdk_p)).join(\",\").split(\",\")"},{"line_number":480,"context_line":"                          data:"},{"line_number":481,"context_line":"                            dpdk_p:"},{"line_number":482,"context_line":"                              str_split: [\u0027,\u0027,{get_param: [RoleParameters, OvsDpdkSocketMemory]}]"},{"line_number":483,"context_line":"                      \u003c%size%\u003e:"},{"line_number":484,"context_line":"                        yaql:"},{"line_number":485,"context_line":"                          expression: let(hzx \u003d\u003e regex(\"([0-9]+[K|M|G])\").search($.data.kern_p)) -\u003e let(hz \u003d\u003eswitch($hzx \u003d \"4K\" \u003d\u003e \"4\", $hzx \u003d \"2M\" \u003d\u003e \"2048\", $hzx \u003d \"1G\" \u003d\u003e \"1048576\", $hzx  \u003d\u003e \"2048\", $hzx \u003d null \u003d\u003e \"2048\")) -\u003e[$hz]*len($.data.dpdk_p)"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_9a1e760b","line":482,"in_reply_to":"3fa7e38b_ea9a3f5e","updated":"2019-12-04 04:45:58.000000000","message":"I would suggest to keep the support for global parameters too, as we are not forcing for role-specific for DPDK.","commit_id":"e03a7155b58a21bd474fb2adec7512bda03deed8"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"c10c7100ab86e1805446c91661cf75205affd5ac","unresolved":false,"context_lines":[{"line_number":550,"context_line":"      - equals: [{get_param: [RoleParameters, NovaNfsEnabled]}, true]"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"  set_reserved_huge_pages:"},{"line_number":553,"context_line":"    or:"},{"line_number":554,"context_line":"      - not:"},{"line_number":555,"context_line":"          and:"},{"line_number":556,"context_line":"          - equals: [{get_param: [RoleParameters, NovaReservedHugePages]}, \"\"]"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_5ba49207","line":553,"updated":"2019-12-03 13:08:00.000000000","message":"condition could be simplified as to check only the global NovaReservedHugePages to be not empty.\n\nset_reserved_huge_pages:\n - not:\n   - equals: [{get_param: NovaReservedHugePages}, []]\n\nThe merging is happening in the outer condition, so having role parametes here has no effect. \n\nWhy to check OvsDpdkSocketMemory in hugepages?","commit_id":"e03a7155b58a21bd474fb2adec7512bda03deed8"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"7f26a38ad8934a55ab60fbf2506e98e25f12df8e","unresolved":false,"context_lines":[{"line_number":550,"context_line":"      - equals: [{get_param: [RoleParameters, NovaNfsEnabled]}, true]"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"  set_reserved_huge_pages:"},{"line_number":553,"context_line":"    or:"},{"line_number":554,"context_line":"      - not:"},{"line_number":555,"context_line":"          and:"},{"line_number":556,"context_line":"          - equals: [{get_param: [RoleParameters, NovaReservedHugePages]}, \"\"]"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_7ae85ade","line":553,"in_reply_to":"3fa7e38b_2a99376c","updated":"2019-12-04 04:45:58.000000000","message":"I would suggest to separate the conditions to have it more explicit checks. And some comments to explain it would be helpful.\n\nconditions:\n  reserved_huge_pages_set:\n      - not:\n          and:\n          - equals: [{get_param: [RoleParameters, NovaReservedHugePages]}, \"\"]\n          - equals: [{get_param: NovaReservedHugePages}, []]\n  ovs_dpdk_socket_mem_set:\n      - not:\n          and:\n          - equals: [{get_param: [RoleParameters, OvsDpdkSocketMemory]}, \"\"]\n          - equals: [{get_param: OvsDpdkSocketMemory}, []]\n\nresources:\n   ...\n   NovaReservedHugePages\n     if\n     - reserved_huge_pages_set\n     - get_param: NovaReservedHugePages\n     - if\n       - ovs_dpdk_socket_mem_set\n       - \u003cyaql\u003e\n       - get_param: NovaReservedHugePages","commit_id":"e03a7155b58a21bd474fb2adec7512bda03deed8"},{"author":{"_account_id":14972,"name":"yogananth Subramanian","email":"ysubrama@redhat.com","username":"yogi"},"change_message_id":"ac8b2253f588d9940035775ba7006d2f4d3ae9af","unresolved":false,"context_lines":[{"line_number":550,"context_line":"      - equals: [{get_param: [RoleParameters, NovaNfsEnabled]}, true]"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"  set_reserved_huge_pages:"},{"line_number":553,"context_line":"    or:"},{"line_number":554,"context_line":"      - not:"},{"line_number":555,"context_line":"          and:"},{"line_number":556,"context_line":"          - equals: [{get_param: [RoleParameters, NovaReservedHugePages]}, \"\"]"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_2a99376c","line":553,"in_reply_to":"3fa7e38b_5ba49207","updated":"2019-12-03 23:07:59.000000000","message":"If OvsDpdkSocketMemory is unset, NovaReservedHugePages value cannot be derived by yaql in \"repeat\" function.\nI wanted the \"repeat\" function to run only for the case when OvsDpdkSocketMemory is set and  when neither global or role based NovaReservedHugePages are set.\n\nso case where either global or role based NovaReservedHugePages is set, have set NovaReservedHugePages to global NovaReservedHugePages in outer condition\n\n      - not:\n          and:\n          - equals: [{get_param: [RoleParameters, NovaReservedHugePages]}, \"\"]\n          - equals: [{get_param: NovaReservedHugePages}, []]\n\n\nand for the case when all 3 values role OvsDpdkSocketMemory, both global and role based NovaReservedHugePages are unset, NovaReservedHugePages  in outer condition is set to global NovaReservedHugePages, that is []\n\n      - and:\n        - equals: [{get_param: NovaReservedHugePages}, []]\n        - equals: [{get_param: [RoleParameters, OvsDpdkSocketMemory]}, \"\"]","commit_id":"e03a7155b58a21bd474fb2adec7512bda03deed8"},{"author":{"_account_id":14972,"name":"yogananth Subramanian","email":"ysubrama@redhat.com","username":"yogi"},"change_message_id":"a27caa3ce0b0d742a8ac431dfc9354efd1fa631c","unresolved":false,"context_lines":[{"line_number":550,"context_line":"      - equals: [{get_param: [RoleParameters, NovaNfsEnabled]}, true]"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"  set_reserved_huge_pages:"},{"line_number":553,"context_line":"    or:"},{"line_number":554,"context_line":"      - not:"},{"line_number":555,"context_line":"          and:"},{"line_number":556,"context_line":"          - equals: [{get_param: [RoleParameters, NovaReservedHugePages]}, \"\"]"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3fa7e38b_e621f050","line":553,"in_reply_to":"3fa7e38b_7ae85ade","updated":"2019-12-06 03:30:47.000000000","message":"Have split the conditions and added support for global OvsDpdkSocketMemory, KernelArgs in patch5.","commit_id":"e03a7155b58a21bd474fb2adec7512bda03deed8"},{"author":{"_account_id":3153,"name":"Emilien Macchi","email":"emilien@redhat.com","username":"emilienm"},"change_message_id":"c839a9eebb13b4d5c7bad4d14d26b7ee00eb8096","unresolved":false,"context_lines":[{"line_number":490,"context_line":"                                - str_split: [\u0027,\u0027,{get_param: [RoleParameters, OvsDpdkSocketMemory]}]"},{"line_number":491,"context_line":"                        \u003c%size%\u003e:"},{"line_number":492,"context_line":"                          yaql:"},{"line_number":493,"context_line":"                            expression: let(hzx \u003d\u003e regex(\"([0-9]+[K|M|G])\").search($.data.kern_p+$.data.kern_g)) -\u003e let(hz \u003d\u003eswitch($hzx \u003d \"4K\" \u003d\u003e \"4\", $hzx \u003d \"2M\" \u003d\u003e \"2048\", $hzx \u003d \"1G\" \u003d\u003e \"1048576\", $hzx  \u003d\u003e \"2048\", $hzx \u003d null \u003d\u003e \"2048\")) -\u003e [$hz]*len($.data.dpdk_p)"},{"line_number":494,"context_line":"                            data:"},{"line_number":495,"context_line":"                              dpdk_p:"},{"line_number":496,"context_line":"                                if:"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3fa7e38b_e7a92ade","line":493,"updated":"2019-12-19 16:53:04.000000000","message":"omg ... we couldn\u0027t have done more complex I guess.","commit_id":"6099999336977b4c7553b3393219050e08fd97d8"},{"author":{"_account_id":6926,"name":"Bogdan Dobrelya","email":"bdobreli@redhat.com","username":"bogdando"},"change_message_id":"bbc75128f0a9a2ac2c5f273f5cd8c33d3eb16a62","unresolved":false,"context_lines":[{"line_number":490,"context_line":"                                - str_split: [\u0027,\u0027,{get_param: [RoleParameters, OvsDpdkSocketMemory]}]"},{"line_number":491,"context_line":"                        \u003c%size%\u003e:"},{"line_number":492,"context_line":"                          yaql:"},{"line_number":493,"context_line":"                            expression: let(hzx \u003d\u003e regex(\"([0-9]+[K|M|G])\").search($.data.kern_p+$.data.kern_g)) -\u003e let(hz \u003d\u003eswitch($hzx \u003d \"4K\" \u003d\u003e \"4\", $hzx \u003d \"2M\" \u003d\u003e \"2048\", $hzx \u003d \"1G\" \u003d\u003e \"1048576\", $hzx  \u003d\u003e \"2048\", $hzx \u003d null \u003d\u003e \"2048\")) -\u003e [$hz]*len($.data.dpdk_p)"},{"line_number":494,"context_line":"                            data:"},{"line_number":495,"context_line":"                              dpdk_p:"},{"line_number":496,"context_line":"                                if:"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3fa7e38b_607cd921","line":493,"in_reply_to":"3fa7e38b_e7a92ade","updated":"2020-01-07 11:26:29.000000000","message":"huge pages would\u0027ve been a waste if not filled with huge code like this!","commit_id":"6099999336977b4c7553b3393219050e08fd97d8"}]}
