)]}'
{".zuul.yaml":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"50385409a3c22ad760c3fb762e76c76e6cd6e0fe","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            LIBVIRT_TYPE: kvm"},{"line_number":55,"context_line":"            TEMPEST_PLUGINS: /opt/stack/whitebox-tempest-plugin"},{"line_number":56,"context_line":"            WHITEBOX_PRIVKEY_PATH: /home/tempest/.ssh/id_rsa"},{"line_number":57,"context_line":"            WHITEBOX_CPU_TOPOLOGY: \"0: [0,1,2,3], 1: [4,5,6,7]\""},{"line_number":58,"context_line":"    group-vars:"},{"line_number":59,"context_line":"        subnode:"},{"line_number":60,"context_line":"            num_hugepages: 2048"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"bf51134e_dcde6b3c","line":57,"range":{"start_line":57,"start_character":11,"end_line":57,"end_character":63},"updated":"2020-06-25 19:30:32.000000000","message":"it looks like its still not quoted correctly but i think that is becasues of this\nhttps://zuul.opendev.org/t/openstack/build/ec43901af8e84385a7ad2ac9e430914d/log/controller/logs/tempest_conf.txt#131","commit_id":"5155177e9f651a78bf0e38d339bdb68974cfcccf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b3bff4fad999dad1c1ac2504ccd4c641fb9c78ef","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            LIBVIRT_TYPE: kvm"},{"line_number":55,"context_line":"            TEMPEST_PLUGINS: /opt/stack/whitebox-tempest-plugin"},{"line_number":56,"context_line":"            WHITEBOX_PRIVKEY_PATH: /home/tempest/.ssh/id_rsa"},{"line_number":57,"context_line":"            WHITEBOX_CPU_TOPOLOGY: \"0: [0,1,2,3], 1: [4,5,6,7]\""},{"line_number":58,"context_line":"    group-vars:"},{"line_number":59,"context_line":"        subnode:"},{"line_number":60,"context_line":"            num_hugepages: 2048"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"bf51134e_7c20fff7","line":57,"range":{"start_line":57,"start_character":11,"end_line":57,"end_character":63},"in_reply_to":"bf51134e_7c763f40","updated":"2020-06-25 19:51:09.000000000","message":"yep \nhttps://zuul.opendev.org/t/openstack/build/ec43901af8e84385a7ad2ac9e430914d/log/compute/logs/screen-n-cpu.txt#872\n\nvs\n\nhttps://zuul.opendev.org/t/openstack/build/ec43901af8e84385a7ad2ac9e430914d/log/controller/logs/screen-n-cpu.txt#872","commit_id":"5155177e9f651a78bf0e38d339bdb68974cfcccf"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"11b7c9a2c5ba319871e9f5e2a2637c29ec56b272","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            LIBVIRT_TYPE: kvm"},{"line_number":55,"context_line":"            TEMPEST_PLUGINS: /opt/stack/whitebox-tempest-plugin"},{"line_number":56,"context_line":"            WHITEBOX_PRIVKEY_PATH: /home/tempest/.ssh/id_rsa"},{"line_number":57,"context_line":"            WHITEBOX_CPU_TOPOLOGY: \"0: [0,1,2,3], 1: [4,5,6,7]\""},{"line_number":58,"context_line":"    group-vars:"},{"line_number":59,"context_line":"        subnode:"},{"line_number":60,"context_line":"            num_hugepages: 2048"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"bf51134e_7c763f40","line":57,"range":{"start_line":57,"start_character":11,"end_line":57,"end_character":63},"in_reply_to":"bf51134e_dcde6b3c","updated":"2020-06-25 19:40:36.000000000","message":"ignore that we might not need to quote it\n\nthe job failed because of \n\nDetails: {\u0027code\u0027: 400, \u0027message\u0027: \"Migration pre-check error: Unacceptable CPU info: CPU doesn\u0027t have compatibility.\\n\\n0\\n\\nRefer to http://libvirt.org/html/libvirt-libvirt-host.html#virCPUCompareResult\"}\n\nlets set teh cpu model\n\n   devstack_local_conf:\n          post-config:\n            $NOVA_CONF:\n              libvirt:\n                cpu_mode: custom\n                cpu_model: kvm64\n                virt_type: kvm\n\nthis shoudl be set in both the subnode and vars section","commit_id":"5155177e9f651a78bf0e38d339bdb68974cfcccf"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"52a5df3f71a0fadf0c96ad029ed095c14066295b","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            LIBVIRT_TYPE: kvm"},{"line_number":82,"context_line":"            TEMPEST_PLUGINS: /opt/stack/whitebox-tempest-plugin"},{"line_number":83,"context_line":"            WHITEBOX_PRIVKEY_PATH: /home/tempest/.ssh/id_rsa"},{"line_number":84,"context_line":"            WHITEBOX_CPU_TOPOLOGY: \"0: [0,1,2,3], 1: [4,5,6,7]\""},{"line_number":85,"context_line":"        devstack_local_conf:"},{"line_number":86,"context_line":"          post-config:"},{"line_number":87,"context_line":"            $NOVA_CONF:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f560f44_9ff6808e","line":84,"updated":"2020-08-10 21:27:41.000000000","message":"Ah, didn\u0027t notice this until now - this is the topology for the nested-virt label, so it belongs down in the whitebox-multinode-devstack job definition.","commit_id":"53f0c9a6338d4fc0cc87149a8bd2dc606488f3a6"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"c19561995f5b535e53b39ab81a1d9d57a5ca3843","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            LIBVIRT_TYPE: kvm"},{"line_number":82,"context_line":"            TEMPEST_PLUGINS: /opt/stack/whitebox-tempest-plugin"},{"line_number":83,"context_line":"            WHITEBOX_PRIVKEY_PATH: /home/tempest/.ssh/id_rsa"},{"line_number":84,"context_line":"            WHITEBOX_CPU_TOPOLOGY: \"0: [0,1,2,3], 1: [4,5,6,7]\""},{"line_number":85,"context_line":"        devstack_local_conf:"},{"line_number":86,"context_line":"          post-config:"},{"line_number":87,"context_line":"            $NOVA_CONF:"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f560f44_1aeefe20","line":84,"in_reply_to":"9f560f44_9ff6808e","updated":"2020-08-10 23:59:45.000000000","message":"Done","commit_id":"53f0c9a6338d4fc0cc87149a8bd2dc606488f3a6"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3132a85f33f3764d2c71ad4bdb0134b87c8cfdf0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"      code itself."},{"line_number":107,"context_line":"    vars:"},{"line_number":108,"context_line":"      tempest_test_regex: ^whitebox_tempest_plugin\\."},{"line_number":109,"context_line":"      devstack_localrc:"},{"line_number":110,"context_line":"          WHITEBOX_CPU_TOPOLOGY: \"0: [0,1,2,3], 1: [4,5,6,7]\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- job:"},{"line_number":113,"context_line":"    name: whitebox-multinode-multinuma-devstack"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"9f560f44_bae8b2e1","line":110,"range":{"start_line":109,"start_character":5,"end_line":110,"end_character":61},"updated":"2020-08-10 23:06:27.000000000","message":"this is the toplogy for the multi numa job\n\nfor this job it should be  \"0: [0,1,2,3,4,5,6,7]\"\n\nyou should copy this to 125","commit_id":"f1492b85f6db9164ef3224707213ba026e7ac21e"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"c19561995f5b535e53b39ab81a1d9d57a5ca3843","unresolved":false,"context_lines":[{"line_number":106,"context_line":"      code itself."},{"line_number":107,"context_line":"    vars:"},{"line_number":108,"context_line":"      tempest_test_regex: ^whitebox_tempest_plugin\\."},{"line_number":109,"context_line":"      devstack_localrc:"},{"line_number":110,"context_line":"          WHITEBOX_CPU_TOPOLOGY: \"0: [0,1,2,3], 1: [4,5,6,7]\""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"- job:"},{"line_number":113,"context_line":"    name: whitebox-multinode-multinuma-devstack"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"9f560f44_9a696e26","line":110,"range":{"start_line":109,"start_character":5,"end_line":110,"end_character":61},"in_reply_to":"9f560f44_bae8b2e1","updated":"2020-08-10 23:59:45.000000000","message":"Done","commit_id":"f1492b85f6db9164ef3224707213ba026e7ac21e"}],"devstack/plugin.sh":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fc2943ae59f6e54a82052d3863902951ee495ddb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/sh"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"function topology {"},{"line_number":4,"context_line":"    for node in $(ls /sys/bus/node/devices) ;"},{"line_number":5,"context_line":"      do"},{"line_number":6,"context_line":"        num\u003d$(echo $node | sed \"s/node//\");"}],"source_content_type":"text/x-sh","patch_set":6,"id":"bf51134e_71ef88e8","line":3,"range":{"start_line":3,"start_character":9,"end_line":3,"end_character":17},"updated":"2020-06-25 18:33:08.000000000","message":"i think this fuction might need to be put in settings\n\nim not sure the order of operation is to source this file before settings\n\ni was expecting it to be in the setting file\n\ni think this is only working in the ci because we have ardcoded it in the zuul.yaml","commit_id":"fa54cde5f7ef71b9fef66c9b6103dd11a4bc271f"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"c50e505c0961ff2ad4df02b40ed0a6a9c15f1186","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/sh"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"function topology {"},{"line_number":4,"context_line":"    for node in $(ls /sys/bus/node/devices) ;"},{"line_number":5,"context_line":"      do"},{"line_number":6,"context_line":"        num\u003d$(echo $node | sed \"s/node//\");"}],"source_content_type":"text/x-sh","patch_set":6,"id":"bf51134e_318070f5","line":3,"range":{"start_line":3,"start_character":9,"end_line":3,"end_character":17},"in_reply_to":"bf51134e_71ef88e8","updated":"2020-06-25 18:35:53.000000000","message":"Done","commit_id":"fa54cde5f7ef71b9fef66c9b6103dd11a4bc271f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c98295e10537f392d02c30ff063c97ba891c9962","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    iniset $TEMPEST_CONFIG whitebox-database password $DATABASE_PASSWORD"},{"line_number":21,"context_line":"    iniset $TEMPEST_CONFIG whitebox-database host $DATABASE_HOST"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    iniset $TEMPEST_CONFIG whitebox-hardware cpu_topology \"$WHITEBOX_CPU_TOPOLOGY\""},{"line_number":24,"context_line":"}"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"if [[ \"$1\" \u003d\u003d \"stack\" ]]; then"}],"source_content_type":"text/x-sh","patch_set":7,"id":"bf51134e_fcb40ff4","line":23,"range":{"start_line":23,"start_character":58,"end_line":23,"end_character":82},"updated":"2020-06-25 19:32:37.000000000","message":"add add them here\n\"\u0027$WHITEBOX_CPU_TOPOLOGY\u0027\"","commit_id":"5155177e9f651a78bf0e38d339bdb68974cfcccf"}],"devstack/settings":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"c98295e10537f392d02c30ff063c97ba891c9962","unresolved":false,"context_lines":[{"line_number":16,"context_line":"WHITEBOX_LIBVIRT_RESTART_COMMAND\u003d${WHITEBOX_LIBVIRT_RESTART_COMMAND:-\u0027systemctl restart libvirtd\u0027}"},{"line_number":17,"context_line":"WHITEBOX_LIBVIRT_STOP_COMMAND\u003d${WHITEBOX_LIBVIRT_STOP_COMMAND:-\u0027systemctl stop libvirtd\u0027}"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"WHITEBOX_CPU_TOPOLOGY\u003d${WHITEBOX_CPU_TOPOLOGY:-$(echo \"\u0027$(topology)\u0027\")}"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"bf51134e_9cc19357","line":19,"range":{"start_line":19,"start_character":47,"end_line":19,"end_character":70},"updated":"2020-06-25 19:32:37.000000000","message":"ok lets remove teh \u0027\u0027 from here","commit_id":"5155177e9f651a78bf0e38d339bdb68974cfcccf"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9287f53c20bc2fc2d3f3c1c8130bbd69598a8ebc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"function topology {"},{"line_number":2,"context_line":"    for node in $(ls /sys/bus/node/devices) ;"},{"line_number":3,"context_line":"      do"},{"line_number":4,"context_line":"        num\u003d$(echo $node | sed \"s/node//\");"},{"line_number":5,"context_line":"        value\u003d$(cat /sys/bus/node/devices/${node}/cpulist | sed \"s/-/ /\" | xargs seq -s \u0027,\u0027);"},{"line_number":6,"context_line":"        echo \"${num}: [${value}]\"; done | tr \u0027\\n\u0027 \u0027 \u0027 | sed \u0027s/ $//\u0027;"},{"line_number":7,"context_line":"}"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"NOVA_FILTERS\u003d\"$NOVA_FILTERS,NUMATopologyFilter\""},{"line_number":10,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"bf51134e_c77576ce","line":7,"range":{"start_line":2,"start_character":0,"end_line":7,"end_character":1},"updated":"2020-07-06 18:35:13.000000000","message":"This is really just moving the introspection from the Python code into the Bash code. I think we should get rid of this, and leave it to the deployment tooling to set the option explicitly, especially since the option assumes a common NUMA topology across all compute hosts.","commit_id":"5ecc7af04a8cf5b396870074ec83cc7613dd6e5b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"ece53d572d41bd48000496bf839245de7dabca1a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"function topology {"},{"line_number":2,"context_line":"    for node in $(ls /sys/bus/node/devices) ;"},{"line_number":3,"context_line":"      do"},{"line_number":4,"context_line":"        num\u003d$(echo $node | sed \"s/node//\");"},{"line_number":5,"context_line":"        value\u003d$(cat /sys/bus/node/devices/${node}/cpulist | sed \"s/-/ /\" | xargs seq -s \u0027,\u0027);"},{"line_number":6,"context_line":"        echo \"${num}: [${value}]\"; done | tr \u0027\\n\u0027 \u0027 \u0027 | sed \u0027s/ $//\u0027;"},{"line_number":7,"context_line":"}"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"NOVA_FILTERS\u003d\"$NOVA_FILTERS,NUMATopologyFilter\""},{"line_number":10,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":8,"id":"9f560f44_c118ff82","line":7,"range":{"start_line":2,"start_character":0,"end_line":7,"end_character":1},"in_reply_to":"bf51134e_c77576ce","updated":"2020-07-27 18:50:58.000000000","message":"This only works if the CPUs in a NUMA node are in sequence (so 0-7 kind of formatting). If they\u0027re even/odd, we\u0027ll get something like 0,2,4,6,8,10 and this won\u0027t work.","commit_id":"5ecc7af04a8cf5b396870074ec83cc7613dd6e5b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"0b788709410f1e789bb4145cef849db24bc97e56","unresolved":false,"context_lines":[{"line_number":16,"context_line":"WHITEBOX_LIBVIRT_RESTART_COMMAND\u003d${WHITEBOX_LIBVIRT_RESTART_COMMAND:-\u0027systemctl restart libvirtd\u0027}"},{"line_number":17,"context_line":"WHITEBOX_LIBVIRT_STOP_COMMAND\u003d${WHITEBOX_LIBVIRT_STOP_COMMAND:-\u0027systemctl stop libvirtd\u0027}"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"WHITEBOX_CPU_TOPOLOGY\u003d${WHITEBOX_CPU_TOPOLOGY:-$(echo \"\u0027$(topology)\u0027\")}"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"9f560f44_32e210d6","line":19,"range":{"start_line":19,"start_character":47,"end_line":19,"end_character":68},"updated":"2020-08-10 16:34:28.000000000","message":"Remove this.","commit_id":"5ecc7af04a8cf5b396870074ec83cc7613dd6e5b"}],"whitebox_tempest_plugin/config.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4d3bfa2273b6348c6d6ef4b73699518a9c73ef86","unresolved":false,"context_lines":[{"line_number":153,"context_line":"             \u0027file parsing, the list is a string of CPU IDs with no extra \u0027"},{"line_number":154,"context_line":"             \u0027characters. For example, if NUMA node 0 has CPUs 0 and 1, \u0027"},{"line_number":155,"context_line":"             \u0027and NUMA node 1 has CPUs 2 and 3, the value to set would be \u0027"},{"line_number":156,"context_line":"             \u00270:01,1:23.\u0027)"},{"line_number":157,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_f4bad1bd","line":156,"range":{"start_line":156,"start_character":13,"end_line":156,"end_character":25},"updated":"2020-05-28 16:25:43.000000000","message":"assuming each cpu is 1 charater is not an ok assumption.","commit_id":"4baf3130e75395011b12b97b65cc90dd85d01b78"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"9287f53c20bc2fc2d3f3c1c8130bbd69598a8ebc","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        help\u003d\u0027Host CPU topology, as a dictionary of \u003cNUMA node ID\u003e:\u0027"},{"line_number":154,"context_line":"             \u0027\u003cList of CPUs in that node\u003e. For example, if NUMA node 0 has \u0027"},{"line_number":155,"context_line":"             \u0027CPUs 0 and 1, and NUMA node 1 has CPUs 2 and 3, the value to \u0027"},{"line_number":156,"context_line":"             \u0027set would be `0: [0,1], 1: [2, 3]`.\u0027)"},{"line_number":157,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_c78736b6","line":156,"updated":"2020-07-06 18:35:13.000000000","message":"We should probably mention that this assumes identical NUMA topologies on all of the computes.","commit_id":"5ecc7af04a8cf5b396870074ec83cc7613dd6e5b"}],"whitebox_tempest_plugin/hardware.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"3eafea9d2e7b43e5dcbdee1864855c84487d974b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"CONF \u003d config.CONF"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def _cpu_topology_dict():"},{"line_number":22,"context_line":"    topology \u003d {}"},{"line_number":23,"context_line":"    for numa_id, cpus in CONF.whitebox_hardware.cpu_topology.items():"},{"line_number":24,"context_line":"        topology[int(numa_id)] \u003d set([int(cpu) for cpu in cpus])"},{"line_number":25,"context_line":"    return topology"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"def numa_node_count():"},{"line_number":29,"context_line":"    topo \u003d _cpu_topology_dict()"},{"line_number":30,"context_line":"    return len(topo.keys())"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def cpus_in_node(node_id):"},{"line_number":34,"context_line":"    topo \u003d _cpu_topology_dict()"},{"line_number":35,"context_line":"    return topo[node_id]"}],"source_content_type":"text/x-python","patch_set":8,"id":"bf51134e_5c9db8b9","line":35,"range":{"start_line":21,"start_character":0,"end_line":35,"end_character":24},"updated":"2020-07-06 19:33:22.000000000","message":"And actually maybe the helpers aren\u0027t useful in this patch. Would we be better off waiting until some code needs a particular helper before adding it? I think so...","commit_id":"5ecc7af04a8cf5b396870074ec83cc7613dd6e5b"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"68f6b4bcd973ad35285769b4fca32a851ba062c6","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from tempest import config"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"CONF \u003d config.CONF"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def _cpu_topology_dict():"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_9f916055","line":18,"updated":"2020-08-10 21:16:24.000000000","message":"I\u0027m ambivalent on this whole file - I think I\u0027d rather we add these as they become needed, not pre-emptively.","commit_id":"91fe65dcf1b9a571db30ae59488337eceb69702b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"4c9a491f473a507e9ae7f399c0bb2daa9e0333c0","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from tempest import config"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"CONF \u003d config.CONF"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def _cpu_topology_dict():"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_df70f842","line":18,"in_reply_to":"9f560f44_9f916055","updated":"2020-08-10 21:17:38.000000000","message":"Done","commit_id":"91fe65dcf1b9a571db30ae59488337eceb69702b"}],"whitebox_tempest_plugin/tests/test_hardware.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"4d3bfa2273b6348c6d6ef4b73699518a9c73ef86","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class HardwareTestCase(base.WhiteboxPluginTestCase):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(HardwareTestCase, self).setUp()"},{"line_number":23,"context_line":"        self.flags(cpu_topology\u003d{\u00270\u0027: \u0027012\u0027, \u00271\u0027: \u002734\u0027},"},{"line_number":24,"context_line":"                   group\u003d\u0027whitebox-hardware\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_hardware(self):"},{"line_number":27,"context_line":"        self.assertEqual(2, hardware.numa_node_count())"},{"line_number":28,"context_line":"        self.assertEqual(set([0, 1, 2]), hardware.cpus_in_node(0))"},{"line_number":29,"context_line":"        self.assertEqual(set([3, 4]), hardware.cpus_in_node(1))"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_7478812a","line":29,"range":{"start_line":21,"start_character":4,"end_line":29,"end_character":63},"updated":"2020-05-28 16:25:43.000000000","message":"-1\n\nthat format only support cpus up to 9\n\nyou need a delimiter e.g. \u00270\u0027:\u00271,2,3\u0027 and you should porbaly supprot ranges too e.g. 1-3","commit_id":"4baf3130e75395011b12b97b65cc90dd85d01b78"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"86b0bc8406e48a3c50cca14e42ed4d6f6feab7cc","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class HardwareTestCase(base.WhiteboxPluginTestCase):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(HardwareTestCase, self).setUp()"},{"line_number":23,"context_line":"        self.flags(cpu_topology\u003d{\u00270\u0027: \u0027012\u0027, \u00271\u0027: \u002734\u0027},"},{"line_number":24,"context_line":"                   group\u003d\u0027whitebox-hardware\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_hardware(self):"},{"line_number":27,"context_line":"        self.assertEqual(2, hardware.numa_node_count())"},{"line_number":28,"context_line":"        self.assertEqual(set([0, 1, 2]), hardware.cpus_in_node(0))"},{"line_number":29,"context_line":"        self.assertEqual(set([3, 4]), hardware.cpus_in_node(1))"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_efeb1a0f","line":29,"range":{"start_line":21,"start_character":4,"end_line":29,"end_character":63},"in_reply_to":"ff570b3c_7478812a","updated":"2020-05-28 16:45:19.000000000","message":"Good point - the reason for this is commas are used by Oslo as the delimiter between key:value pairs, so we can\u0027t use them. Is there another Opt that we could use here?","commit_id":"4baf3130e75395011b12b97b65cc90dd85d01b78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6abd63944c5169a2e5906422031fd07f8fd76824","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class HardwareTestCase(base.WhiteboxPluginTestCase):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(HardwareTestCase, self).setUp()"},{"line_number":23,"context_line":"        self.flags(cpu_topology\u003d{\u00270\u0027: \u0027012\u0027, \u00271\u0027: \u002734\u0027},"},{"line_number":24,"context_line":"                   group\u003d\u0027whitebox-hardware\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_hardware(self):"},{"line_number":27,"context_line":"        self.assertEqual(2, hardware.numa_node_count())"},{"line_number":28,"context_line":"        self.assertEqual(set([0, 1, 2]), hardware.cpus_in_node(0))"},{"line_number":29,"context_line":"        self.assertEqual(set([3, 4]), hardware.cpus_in_node(1))"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_4a22f4a5","line":29,"range":{"start_line":21,"start_character":4,"end_line":29,"end_character":63},"in_reply_to":"ff570b3c_afdf62d4","updated":"2020-05-28 17:26:38.000000000","message":"i was so close its the following\n\n\u003e\u003e\u003e from oslo_config import types\n\u003e\u003e\u003e dict_of_list_of_int \u003d  types.Dict(types.List(types.Integer(),bounds\u003dTrue))\n\u003e\u003e\u003e dict_of_list_of_int(\u00270: [0,1], 1:[2,3]\u0027)\n{\u00271\u0027: [2, 3], \u00270\u0027: [0, 1]}\n\u003e\u003e\u003e","commit_id":"4baf3130e75395011b12b97b65cc90dd85d01b78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"02d31ba7ea451d3d489f4293fff62e438c43f237","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class HardwareTestCase(base.WhiteboxPluginTestCase):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(HardwareTestCase, self).setUp()"},{"line_number":23,"context_line":"        self.flags(cpu_topology\u003d{\u00270\u0027: \u0027012\u0027, \u00271\u0027: \u002734\u0027},"},{"line_number":24,"context_line":"                   group\u003d\u0027whitebox-hardware\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_hardware(self):"},{"line_number":27,"context_line":"        self.assertEqual(2, hardware.numa_node_count())"},{"line_number":28,"context_line":"        self.assertEqual(set([0, 1, 2]), hardware.cpus_in_node(0))"},{"line_number":29,"context_line":"        self.assertEqual(set([3, 4]), hardware.cpus_in_node(1))"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_afdf62d4","line":29,"range":{"start_line":21,"start_character":4,"end_line":29,"end_character":63},"in_reply_to":"ff570b3c_cff3b69d","updated":"2020-05-28 17:15:54.000000000","message":"you might be abel to declar it as a dict of list of int\n\nfrom oslo_config import types\n\ndict_of_list_of_int_opt \u003d types.Dict(types.List(types.Integer()))\n\nthats actully what it is","commit_id":"4baf3130e75395011b12b97b65cc90dd85d01b78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"fa72db7f8740a538d158558c4c7fbd5896933a83","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"class HardwareTestCase(base.WhiteboxPluginTestCase):"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(HardwareTestCase, self).setUp()"},{"line_number":23,"context_line":"        self.flags(cpu_topology\u003d{\u00270\u0027: \u0027012\u0027, \u00271\u0027: \u002734\u0027},"},{"line_number":24,"context_line":"                   group\u003d\u0027whitebox-hardware\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_hardware(self):"},{"line_number":27,"context_line":"        self.assertEqual(2, hardware.numa_node_count())"},{"line_number":28,"context_line":"        self.assertEqual(set([0, 1, 2]), hardware.cpus_in_node(0))"},{"line_number":29,"context_line":"        self.assertEqual(set([3, 4]), hardware.cpus_in_node(1))"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff570b3c_cff3b69d","line":29,"range":{"start_line":21,"start_character":4,"end_line":29,"end_character":63},"in_reply_to":"ff570b3c_efeb1a0f","updated":"2020-05-28 17:08:20.000000000","message":"we could use a difference chariter like ; or |\n\nam other then that i think we would have to look at a sting opt with json? or maybe there is a json opt we could use\n\nso you can do\n\ncpu_topology \u003d \u0027{ \"0\": [0,1,2], \"1\": [3,4,10]}\u0027\nas a sting opt then do a json.loads()\n\nif there isn\u0027t a JSON opt.","commit_id":"4baf3130e75395011b12b97b65cc90dd85d01b78"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"44dde109785ee081b2671abfbd7606cc7c6687a1","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"    def setUp(self):"},{"line_number":22,"context_line":"        super(HardwareTestCase, self).setUp()"},{"line_number":23,"context_line":"        self.flags(cpu_topology\u003d{\u00270\u0027: [0, 1, 2], \u00271\u0027: [3, 4]},"},{"line_number":24,"context_line":"                   group\u003d\u0027whitebox-hardware\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_hardware(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff570b3c_723b6ed0","line":23,"range":{"start_line":23,"start_character":32,"end_line":23,"end_character":61},"updated":"2020-05-28 20:23:34.000000000","message":"so this is just something i dont know myself.\n\nshould you be seting this to the parsed value or the unparsed value.\n\ni.e. should this be a string or is the correct?\n\nif the unit tests pass i guess this is fine be we will see when they run.","commit_id":"9d36d8da76ab0cece6a81f61601c30c42251d6f1"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"68f6b4bcd973ad35285769b4fca32a851ba062c6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from whitebox_tempest_plugin import hardware"},{"line_number":16,"context_line":"from whitebox_tempest_plugin.tests import base"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_3f8c9434","line":13,"updated":"2020-08-10 21:16:24.000000000","message":"And then we can lose this whole file as well.","commit_id":"91fe65dcf1b9a571db30ae59488337eceb69702b"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"4c9a491f473a507e9ae7f399c0bb2daa9e0333c0","unresolved":false,"context_lines":[{"line_number":10,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":11,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from whitebox_tempest_plugin import hardware"},{"line_number":16,"context_line":"from whitebox_tempest_plugin.tests import base"}],"source_content_type":"text/x-python","patch_set":9,"id":"9f560f44_5f9a2861","line":13,"in_reply_to":"9f560f44_3f8c9434","updated":"2020-08-10 21:17:38.000000000","message":"Done","commit_id":"91fe65dcf1b9a571db30ae59488337eceb69702b"}]}
