)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"85e47cd991e42cd95bc23263b5902eb5eb6a8a9a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VMware: add support for cores per socket"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The VM config spec enables the called to define the number of cores"},{"line_number":10,"context_line":"per socket."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This is the number of cores among which to distribute CPUs in this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a50d1a3_b2a0efa6","line":9,"updated":"2015-07-24 22:05:05.000000000","message":"s/called/caller/  I think?","commit_id":"e65f70f02af49cc7c56343a96c1f61fe83a8838d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"93c824221cbe740ebb5c9a64184083407bec8a89","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VMware: add support for cores per socket"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The VM config spec enables the called to define the number of cores"},{"line_number":10,"context_line":"per socket."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This is the number of cores among which to distribute CPUs in this"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3a50d1a3_dbf34c9e","line":9,"in_reply_to":"3a50d1a3_b2a0efa6","updated":"2015-07-25 15:36:46.000000000","message":"Done","commit_id":"e65f70f02af49cc7c56343a96c1f61fe83a8838d"}],"nova/tests/unit/virt/vmwareapi/test_vmops.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a8196ba19791baece72584d604980e11c9fd2f69","unresolved":false,"context_lines":[{"line_number":2045,"context_line":"        self.assertEqual(expected, metadata)"},{"line_number":2046,"context_line":""},{"line_number":2047,"context_line":"    def test_get_cores_per_socket(self):"},{"line_number":2048,"context_line":"        extra_specs \u003d {\u0027hw:cpu_sockets\u0027: 7}"},{"line_number":2049,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027,"},{"line_number":2050,"context_line":"                                memory_mb\u003d6,"},{"line_number":2051,"context_line":"                                vcpus\u003d28,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_2fb855c7","line":2048,"updated":"2015-06-25 08:58:29.000000000","message":"Hum don\u0027t we have specific requirement about odd number ?","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5228c853a98beaeb645c5c5911487f5976d6159f","unresolved":false,"context_lines":[{"line_number":2045,"context_line":"        self.assertEqual(expected, metadata)"},{"line_number":2046,"context_line":""},{"line_number":2047,"context_line":"    def test_get_cores_per_socket(self):"},{"line_number":2048,"context_line":"        extra_specs \u003d {\u0027hw:cpu_sockets\u0027: 7}"},{"line_number":2049,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027,"},{"line_number":2050,"context_line":"                                memory_mb\u003d6,"},{"line_number":2051,"context_line":"                                vcpus\u003d28,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_7a1b7d73","line":2048,"in_reply_to":"fa32b979_2fb855c7","updated":"2015-06-25 09:04:47.000000000","message":"look below at the number of vcpus - it is 28.\n28/7 \u003d 4","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"71b27fc1c5ae4474016294a0c9b82e3f06f70304","unresolved":false,"context_lines":[{"line_number":2045,"context_line":"        self.assertEqual(expected, metadata)"},{"line_number":2046,"context_line":""},{"line_number":2047,"context_line":"    def test_get_cores_per_socket(self):"},{"line_number":2048,"context_line":"        extra_specs \u003d {\u0027hw:cpu_sockets\u0027: 7}"},{"line_number":2049,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027,"},{"line_number":2050,"context_line":"                                memory_mb\u003d6,"},{"line_number":2051,"context_line":"                                vcpus\u003d28,"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_60bf4ad0","line":2048,"in_reply_to":"fa32b979_7a1b7d73","updated":"2015-06-25 09:48:20.000000000","message":"I was thinking about the number of cores per socket","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"}],"nova/virt/vmwareapi/vm_util.py":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a8196ba19791baece72584d604980e11c9fd2f69","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    config_spec.tools \u003d tools_info"},{"line_number":225,"context_line":"    config_spec.numCPUs \u003d int(instance.vcpus)"},{"line_number":226,"context_line":"    if extra_specs.cores_per_socket:"},{"line_number":227,"context_line":"        config_spec.numCoresPerSocket \u003d int(extra_specs.cores_per_socket)"},{"line_number":228,"context_line":"    config_spec.memoryMB \u003d int(instance.memory_mb)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    # Configure cpu information"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_2f2e1543","line":227,"updated":"2015-06-25 08:58:29.000000000","message":"We probably have to verify is the value is correct here.\n\nWhat about no-numeric, odd number, negative number or 0 OR more than the number of vcpus allowed by the flavor. Then raise an exception.","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"3a3f238d90e2f6c6052b4a62159bd1562cb6ebec","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    config_spec.tools \u003d tools_info"},{"line_number":225,"context_line":"    config_spec.numCPUs \u003d int(instance.vcpus)"},{"line_number":226,"context_line":"    if extra_specs.cores_per_socket:"},{"line_number":227,"context_line":"        config_spec.numCoresPerSocket \u003d int(extra_specs.cores_per_socket)"},{"line_number":228,"context_line":"    config_spec.memoryMB \u003d int(instance.memory_mb)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    # Configure cpu information"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_bbb10749","line":227,"in_reply_to":"fa32b979_000d1ee7","updated":"2015-06-25 09:59:07.000000000","message":"This value does not come from the user. the cores_per_socket attribute is initialized from the result of calling hardware.get_best_cpu_topology(). This hardware.py file is where user data is dealt with and validated.","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bc43d24be93531a8aeb68a03e301f90c35560635","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    config_spec.tools \u003d tools_info"},{"line_number":225,"context_line":"    config_spec.numCPUs \u003d int(instance.vcpus)"},{"line_number":226,"context_line":"    if extra_specs.cores_per_socket:"},{"line_number":227,"context_line":"        config_spec.numCoresPerSocket \u003d int(extra_specs.cores_per_socket)"},{"line_number":228,"context_line":"    config_spec.memoryMB \u003d int(instance.memory_mb)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    # Configure cpu information"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_ef9cad0f","line":227,"in_reply_to":"fa32b979_2f2e1543","updated":"2015-06-25 09:03:06.000000000","message":"Sahid that is validated in https://review.openstack.org/#/c/187942/3/nova/virt/vmwareapi/vmops.py,cm line 321","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"71b27fc1c5ae4474016294a0c9b82e3f06f70304","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    config_spec.tools \u003d tools_info"},{"line_number":225,"context_line":"    config_spec.numCPUs \u003d int(instance.vcpus)"},{"line_number":226,"context_line":"    if extra_specs.cores_per_socket:"},{"line_number":227,"context_line":"        config_spec.numCoresPerSocket \u003d int(extra_specs.cores_per_socket)"},{"line_number":228,"context_line":"    config_spec.memoryMB \u003d int(instance.memory_mb)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    # Configure cpu information"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_000d1ee7","line":227,"in_reply_to":"fa32b979_ef9cad0f","updated":"2015-06-25 09:48:20.000000000","message":"Yes right, i\u0027m still worry about the cast here. if user set a no-numeric value an exception will be raised.","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ecb8f22144aa0608bd096ed583497444127e68d2","unresolved":false,"context_lines":[{"line_number":224,"context_line":"    config_spec.tools \u003d tools_info"},{"line_number":225,"context_line":"    config_spec.numCPUs \u003d int(instance.vcpus)"},{"line_number":226,"context_line":"    if extra_specs.cores_per_socket:"},{"line_number":227,"context_line":"        config_spec.numCoresPerSocket \u003d int(extra_specs.cores_per_socket)"},{"line_number":228,"context_line":"    config_spec.memoryMB \u003d int(instance.memory_mb)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    # Configure cpu information"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_c51c6c68","line":227,"updated":"2015-07-28 13:08:13.000000000","message":"not sure we need the int here, but historically required I guess.","commit_id":"fae5fa66ec709344c177cf14ff179399e8e8477f"}],"nova/virt/vmwareapi/vmops.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"50ca846d9c621bc2aaf05af65dd30610b74d9f9c","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        p_key \u003d \u0027vmware_cores_per_socket\u0027"},{"line_number":334,"context_line":"        f_key \u003d \u0027vmware:cores_per_socket\u0027"},{"line_number":335,"context_line":"        cores_per_socket \u003d properties.get(p_key, flavor.extra_specs.get(f_key))"},{"line_number":336,"context_line":"        extra_specs.cores_per_socket \u003d cores_per_socket"},{"line_number":337,"context_line":"        return extra_specs"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _fetch_image_as_file(self, context, vi, image_ds_loc):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_f09bc0c7","line":336,"updated":"2015-06-03 11:08:16.000000000","message":"We already have a standardized set of image properties for determining topology from image meta and flavour specs\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/hardware.py#n253\n\nYou should really just call get_best_cpu_topology()\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/hardware.py#n579\n\nAssuming you\u0027re not supporting configuration of hyperthreads for guests, you can do\n\n\n  topology \u003d hardware.get_best_cpu_topology(flavor, image_meta, allow_threads\u003dFalse)\n  extra_specs.cores_per_socket \u003d topology.cores","commit_id":"f9480376732936186d804b277a490dda67020df2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e6c1e086131454cb4dd292734a63032d3fc212b6","unresolved":false,"context_lines":[{"line_number":333,"context_line":"        p_key \u003d \u0027vmware_cores_per_socket\u0027"},{"line_number":334,"context_line":"        f_key \u003d \u0027vmware:cores_per_socket\u0027"},{"line_number":335,"context_line":"        cores_per_socket \u003d properties.get(p_key, flavor.extra_specs.get(f_key))"},{"line_number":336,"context_line":"        extra_specs.cores_per_socket \u003d cores_per_socket"},{"line_number":337,"context_line":"        return extra_specs"},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"    def _fetch_image_as_file(self, context, vi, image_ds_loc):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_1a00b600","line":336,"in_reply_to":"5afe65bd_f09bc0c7","updated":"2015-06-03 12:16:58.000000000","message":"Done","commit_id":"f9480376732936186d804b277a490dda67020df2"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a8196ba19791baece72584d604980e11c9fd2f69","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def _get_extra_specs(self, flavor, image_meta\u003dNone):"},{"line_number":304,"context_line":"        if image_meta is None:"},{"line_number":305,"context_line":"            image_meta \u003d {}"},{"line_number":306,"context_line":"        extra_specs \u003d vm_util.ExtraSpecs()"},{"line_number":307,"context_line":"        for (key, type) in ((\u0027cpu_limit\u0027, int),"},{"line_number":308,"context_line":"                            (\u0027cpu_reservation\u0027, int),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_8fe08127","line":305,"updated":"2015-06-25 08:58:29.000000000","message":"Hardware should accepts an instance of ImageMeta or None at the end of the migration. Perhaps you can add a TODO remember cleaning this code.","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bc43d24be93531a8aeb68a03e301f90c35560635","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def _get_extra_specs(self, flavor, image_meta\u003dNone):"},{"line_number":304,"context_line":"        if image_meta is None:"},{"line_number":305,"context_line":"            image_meta \u003d {}"},{"line_number":306,"context_line":"        extra_specs \u003d vm_util.ExtraSpecs()"},{"line_number":307,"context_line":"        for (key, type) in ((\u0027cpu_limit\u0027, int),"},{"line_number":308,"context_line":"                            (\u0027cpu_reservation\u0027, int),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_ef410d64","line":305,"in_reply_to":"fa32b979_8fe08127","updated":"2015-06-25 09:03:06.000000000","message":"i do not understand. with the migration we pass this variable","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"71b27fc1c5ae4474016294a0c9b82e3f06f70304","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"    def _get_extra_specs(self, flavor, image_meta\u003dNone):"},{"line_number":304,"context_line":"        if image_meta is None:"},{"line_number":305,"context_line":"            image_meta \u003d {}"},{"line_number":306,"context_line":"        extra_specs \u003d vm_util.ExtraSpecs()"},{"line_number":307,"context_line":"        for (key, type) in ((\u0027cpu_limit\u0027, int),"},{"line_number":308,"context_line":"                            (\u0027cpu_reservation\u0027, int),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_c0df3667","line":305,"in_reply_to":"fa32b979_ef410d64","updated":"2015-06-25 09:48:20.000000000","message":"It was a todo to clean the code. At the end we probably want to have _get_extra_specs with image_meta mandatory (+ code updated) and hardware.* will be able to handle None or an object ImageMeta.","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a8196ba19791baece72584d604980e11c9fd2f69","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"                                       total_steps\u003dRESIZE_TOTAL_STEPS)"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"        # 2. Reconfigure the VM properties"},{"line_number":1220,"context_line":"        image_meta \u003d utils.get_image_from_system_metadata("},{"line_number":1221,"context_line":"            instance.system_metadata)"},{"line_number":1222,"context_line":"        self._resize_vm(context, instance, vm_ref, flavor, image_meta)"},{"line_number":1223,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_ec0fdb36","line":1220,"updated":"2015-06-25 08:58:29.000000000","message":"I would recommend to use objects.ImageMeta here:\n\n  objects.ImageMeta.from_instance(instance)","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bc43d24be93531a8aeb68a03e301f90c35560635","unresolved":false,"context_lines":[{"line_number":1217,"context_line":"                                       total_steps\u003dRESIZE_TOTAL_STEPS)"},{"line_number":1218,"context_line":""},{"line_number":1219,"context_line":"        # 2. Reconfigure the VM properties"},{"line_number":1220,"context_line":"        image_meta \u003d utils.get_image_from_system_metadata("},{"line_number":1221,"context_line":"            instance.system_metadata)"},{"line_number":1222,"context_line":"        self._resize_vm(context, instance, vm_ref, flavor, image_meta)"},{"line_number":1223,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_2f337515","line":1220,"in_reply_to":"fa32b979_ec0fdb36","updated":"2015-06-25 09:03:06.000000000","message":"Done","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"a8196ba19791baece72584d604980e11c9fd2f69","unresolved":false,"context_lines":[{"line_number":1263,"context_line":"        vm_util.power_off_instance(self._session, instance, vm_ref)"},{"line_number":1264,"context_line":"        client_factory \u003d self._session.vim.client.factory"},{"line_number":1265,"context_line":"        # Reconfigure the VM properties"},{"line_number":1266,"context_line":"        image_meta \u003d utils.get_image_from_system_metadata("},{"line_number":1267,"context_line":"            instance.system_metadata)"},{"line_number":1268,"context_line":"        extra_specs \u003d self._get_extra_specs(instance.flavor, image_meta)"},{"line_number":1269,"context_line":"        metadata \u003d self._get_instance_metadata(context, instance)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_0c131f66","line":1266,"updated":"2015-06-25 08:58:29.000000000","message":"ditto","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bc43d24be93531a8aeb68a03e301f90c35560635","unresolved":false,"context_lines":[{"line_number":1263,"context_line":"        vm_util.power_off_instance(self._session, instance, vm_ref)"},{"line_number":1264,"context_line":"        client_factory \u003d self._session.vim.client.factory"},{"line_number":1265,"context_line":"        # Reconfigure the VM properties"},{"line_number":1266,"context_line":"        image_meta \u003d utils.get_image_from_system_metadata("},{"line_number":1267,"context_line":"            instance.system_metadata)"},{"line_number":1268,"context_line":"        extra_specs \u003d self._get_extra_specs(instance.flavor, image_meta)"},{"line_number":1269,"context_line":"        metadata \u003d self._get_instance_metadata(context, instance)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa32b979_0f3c71df","line":1266,"in_reply_to":"fa32b979_0c131f66","updated":"2015-06-25 09:03:06.000000000","message":"Done","commit_id":"07485d25cc122890bdc582ae232b67bbe27f68d7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d171395c6510071763892ca78123a5e15005634c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"from nova import context as nova_context"},{"line_number":44,"context_line":"from nova import exception"},{"line_number":45,"context_line":"from nova.i18n import _, _LE, _LI, _LW"},{"line_number":46,"context_line":"from nova import objects "},{"line_number":47,"context_line":"from nova import utils"},{"line_number":48,"context_line":"from nova import version"},{"line_number":49,"context_line":"from nova.virt import configdrive"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_5b31dba0","line":46,"updated":"2015-06-25 10:02:02.000000000","message":"no comment from the peanut galley","commit_id":"661c64d1f0152bc9f63d6c61a79a323f17af8fe0"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"c21815b8867831a0a6d02e9b6abf0031af984870","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        extra_specs.cores_per_socket \u003d topology.cores"},{"line_number":325,"context_line":"        topology \u003d hardware.get_best_cpu_topology(flavor, image_meta,"},{"line_number":326,"context_line":"                                                      allow_threads\u003dFalse)"},{"line_number":327,"context_line":"        extra_specs.cores_per_socket \u003d topology.cores"},{"line_number":328,"context_line":"        return extra_specs"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def _fetch_image_as_file(self, context, vi, image_ds_loc):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_bbc6e797","line":327,"updated":"2015-06-25 09:59:47.000000000","message":"It looks like you have a merge conflict error here - the lines are duplicated.","commit_id":"661c64d1f0152bc9f63d6c61a79a323f17af8fe0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"d171395c6510071763892ca78123a5e15005634c","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        extra_specs.cores_per_socket \u003d topology.cores"},{"line_number":325,"context_line":"        topology \u003d hardware.get_best_cpu_topology(flavor, image_meta,"},{"line_number":326,"context_line":"                                                      allow_threads\u003dFalse)"},{"line_number":327,"context_line":"        extra_specs.cores_per_socket \u003d topology.cores"},{"line_number":328,"context_line":"        return extra_specs"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    def _fetch_image_as_file(self, context, vi, image_ds_loc):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa32b979_db1deb0f","line":327,"in_reply_to":"fa32b979_bbc6e797","updated":"2015-06-25 10:02:02.000000000","message":"Done","commit_id":"661c64d1f0152bc9f63d6c61a79a323f17af8fe0"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"85e47cd991e42cd95bc23263b5902eb5eb6a8a9a","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _get_extra_specs(self, flavor, image_meta\u003dNone):"},{"line_number":305,"context_line":"        if image_meta is None:"},{"line_number":306,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":307,"context_line":"        extra_specs \u003d vm_util.ExtraSpecs()"},{"line_number":308,"context_line":"        for (key, type) in ((\u0027cpu_limit\u0027, int),"},{"line_number":309,"context_line":"                            (\u0027cpu_reservation\u0027, int),"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_92eb73b0","line":306,"updated":"2015-07-24 22:05:05.000000000","message":"I don\u0027t believe the from_dict({}) is necessary? YOu could just do:\n\n image_meta \u003d image_meta or objects.ImageMeta()","commit_id":"e65f70f02af49cc7c56343a96c1f61fe83a8838d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"93c824221cbe740ebb5c9a64184083407bec8a89","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def _get_extra_specs(self, flavor, image_meta\u003dNone):"},{"line_number":305,"context_line":"        if image_meta is None:"},{"line_number":306,"context_line":"            image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":307,"context_line":"        extra_specs \u003d vm_util.ExtraSpecs()"},{"line_number":308,"context_line":"        for (key, type) in ((\u0027cpu_limit\u0027, int),"},{"line_number":309,"context_line":"                            (\u0027cpu_reservation\u0027, int),"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a50d1a3_7bf2389c","line":306,"in_reply_to":"3a50d1a3_92eb73b0","updated":"2015-07-25 15:36:46.000000000","message":"We need to do this - if not we get:\nCaptured traceback:\n~~~~~~~~~~~~~~~~~~~\n    Traceback (most recent call last):\n      File \"nova/tests/unit/virt/vmwareapi/test_vmops.py\", line 1952, in test_get_storage_policy_none\n        extra_specs \u003d self._vmops._get_extra_specs(flavor, None)\n      File \"nova/virt/vmwareapi/vmops.py\", line 322, in _get_extra_specs\n        allow_threads\u003dFalse)\n      File \"nova/virt/hardware.py\", line 621, in get_best_cpu_topology\n        allow_threads, numa_topology)[0]\n      File \"nova/virt/hardware.py\", line 565, in _get_desirable_cpu_topologies\n        preferred, maximum \u003d _get_cpu_topology_constraints(flavor, image_meta)\n      File \"nova/virt/hardware.py\", line 310, in _get_cpu_topology_constraints\n        props \u003d image_meta.properties\n      File \"/home/gkotton/nova/.tox/py27/local/lib/python2.7/site-packages/oslo_versionedobjects/base.py\", line 65, in getter\n        self.obj_load_attr(name)\n      File \"nova/objects/base.py\", line 442, in obj_load_attr\n        _(\"Cannot load \u0027%s\u0027 in the base class\") % attrname)\n    NotImplementedError: Cannot load \u0027properties\u0027 in the base class","commit_id":"e65f70f02af49cc7c56343a96c1f61fe83a8838d"}]}
