)]}'
{"nova/scheduler/filter_scheduler.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"fe268a739b765ad9508d425d7ad19a1fc34b68db","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        num_instances \u003d request_spec[\u0027num_instances\u0027]"},{"line_number":67,"context_line":"        instance_properties \u003d request_spec.get(\u0027instance_properties\u0027)"},{"line_number":68,"context_line":"        if instance_properties and \\"},{"line_number":69,"context_line":"                not instance_properties.get(\u0027availability_zone\u0027):"},{"line_number":70,"context_line":"            request_spec.get(\u0027instance_properties\u0027)[\u0027availability_zone\u0027] \u003d \\"},{"line_number":71,"context_line":"                az.get_instance_availability_zone(context,"},{"line_number":72,"context_line":"                                                  request_spec["}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_5249b5cf","line":69,"updated":"2015-05-06 08:39:13.000000000","message":"get_instance_availability_zone() returns None for instances that haven\u0027t been scheduled yet - so for instances with AZ not specified yet, we\u0027ll just leave it set to None, which must be ok","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"fe268a739b765ad9508d425d7ad19a1fc34b68db","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        instance_properties \u003d request_spec.get(\u0027instance_properties\u0027)"},{"line_number":68,"context_line":"        if instance_properties and \\"},{"line_number":69,"context_line":"                not instance_properties.get(\u0027availability_zone\u0027):"},{"line_number":70,"context_line":"            request_spec.get(\u0027instance_properties\u0027)[\u0027availability_zone\u0027] \u003d \\"},{"line_number":71,"context_line":"                az.get_instance_availability_zone(context,"},{"line_number":72,"context_line":"                                                  request_spec["},{"line_number":73,"context_line":"                                                      \u0027instance_properties\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_12045d7c","line":70,"updated":"2015-05-06 08:39:13.000000000","message":"nit: you could use instance_properties here\n   \n   instance_properties[\u0027availability_zone\u0027] \u003d ...","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"240fb1ff040bfea7e3eded116bba6f8be12065f6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        instance_properties \u003d request_spec.get(\u0027instance_properties\u0027)"},{"line_number":68,"context_line":"        if instance_properties and \\"},{"line_number":69,"context_line":"                not instance_properties.get(\u0027availability_zone\u0027):"},{"line_number":70,"context_line":"            request_spec.get(\u0027instance_properties\u0027)[\u0027availability_zone\u0027] \u003d \\"},{"line_number":71,"context_line":"                az.get_instance_availability_zone(context,"},{"line_number":72,"context_line":"                                                  request_spec["},{"line_number":73,"context_line":"                                                      \u0027instance_properties\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_b0f921cb","line":70,"in_reply_to":"1aca2d91_12045d7c","updated":"2015-05-06 09:20:23.000000000","message":"Done","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"e7016ca8f493a1b4dc1d78c70c0ee2d3757d7cae","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        if instance_properties and \\"},{"line_number":69,"context_line":"                not instance_properties.get(\u0027availability_zone\u0027):"},{"line_number":70,"context_line":"            request_spec.get(\u0027instance_properties\u0027)[\u0027availability_zone\u0027] \u003d \\"},{"line_number":71,"context_line":"                az.get_instance_availability_zone(context,"},{"line_number":72,"context_line":"                                                  request_spec["},{"line_number":73,"context_line":"                                                      \u0027instance_properties\u0027])"},{"line_number":74,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_159b27cb","line":71,"updated":"2015-05-06 08:40:33.000000000","message":"AZ information is nullable for an instance, that\u0027s exactly why the AZFilter is accepting any host is no AZ is provided\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/filters/availability_zone_filter.py\n\nSince the user didn\u0027t specify an availability zone, he accepts that his instance can be moved from one AZ to another AZ, since the az information is just meaning nothing.\n\nBy reading more about your bug description, I think the problem is more related to the volumes vs. instances AZ relationship, but I don\u0027t see the point where we need to provide an hard relationship for an existing instance with the host AZ information.","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"f27d50dbd7372f69966d6f76c16570ceffe2bbb7","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        if instance_properties and \\"},{"line_number":69,"context_line":"                not instance_properties.get(\u0027availability_zone\u0027):"},{"line_number":70,"context_line":"            request_spec.get(\u0027instance_properties\u0027)[\u0027availability_zone\u0027] \u003d \\"},{"line_number":71,"context_line":"                az.get_instance_availability_zone(context,"},{"line_number":72,"context_line":"                                                  request_spec["},{"line_number":73,"context_line":"                                                      \u0027instance_properties\u0027])"},{"line_number":74,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_f0567905","line":71,"in_reply_to":"1aca2d91_159b27cb","updated":"2015-05-06 09:03:50.000000000","message":"It will be a bit confusing for me if instance is migrated to different AZ during migration.\nEspecially it could become a problem if instance migrates to host, located on the other side of the planet:) Sylvain, what do you think?","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"fe268a739b765ad9508d425d7ad19a1fc34b68db","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                not instance_properties.get(\u0027availability_zone\u0027):"},{"line_number":70,"context_line":"            request_spec.get(\u0027instance_properties\u0027)[\u0027availability_zone\u0027] \u003d \\"},{"line_number":71,"context_line":"                az.get_instance_availability_zone(context,"},{"line_number":72,"context_line":"                                                  request_spec["},{"line_number":73,"context_line":"                                                      \u0027instance_properties\u0027])"},{"line_number":74,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":75,"context_line":"                                        filter_properties)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_322cf9aa","line":72,"updated":"2015-05-06 08:39:13.000000000","message":"nit: ditto, just use instance_properties variable","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"240fb1ff040bfea7e3eded116bba6f8be12065f6","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                not instance_properties.get(\u0027availability_zone\u0027):"},{"line_number":70,"context_line":"            request_spec.get(\u0027instance_properties\u0027)[\u0027availability_zone\u0027] \u003d \\"},{"line_number":71,"context_line":"                az.get_instance_availability_zone(context,"},{"line_number":72,"context_line":"                                                  request_spec["},{"line_number":73,"context_line":"                                                      \u0027instance_properties\u0027])"},{"line_number":74,"context_line":"        selected_hosts \u003d self._schedule(context, request_spec,"},{"line_number":75,"context_line":"                                        filter_properties)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_50176ded","line":72,"in_reply_to":"1aca2d91_322cf9aa","updated":"2015-05-06 09:20:23.000000000","message":"Done","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"}],"nova/tests/unit/scheduler/test_caching_scheduler.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"fe268a739b765ad9508d425d7ad19a1fc34b68db","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    @mock.patch(\u0027nova.db.instance_extra_get_by_instance_uuid\u0027,"},{"line_number":84,"context_line":"                return_value\u003d{\u0027numa_topology\u0027: None,"},{"line_number":85,"context_line":"                              \u0027pci_requests\u0027: None})"},{"line_number":86,"context_line":"    @mock.patch(\u0027nova.scheduler.filters.utils.aggregate_metadata_get_by_host\u0027)"},{"line_number":87,"context_line":"    def test_select_destination_works(self, mock_metadata_by_host,"},{"line_number":88,"context_line":"                                      mock_get_extra):"},{"line_number":89,"context_line":"        mock_metadata_by_host.return_value \u003d {\u0027availability_zone\u0027: \u0027test\u0027}"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_5293f5fa","line":86,"updated":"2015-05-06 08:39:13.000000000","message":"nit: you could probably set the return value here to make it consistent with other mocks","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"240fb1ff040bfea7e3eded116bba6f8be12065f6","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    @mock.patch(\u0027nova.db.instance_extra_get_by_instance_uuid\u0027,"},{"line_number":84,"context_line":"                return_value\u003d{\u0027numa_topology\u0027: None,"},{"line_number":85,"context_line":"                              \u0027pci_requests\u0027: None})"},{"line_number":86,"context_line":"    @mock.patch(\u0027nova.scheduler.filters.utils.aggregate_metadata_get_by_host\u0027)"},{"line_number":87,"context_line":"    def test_select_destination_works(self, mock_metadata_by_host,"},{"line_number":88,"context_line":"                                      mock_get_extra):"},{"line_number":89,"context_line":"        mock_metadata_by_host.return_value \u003d {\u0027availability_zone\u0027: \u0027test\u0027}"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_30c75114","line":86,"in_reply_to":"1aca2d91_5293f5fa","updated":"2015-05-06 09:20:23.000000000","message":"Done","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"fe268a739b765ad9508d425d7ad19a1fc34b68db","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    @mock.patch(\u0027nova.db.instance_extra_get_by_instance_uuid\u0027,"},{"line_number":141,"context_line":"                return_value\u003d{\u0027numa_topology\u0027: None,"},{"line_number":142,"context_line":"                              \u0027pci_requests\u0027: None})"},{"line_number":143,"context_line":"    @mock.patch(\u0027nova.scheduler.filters.utils.aggregate_metadata_get_by_host\u0027)"},{"line_number":144,"context_line":"    def test_performance_check_select_destination(self, mock_metadata_by_host,"},{"line_number":145,"context_line":"                                                  mock_get_extra):"},{"line_number":146,"context_line":"        hosts \u003d 2"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_72add130","line":143,"updated":"2015-05-06 08:39:13.000000000","message":"nit: ditto","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"240fb1ff040bfea7e3eded116bba6f8be12065f6","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    @mock.patch(\u0027nova.db.instance_extra_get_by_instance_uuid\u0027,"},{"line_number":141,"context_line":"                return_value\u003d{\u0027numa_topology\u0027: None,"},{"line_number":142,"context_line":"                              \u0027pci_requests\u0027: None})"},{"line_number":143,"context_line":"    @mock.patch(\u0027nova.scheduler.filters.utils.aggregate_metadata_get_by_host\u0027)"},{"line_number":144,"context_line":"    def test_performance_check_select_destination(self, mock_metadata_by_host,"},{"line_number":145,"context_line":"                                                  mock_get_extra):"},{"line_number":146,"context_line":"        hosts \u003d 2"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_10cc5534","line":143,"in_reply_to":"1aca2d91_72add130","updated":"2015-05-06 09:20:23.000000000","message":"Done","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"}],"nova/tests/unit/scheduler/test_filter_scheduler.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"fe268a739b765ad9508d425d7ad19a1fc34b68db","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    @mock.patch.object(filter_scheduler.FilterScheduler, \u0027_schedule\u0027)"},{"line_number":289,"context_line":"    def test_select_destinations_notifications(self, mock_schedule):"},{"line_number":290,"context_line":"        mock_schedule.return_value \u003d [mock.Mock()]"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        with mock.patch.object(self.driver.notifier, \u0027info\u0027) as mock_info:"},{"line_number":293,"context_line":"            request_spec \u003d {\u0027num_instances\u0027: 1}"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_f299e120","side":"PARENT","line":291,"updated":"2015-05-06 08:39:13.000000000","message":"nit: unrelated change","commit_id":"c3a85120c7dfe94efb69c5cb4db60531ac924289"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"240fb1ff040bfea7e3eded116bba6f8be12065f6","unresolved":false,"context_lines":[{"line_number":288,"context_line":"    @mock.patch.object(filter_scheduler.FilterScheduler, \u0027_schedule\u0027)"},{"line_number":289,"context_line":"    def test_select_destinations_notifications(self, mock_schedule):"},{"line_number":290,"context_line":"        mock_schedule.return_value \u003d [mock.Mock()]"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"        with mock.patch.object(self.driver.notifier, \u0027info\u0027) as mock_info:"},{"line_number":293,"context_line":"            request_spec \u003d {\u0027num_instances\u0027: 1}"},{"line_number":294,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_504bedb0","side":"PARENT","line":291,"in_reply_to":"1aca2d91_f299e120","updated":"2015-05-06 09:20:23.000000000","message":"Done","commit_id":"c3a85120c7dfe94efb69c5cb4db60531ac924289"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"fe268a739b765ad9508d425d7ad19a1fc34b68db","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        self.assertEqual(50, hosts[0].weight)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    @mock.patch(\u0027nova.availability_zones.get_instance_availability_zone\u0027)"},{"line_number":239,"context_line":"    @mock.patch(\u0027nova.objects.ServiceList.get_by_binary\u0027,"},{"line_number":240,"context_line":"                return_value\u003dfakes.SERVICES)"},{"line_number":241,"context_line":"    @mock.patch(\u0027nova.objects.InstanceList.get_by_host\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_d2e705ab","line":238,"updated":"2015-05-06 08:39:13.000000000","message":"nit: you could probably set the return value here to make it consistent with other mocks","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"240fb1ff040bfea7e3eded116bba6f8be12065f6","unresolved":false,"context_lines":[{"line_number":235,"context_line":""},{"line_number":236,"context_line":"        self.assertEqual(50, hosts[0].weight)"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"    @mock.patch(\u0027nova.availability_zones.get_instance_availability_zone\u0027)"},{"line_number":239,"context_line":"    @mock.patch(\u0027nova.objects.ServiceList.get_by_binary\u0027,"},{"line_number":240,"context_line":"                return_value\u003dfakes.SERVICES)"},{"line_number":241,"context_line":"    @mock.patch(\u0027nova.objects.InstanceList.get_by_host\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1aca2d91_704ee9c2","line":238,"in_reply_to":"1aca2d91_d2e705ab","updated":"2015-05-06 09:20:23.000000000","message":"Done","commit_id":"46bae6e0ba49caf373afb47c3a48441bb33760fc"}]}
