)]}'
{"nova/compute/api.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"88666a24a82dd680a3083a6109603ff5a893cd20","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                                   binary\u003d\u0027nova-api\u0027)"},{"line_number":99,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"IMAGE_PROPERTY_LIST \u003d [\u0027hw_cpu_sockets\u0027, \u0027hw_cpu_cores\u0027,"},{"line_number":102,"context_line":"                       \u0027hw_cpu_threads\u0027, \u0027hw_cpu_policy\u0027,"},{"line_number":103,"context_line":"                       \u0027hw_cpu_thread_policy\u0027]"},{"line_number":104,"context_line":"RO_SECURITY_GROUPS \u003d [\u0027default\u0027]"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"AGGREGATE_ACTION_UPDATE \u003d \u0027Update\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"bfb3d3c7_d48b2865","line":103,"range":{"start_line":101,"start_character":1,"end_line":103,"end_character":46},"updated":"2019-05-27 14:27:56.000000000","message":"this is not sufficent.\n\nfirtly hw_cpu_sockets hw_cpu_cores and hw_cpu_thread\nare used for the virtual cpu toplogy not the numa toplogy of the guest. in theoy they should have not impact on scheduling.\n\nwe would need to checkt the\nhw_numa* extra specs and a few others\n\ne.g. hw_numa_nodes, hw_numa_cpus, hw_numa_mem\n\nhttps://github.com/openstack/nova/blob/594c653dc1a312d0364ad24c703e1a9b228133e1/nova/objects/image_meta.py#L307-L315\nas well as supporting the dot notation for hw_numa_cpus and hw_numa_mem.\n\nwe could perhaps to a regex match and state that all hw_numa* extra specs must match exactly.\n\nwe sould also need to chekc the hw_mem_page_size\n\nhttps://github.com/openstack/nova/blob/594c653dc1a312d0364ad24c703e1a9b228133e1/nova/objects/image_meta.py#L304\n\n\nin general however thre are several other hw_numa* element being propsoed currently so im not a fan of having a static list of element to check.\n\nim more ok if this is a set of prefixes to check\n\ne.g. hw_numa* and hw_cpu*  as we would not have to update it as often but in general this is more fragile then i would like.","commit_id":"2c73ad7ba60b09f4cc083f0291c9419a3bc9a3b4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b438b8eef46bcd01c855abebfefdecccb24f56c1","unresolved":false,"context_lines":[{"line_number":3348,"context_line":"                orig_image_props \u003d orig_image.get(\"properties\", {})"},{"line_number":3349,"context_line":"                image_props \u003d image.get(\"properties\", {})"},{"line_number":3350,"context_line":"                for image_property in IMAGE_PROPERTY_LIST:"},{"line_number":3351,"context_line":"                    property_value \u003d image_props.get(image_property)"},{"line_number":3352,"context_line":"                    orig_property_value \u003d orig_image_props.get(image_property)"},{"line_number":3353,"context_line":"                    if property_value !\u003d orig_property_value:"},{"line_number":3354,"context_line":"                        return True"},{"line_number":3355,"context_line":"            except:"},{"line_number":3356,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":20,"id":"bfb3d3c7_94c29058","line":3353,"range":{"start_line":3351,"start_character":19,"end_line":3353,"end_character":61},"updated":"2019-05-27 14:42:39.000000000","message":"ok so get will return none if only one image has the value defiend so that case is handeled too.","commit_id":"2c73ad7ba60b09f4cc083f0291c9419a3bc9a3b4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"b438b8eef46bcd01c855abebfefdecccb24f56c1","unresolved":false,"context_lines":[{"line_number":3415,"context_line":"        # through the scheduler again, but we want the instance to be"},{"line_number":3416,"context_line":"        # rebuilt on the same host it\u0027s already on unless the image properties"},{"line_number":3417,"context_line":"        # didn\u0027t change, then we skip the scheduler."},{"line_number":3418,"context_line":"        if orig_image_ref !\u003d image_href:"},{"line_number":3419,"context_line":"            image_props_similar \u003d image_props_changed(self, context,"},{"line_number":3420,"context_line":"                                                    orig_image_ref, image_href)"},{"line_number":3421,"context_line":"            if not image_props_similar:"}],"source_content_type":"text/x-python","patch_set":20,"id":"bfb3d3c7_742fdc3e","line":3418,"range":{"start_line":3418,"start_character":7,"end_line":3418,"end_character":40},"updated":"2019-05-27 14:42:39.000000000","message":"so this is a latent bug...\n\nthe image metadata can change after the instance has been booted so we should always check the metadata even if the image id is the same.","commit_id":"2c73ad7ba60b09f4cc083f0291c9419a3bc9a3b4"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"437200793121d40758f93fc9e409b7ee897d5534","unresolved":false,"context_lines":[{"line_number":3441,"context_line":"                request_spec.force_hosts \u003d [instance.host]"},{"line_number":3442,"context_line":"                request_spec.force_nodes \u003d [instance.node]"},{"line_number":3443,"context_line":"                host \u003d None"},{"line_number":3444,"context_line":"            else:"},{"line_number":3445,"context_line":"                LOG.debug(\"Image properties didn\u0027t change, not rescheduling.\")"},{"line_number":3446,"context_line":""},{"line_number":3447,"context_line":"        self.compute_task_api.rebuild_instance(context, instance\u003dinstance,"},{"line_number":3448,"context_line":"                new_pass\u003dadmin_password, injected_files\u003dfiles_to_inject,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bfb3d3c7_9705b213","line":3445,"range":{"start_line":3444,"start_character":12,"end_line":3445,"end_character":78},"updated":"2019-05-27 15:19:50.000000000","message":"as noted on downstream irc  the fact that the isolated_hosts_filter\n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/filters/isolated_hosts_filter.py\n\nand the AggregateImagePropertiesIsolation filter \n\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/filters/aggregate_image_properties_isolation.py\n\ncan both also invalidate a host during a rebuild based the image or its metadata i dont think we can skip even if the metadata is identical.\n\nalso i forgot to mention in my previous comment that you woul also need to ensure the traits in the new iamge are identical or that could also invalidate our placemnet allcoations.","commit_id":"2c73ad7ba60b09f4cc083f0291c9419a3bc9a3b4"}]}
