)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12988,"name":"Peter Penchev","email":"openstack-dev@storpool.com","username":"ppenchev"},"change_message_id":"bf8f4b2f07cc3406f67ae119883123d2aa2e8fd2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"There are some cases where None value is set to cpuset_reserved in"},{"line_number":10,"context_line":"InstanceNUMATopology at _numa_fit_instance_cell() function in"},{"line_number":11,"context_line":"hardware.py. However, libvirt driver treat cpuset_reserved value"},{"line_number":12,"context_line":"as an iterate object when it constructs xml configuration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To avoid a risk to get an error in libvirt driver, this patch adds"},{"line_number":15,"context_line":"a check to see if the value is not None before adding the cpus"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f93b717_b3d22327","line":12,"updated":"2018-02-01 11:43:55.000000000","message":"ITYM \"iterable\" here.","commit_id":"7b51969c4c5533219b38386e22074d9d41362669"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"87c35038f8d51c4c43461d270e362b8b78e9dd88","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add check before adding cpus to cpuset_reserved"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some cases where None value is set to cpuset_reserved in"},{"line_number":10,"context_line":"InstanceNUMATopology at _numa_fit_instance_cell() function in"},{"line_number":11,"context_line":"hardware.py. However, libvirt driver treat cpuset_reserved value"},{"line_number":12,"context_line":"as an iterate object when it constructs xml configuration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To avoid a risk to get an error in libvirt driver, this patch adds"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf659307_95666c29","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":12},"updated":"2018-03-27 14:04:05.000000000","message":"Can you point me to the line of code where this gets set to None because I\u0027m having a hard time finding it, it looks like most everything treats this as an int and reads from it rather than sets it to None.\n\nI guess it\u0027s this?\n\nhttps://github.com/openstack/nova/blob/4e2919e6b208a2e95d75782f9cad0a6f0892d983/nova/virt/hardware.py#L795\n\nSo way down in the call stack.","commit_id":"24d9e06ec68dfd0ead9bc56ad186e7b4e0acd8fb"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fb9e0dafda7eb3c5077354fe41b83e3489094d42","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add check before adding cpus to cpuset_reserved"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"There are some cases where None value is set to cpuset_reserved in"},{"line_number":10,"context_line":"InstanceNUMATopology at _numa_fit_instance_cell() function in"},{"line_number":11,"context_line":"hardware.py. However, libvirt driver treat cpuset_reserved value"},{"line_number":12,"context_line":"as an iterate object when it constructs xml configuration."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"To avoid a risk to get an error in libvirt driver, this patch adds"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf659307_ebaa59d0","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":12},"in_reply_to":"bf659307_95666c29","updated":"2018-03-28 01:13:13.000000000","message":"\u003e I guess it\u0027s this?\n\nThat\u0027s right. Changing that line to\n\n  cpuset_reserved \u003d set()\n\nalso fixes the problem as is described in PS1, but we (stephen and I) agreed that this (PS4) is cleaner.\n\n(FYI: The code in PS1 looks like a bit different from the one in your link (github master head) because [1] was merged between PS1 and PS4.)\n\n[1] https://review.openstack.org/#/c/538700/","commit_id":"24d9e06ec68dfd0ead9bc56ad186e7b4e0acd8fb"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"87c35038f8d51c4c43461d270e362b8b78e9dd88","unresolved":false,"context_lines":[{"line_number":3157,"context_line":"                    memory\u003d1024, pagesize\u003d2048,"},{"line_number":3158,"context_line":"                    cpu_policy\u003dfields.CPUAllocationPolicy.DEDICATED,"},{"line_number":3159,"context_line":"                    cpu_pinning\u003d{2: 7, 3: 8},"},{"line_number":3160,"context_line":"                    cpuset_reserved\u003dset([]))])"},{"line_number":3161,"context_line":""},{"line_number":3162,"context_line":"        instance_ref \u003d objects.Instance(**self.test_instance)"},{"line_number":3163,"context_line":"        instance_ref.numa_topology \u003d instance_topology"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_98ec632a","side":"PARENT","line":3160,"updated":"2018-03-27 14:04:05.000000000","message":"Yup this is good, removing it makes the value nullable and we get the TypeError if the fix is removed:\n\nnova.tests.unit.virt.libvirt.test_driver.LibvirtConnTestCase.test_get_guest_config_numa_host_instance_isolated_emulator_threads\n-------------------------------------------------------------------------------------------------------------------------------\n\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n      File \"nova/tests/unit/virt/libvirt/test_driver.py\", line 3190, in test_get_guest_config_numa_host_instance_isolated_emulator_threads\n        image_meta, disk_info)\n      File \"nova/virt/libvirt/driver.py\", line 5112, in _get_guest_config\n        instance.numa_topology, flavor, allowed_cpus, image_meta)\n      File \"nova/virt/libvirt/driver.py\", line 4460, in _get_guest_numa_config\n        guest_cpu_tune.emulatorpin.cpuset.update(emu_pin_cpuset)\n    TypeError: \u0027NoneType\u0027 object is not iterable","commit_id":"c67c74db4519c447e15e234ae8058bee0cdaafdb"}],"nova/virt/hardware.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"04b2f8d648bbdcd5d64d2a3b4b2a11027e4b5295","unresolved":false,"context_lines":[{"line_number":783,"context_line":"        }"},{"line_number":784,"context_line":"        LOG.info(msg, msg_args)"},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"        cpuset_reserved \u003d set()"},{"line_number":787,"context_line":"        if num_cpu_reserved:"},{"line_number":788,"context_line":"            # Updates the pCPUs used based on vCPUs pinned to"},{"line_number":789,"context_line":"            #"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_62cda72f","line":786,"range":{"start_line":786,"start_character":0,"end_line":786,"end_character":31},"updated":"2018-02-01 10:13:15.000000000","message":"Hmm, I\u0027m not sure about this. The actual issue, if one exists, is likely being raised here:\n\n  https://github.com/openstack/nova/blob/17.0.0.0b3/nova/virt/libvirt/driver.py#L4240-L4242\n\nI wonder if we should just harden that instead?","commit_id":"61881c4c0903d90874fa0b806765b33576b2cf02"},{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"ff3f8806d8079326522c43a7e46042764511e2a0","unresolved":false,"context_lines":[{"line_number":783,"context_line":"        }"},{"line_number":784,"context_line":"        LOG.info(msg, msg_args)"},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"        cpuset_reserved \u003d set()"},{"line_number":787,"context_line":"        if num_cpu_reserved:"},{"line_number":788,"context_line":"            # Updates the pCPUs used based on vCPUs pinned to"},{"line_number":789,"context_line":"            #"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_bdc8b2a5","line":786,"range":{"start_line":786,"start_character":0,"end_line":786,"end_character":31},"in_reply_to":"5f93b717_62cda72f","updated":"2018-02-01 10:31:40.000000000","message":"To be honest, I at first tried that approach, and the behavior was weird and beyond my head (by hardening check there, the returned cpu_reserved included cpus that are used by vcpus, wao!)\n\nBut if you think so too, I\u0027ll check it up again.","commit_id":"61881c4c0903d90874fa0b806765b33576b2cf02"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":25625,"name":"Tetsuro Nakamura","email":"tetsuro.nakamura.bc@hco.ntt.co.jp","username":"tetsuro0907"},"change_message_id":"fb5601d611bb554a4f8daf2e40e17d0dedf677b0","unresolved":false,"context_lines":[{"line_number":4316,"context_line":"                                else:"},{"line_number":4317,"context_line":"                                    pin_cpuset.cpuset \u003d host_cell.cpuset"},{"line_number":4318,"context_line":"                                if emulator_threads_isolated:"},{"line_number":4319,"context_line":"                                    if object_numa_cell.cpuset_reserved:"},{"line_number":4320,"context_line":"                                        emupcpus.extend("},{"line_number":4321,"context_line":"                                            object_numa_cell.cpuset_reserved)"},{"line_number":4322,"context_line":"                                elif not wants_realtime or cpu not in vcpus_rt:"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_0c8c03d5","line":4319,"range":{"start_line":4319,"start_character":36,"end_line":4319,"end_character":72},"updated":"2018-02-02 00:44:16.000000000","message":"I agree that once stephen’s patch[2] is merged, we should use more strict check, using “”“if (\u0027cpuset_reserved\u0027 in instancecell and instancecell.cpuset_reserved)””” clause.\nI  don’t understand why we need this patch[2], though.\n\n[2] https://review.openstack.org/#/c/466030/10/nova/virt/hardware.py","commit_id":"7b51969c4c5533219b38386e22074d9d41362669"}]}
