)]}'
{"nova/objects/image_meta.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"57588d6aa29da4057d05ea1caca352010ac98bba","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        hw_numa_mem_set \u003d False"},{"line_number":338,"context_line":"        for cellid in range(ImageMetaProps.NUMA_NODES_MAX):"},{"line_number":339,"context_line":"            memprop \u003d \"hw_numa_mem.%d\" % cellid"},{"line_number":340,"context_line":"            if memprop not in image_props:"},{"line_number":341,"context_line":"                break"},{"line_number":342,"context_line":"            hw_numa_mem.append(int(image_props[memprop]))"},{"line_number":343,"context_line":"            hw_numa_mem_set \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_66a2404d","line":340,"updated":"2015-06-09 13:13:41.000000000","message":"I\u0027m not sure we want to break here we can have numa defined like:\n\n  hw_numa_mem.0\u0027: \"32\"\n  hw_numa_mem.2\u0027: \"64\"","commit_id":"98ea823435b5f42ed65531bf74c7fea652ddb656"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"5e41216d4abdc86f8b01966bd19e791590e5b406","unresolved":false,"context_lines":[{"line_number":337,"context_line":"        hw_numa_mem_set \u003d False"},{"line_number":338,"context_line":"        for cellid in range(ImageMetaProps.NUMA_NODES_MAX):"},{"line_number":339,"context_line":"            memprop \u003d \"hw_numa_mem.%d\" % cellid"},{"line_number":340,"context_line":"            if memprop not in image_props:"},{"line_number":341,"context_line":"                break"},{"line_number":342,"context_line":"            hw_numa_mem.append(int(image_props[memprop]))"},{"line_number":343,"context_line":"            hw_numa_mem_set \u003d True"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_4f987778","line":340,"in_reply_to":"3afb71cf_66a2404d","updated":"2015-06-09 13:52:44.000000000","message":"That config is not valid - if you specify hw_numa_mem|cpus for *any* cell, you must then specify it for *all* cells.","commit_id":"98ea823435b5f42ed65531bf74c7fea652ddb656"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a2abc0f9487a8431872fb4a5b9ce858ed3ce1260","unresolved":false,"context_lines":[{"line_number":356,"context_line":"            hw_numa_cpus.append("},{"line_number":357,"context_line":"                hardware.parse_cpu_spec(image_props[cpuprop]))"},{"line_number":358,"context_line":"            hw_numa_cpus_set \u003d True"},{"line_number":359,"context_line":"            del image_props[cpuprop]"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":"        if hw_numa_cpus_set:"},{"line_number":362,"context_line":"            self.hw_numa_cpus \u003d hw_numa_cpus"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_e6187077","line":359,"updated":"2015-06-09 13:05:39.000000000","message":"I imagine a bit of the above code could be restructured (in a future patch) to be less repetitive, but nothing wrong with this code otherwise.","commit_id":"98ea823435b5f42ed65531bf74c7fea652ddb656"}],"nova/tests/unit/objects/test_image_meta.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"57588d6aa29da4057d05ea1caca352010ac98bba","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                 \u0027hw_numa_mem.3\u0027: \"4096\"}"},{"line_number":183,"context_line":"        virtprops \u003d objects.ImageMetaProps.from_dict(props)"},{"line_number":184,"context_line":"        self.assertEqual(2, virtprops.hw_numa_nodes)"},{"line_number":185,"context_line":"        self.assertEqual([2048, 1024], virtprops.hw_numa_mem)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_set_numa_mem_no_count(self):"},{"line_number":188,"context_line":"        props \u003d {\u0027hw_numa_mem.0\u0027: \"2048\","}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_8642dc66","line":185,"updated":"2015-06-09 13:13:41.000000000","message":"This seems good since we have a numa_nodes count defined but actually i think it breaks because the missing hw_numa_mem.2","commit_id":"98ea823435b5f42ed65531bf74c7fea652ddb656"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"57588d6aa29da4057d05ea1caca352010ac98bba","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                 \u0027hw_numa_mem.3\u0027: \"4096\"}"},{"line_number":190,"context_line":"        virtprops \u003d objects.ImageMetaProps.from_dict(props)"},{"line_number":191,"context_line":"        self.assertIsNone(virtprops.get(\"hw_numa_nodes\"))"},{"line_number":192,"context_line":"        self.assertEqual([2048], virtprops.hw_numa_mem)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_set_numa_cpus(self):"},{"line_number":195,"context_line":"        props \u003d {\u0027hw_numa_nodes\u0027: 2,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_e95de315","line":192,"updated":"2015-06-09 13:13:41.000000000","message":"I do not get why this is the expected result? The user can want to specify numa_mem only from node 1 of his guest","commit_id":"98ea823435b5f42ed65531bf74c7fea652ddb656"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f778ba04cc9037e670df9bc2b440fc9ac3edafaa","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                 \u0027hw_numa_mem.3\u0027: \"4096\"}"},{"line_number":190,"context_line":"        virtprops \u003d objects.ImageMetaProps.from_dict(props)"},{"line_number":191,"context_line":"        self.assertIsNone(virtprops.get(\"hw_numa_nodes\"))"},{"line_number":192,"context_line":"        self.assertEqual([2048], virtprops.hw_numa_mem)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_set_numa_cpus(self):"},{"line_number":195,"context_line":"        props \u003d {\u0027hw_numa_nodes\u0027: 2,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_da72e310","line":192,"in_reply_to":"3afb71cf_6f9c535d","updated":"2015-06-09 14:08:36.000000000","message":"Ah yes right... my mistake.","commit_id":"98ea823435b5f42ed65531bf74c7fea652ddb656"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"5e41216d4abdc86f8b01966bd19e791590e5b406","unresolved":false,"context_lines":[{"line_number":189,"context_line":"                 \u0027hw_numa_mem.3\u0027: \"4096\"}"},{"line_number":190,"context_line":"        virtprops \u003d objects.ImageMetaProps.from_dict(props)"},{"line_number":191,"context_line":"        self.assertIsNone(virtprops.get(\"hw_numa_nodes\"))"},{"line_number":192,"context_line":"        self.assertEqual([2048], virtprops.hw_numa_mem)"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def test_set_numa_cpus(self):"},{"line_number":195,"context_line":"        props \u003d {\u0027hw_numa_nodes\u0027: 2,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afb71cf_6f9c535d","line":192,"in_reply_to":"3afb71cf_e95de315","updated":"2015-06-09 13:52:44.000000000","message":"No, that\u0027s not a supported approach - you have to specify config for all nodes, and there\u0027s no concept of skipping nodes. Look at _numa_get_constraints_manual() in hardware.py and you\u0027ll see it raises an error if you have missed some nodes.","commit_id":"98ea823435b5f42ed65531bf74c7fea652ddb656"}]}
