)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8d5ee56383358cf39c0700dd681ef8679dc5dfe7","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When NUMA placement is in effect, Nova configures KVM guest vCPUs"},{"line_number":10,"context_line":"to be placed on certain host NUMA nodes. It also provides guest"},{"line_number":11,"context_line":"NUMA topology fo vCPUs and RAM. The kernel will normally satisfy"},{"line_number":12,"context_line":"memory allocations from the host NUMA node that the guest vCPU"},{"line_number":13,"context_line":"is running on, but this is only a preference. Nova needs to set"},{"line_number":14,"context_line":"a strict policy to guarantee guest RAM is always allocated from"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5a890539_6ee9101a","line":11,"updated":"2014-11-10 19:40:41.000000000","message":"s/fo/of/","commit_id":"22881d6730b5f6cc1ef7070418a7d92b32d11fc7"}],"nova/tests/virt/libvirt/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8d5ee56383358cf39c0700dd681ef8679dc5dfe7","unresolved":false,"context_lines":[{"line_number":1365,"context_line":"                mock.patch.object("},{"line_number":1366,"context_line":"                    conn, \"_get_host_capabilities\", return_value\u003dcaps)):"},{"line_number":1367,"context_line":"            cfg \u003d conn._get_guest_config(instance_ref, [], {}, disk_info)"},{"line_number":1368,"context_line":"            self.assertIsNone(cfg.cpuset)"},{"line_number":1369,"context_line":"            self.assertIsNone(cfg.cputune)"},{"line_number":1370,"context_line":"            self.assertIsNotNone(cfg.cpu.numa)"},{"line_number":1371,"context_line":"            for instance_cell, numa_cfg_cell in zip("}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_ee942046","line":1368,"updated":"2014-11-10 19:40:41.000000000","message":"We should also assert the cases where numatune is None.","commit_id":"22881d6730b5f6cc1ef7070418a7d92b32d11fc7"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"f95dcc854072d5a50929f57fdbbb586c09f99275","unresolved":false,"context_lines":[{"line_number":3664,"context_line":"        libvirt XML config object representing the NUMA topology selected"},{"line_number":3665,"context_line":"        for the guest. Returns a tuple of:"},{"line_number":3666,"context_line":""},{"line_number":3667,"context_line":"            (cpu_set, guest_cpu_tune, guest_cpu_numa, guest_numa_tune)"},{"line_number":3668,"context_line":""},{"line_number":3669,"context_line":"        With the following caveats:"},{"line_number":3670,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_355cef18","line":3667,"updated":"2014-10-28 11:32:42.000000000","message":"Wondering if having a separate method that accepts numa and gives us back numa_tune - but since it will almost never be done separately this is probably even better.","commit_id":"75dee31654f0a5c24fec1ff067ac5e1952c725f8"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"bd8d7f77be7f6c4f29c74a7287d7df178eaba5a7","unresolved":false,"context_lines":[{"line_number":3728,"context_line":"                            node \u003d vconfig.LibvirtConfigGuestNUMATuneMemNode()"},{"line_number":3729,"context_line":"                            node.cellid \u003d guest_cell.id"},{"line_number":3730,"context_line":"                            node.nodeset \u003d [host_cell.id]"},{"line_number":3731,"context_line":"                            node.mode \u003d \"strict\""},{"line_number":3732,"context_line":"                            numa_memnodes.append(node)"},{"line_number":3733,"context_line":""},{"line_number":3734,"context_line":"                            numa_mem.nodeset.append(host_cell.id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8c0949_b6cfdaaf","line":3731,"updated":"2014-10-30 15:57:45.000000000","message":"We can remove this, also i\u0027m thinking about the necessary to have \u0027mode\u0027 configurable in the config.","commit_id":"75dee31654f0a5c24fec1ff067ac5e1952c725f8"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"6d94bedfc085e0dcab04a2f7cb5d3b23060626df","unresolved":false,"context_lines":[{"line_number":3728,"context_line":"                            node \u003d vconfig.LibvirtConfigGuestNUMATuneMemNode()"},{"line_number":3729,"context_line":"                            node.cellid \u003d guest_cell.id"},{"line_number":3730,"context_line":"                            node.nodeset \u003d [host_cell.id]"},{"line_number":3731,"context_line":"                            node.mode \u003d \"strict\""},{"line_number":3732,"context_line":"                            numa_memnodes.append(node)"},{"line_number":3733,"context_line":""},{"line_number":3734,"context_line":"                            numa_mem.nodeset.append(host_cell.id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_8a58f1fb","line":3731,"in_reply_to":"7a8c0949_b6cfdaaf","updated":"2014-11-10 13:50:06.000000000","message":"I think it is desirable to be explicit.","commit_id":"75dee31654f0a5c24fec1ff067ac5e1952c725f8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8d5ee56383358cf39c0700dd681ef8679dc5dfe7","unresolved":false,"context_lines":[{"line_number":3707,"context_line":"        libvirt XML config object representing the NUMA topology selected"},{"line_number":3708,"context_line":"        for the guest. Returns a tuple of:"},{"line_number":3709,"context_line":""},{"line_number":3710,"context_line":"            (cpu_set, guest_cpu_tune, guest_cpu_numa, guest_numa_tune)"},{"line_number":3711,"context_line":""},{"line_number":3712,"context_line":"        With the following caveats:"},{"line_number":3713,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_6ed03054","line":3710,"updated":"2014-11-10 19:40:41.000000000","message":"We\u0027re entering megatuple territory, we should create an object for this at some point.","commit_id":"22881d6730b5f6cc1ef7070418a7d92b32d11fc7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a658f126e5f0cefffbc6423b559d1eb06cd0fbdc","unresolved":false,"context_lines":[{"line_number":3707,"context_line":"        libvirt XML config object representing the NUMA topology selected"},{"line_number":3708,"context_line":"        for the guest. Returns a tuple of:"},{"line_number":3709,"context_line":""},{"line_number":3710,"context_line":"            (cpu_set, guest_cpu_tune, guest_cpu_numa, guest_numa_tune)"},{"line_number":3711,"context_line":""},{"line_number":3712,"context_line":"        With the following caveats:"},{"line_number":3713,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_4e73744d","line":3710,"in_reply_to":"5a890539_6ed03054","updated":"2014-11-10 19:41:27.000000000","message":"To be clear, not in this series since you said you plan on backporting this fix series to stable/juno.","commit_id":"22881d6730b5f6cc1ef7070418a7d92b32d11fc7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8d5ee56383358cf39c0700dd681ef8679dc5dfe7","unresolved":false,"context_lines":[{"line_number":3709,"context_line":""},{"line_number":3710,"context_line":"            (cpu_set, guest_cpu_tune, guest_cpu_numa, guest_numa_tune)"},{"line_number":3711,"context_line":""},{"line_number":3712,"context_line":"        With the following caveats:"},{"line_number":3713,"context_line":""},{"line_number":3714,"context_line":"            a) If there is no specified guest NUMA topology, then"},{"line_number":3715,"context_line":"               guest_cpu_tune and guest_cpu_numa shall be None. cpu_set"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_8ed55c45","line":3712,"updated":"2014-11-10 19:40:41.000000000","message":"Would be nice to encapsulate these rules into an object at some point also.\n\nSeems you should update the caveats section with conditions where guest_numa_tune will be None also.","commit_id":"22881d6730b5f6cc1ef7070418a7d92b32d11fc7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1923664268d2c669336d80770a451e77813b0670","unresolved":false,"context_lines":[{"line_number":3709,"context_line":""},{"line_number":3710,"context_line":"            (cpu_set, guest_cpu_tune, guest_cpu_numa, guest_numa_tune)"},{"line_number":3711,"context_line":""},{"line_number":3712,"context_line":"        With the following caveats:"},{"line_number":3713,"context_line":""},{"line_number":3714,"context_line":"            a) If there is no specified guest NUMA topology, then"},{"line_number":3715,"context_line":"               guest_cpu_tune and guest_cpu_numa shall be None. cpu_set"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_1918c1d2","line":3712,"in_reply_to":"5a890539_1d96fa94","updated":"2014-11-11 17:29:38.000000000","message":"I agree with not doing the refactor as part of the bug fix, especially if you intend to backport the fix.  But the megatuple is ugly and we should clean that up at some point before we have to add more things to it.\n\nAnd by object I didn\u0027t mean NovaObject, just some structure (class) rather than rely on the growing tuple.","commit_id":"22881d6730b5f6cc1ef7070418a7d92b32d11fc7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7e8a70921a6cef5a00d5c4e5a03a7296f19835f9","unresolved":false,"context_lines":[{"line_number":3709,"context_line":""},{"line_number":3710,"context_line":"            (cpu_set, guest_cpu_tune, guest_cpu_numa, guest_numa_tune)"},{"line_number":3711,"context_line":""},{"line_number":3712,"context_line":"        With the following caveats:"},{"line_number":3713,"context_line":""},{"line_number":3714,"context_line":"            a) If there is no specified guest NUMA topology, then"},{"line_number":3715,"context_line":"               guest_cpu_tune and guest_cpu_numa shall be None. cpu_set"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_1d96fa94","line":3712,"in_reply_to":"5a890539_8ed55c45","updated":"2014-11-11 09:42:23.000000000","message":"I don\u0027t think we ned to create any new object. The better option is to just pass the LibvirtConfigGuest object into this instead, so we don\u0027t have to return anything - just set stuff on that object directly. But I didn\u0027t want to refactor this as part of a bug fix.","commit_id":"22881d6730b5f6cc1ef7070418a7d92b32d11fc7"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6865f09c66708a493c57abab216d79a0671f0f32","unresolved":false,"context_lines":[{"line_number":3753,"context_line":"                    return allowed_cpus, None, None, None"},{"line_number":3754,"context_line":"                else:"},{"line_number":3755,"context_line":"                    pin_cpuset \u003d random.choice(viable_cells_cpus)"},{"line_number":3756,"context_line":"                    return pin_cpuset, None, None, None"},{"line_number":3757,"context_line":"            else:"},{"line_number":3758,"context_line":"                # We have no NUMA topology in the host either"},{"line_number":3759,"context_line":"                return allowed_cpus, None, None, None"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_b32092b1","line":3756,"updated":"2014-11-12 14:11:32.000000000","message":"Why return None at here, should we return mem tune at here also? But looks like we didn\u0027t track the numa cell\u0027s cpu/mem usage of guest which haven\u0027t numa topology. Is that the reason for now?","commit_id":"4609ac359081a6f176238ff28c8cb8d612d7ef61"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8c21e76cc89d63a378807ac9c9754c69db8ad879","unresolved":false,"context_lines":[{"line_number":3753,"context_line":"                    return allowed_cpus, None, None, None"},{"line_number":3754,"context_line":"                else:"},{"line_number":3755,"context_line":"                    pin_cpuset \u003d random.choice(viable_cells_cpus)"},{"line_number":3756,"context_line":"                    return pin_cpuset, None, None, None"},{"line_number":3757,"context_line":"            else:"},{"line_number":3758,"context_line":"                # We have no NUMA topology in the host either"},{"line_number":3759,"context_line":"                return allowed_cpus, None, None, None"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_f6b92816","line":3756,"in_reply_to":"5a890539_b32092b1","updated":"2014-11-12 14:19:06.000000000","message":"This branch is for case where no NUMA topology is defined, so there\u0027s nothing we need do for NUMA memory policy.","commit_id":"4609ac359081a6f176238ff28c8cb8d612d7ef61"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"45eba32afbca04d378f872081e9eb4c2074ee4f4","unresolved":false,"context_lines":[{"line_number":3753,"context_line":"                    return allowed_cpus, None, None, None"},{"line_number":3754,"context_line":"                else:"},{"line_number":3755,"context_line":"                    pin_cpuset \u003d random.choice(viable_cells_cpus)"},{"line_number":3756,"context_line":"                    return pin_cpuset, None, None, None"},{"line_number":3757,"context_line":"            else:"},{"line_number":3758,"context_line":"                # We have no NUMA topology in the host either"},{"line_number":3759,"context_line":"                return allowed_cpus, None, None, None"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_56b59cec","line":3756,"in_reply_to":"5a890539_f6b92816","updated":"2014-11-12 14:25:05.000000000","message":"I see now...I think on the wrong way...thanks","commit_id":"4609ac359081a6f176238ff28c8cb8d612d7ef61"}]}
