)]}'
{"nova/tests/functional/regressions/test_bug_1671648.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c2f2452ce7c6f28b28c8b1ce9348b55bbc4f247a","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.failed_host \u003d None"},{"line_number":68,"context_line":"        self.attempts \u003d 0"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        def fake_instance_claim(_self, *args, **kwargs):"},{"line_number":71,"context_line":"            self.attempts +\u003d 1"},{"line_number":72,"context_line":"            if self.failed_host is None:"},{"line_number":73,"context_line":"                # Set the failed_host value to the ResourceTracker.host value."},{"line_number":74,"context_line":"                self.failed_host \u003d _self.host"},{"line_number":75,"context_line":"                raise exception.ComputeResourcesUnavailable("},{"line_number":76,"context_line":"                    reason\u003d\u0027forced failure\u0027)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self.stub_out("},{"line_number":79,"context_line":"            \u0027nova.compute.resource_tracker.ResourceTracker.instance_claim\u0027,"},{"line_number":80,"context_line":"            fake_instance_claim)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _wait_for_instance_status(self, server_id, status):"},{"line_number":83,"context_line":"        timeout \u003d 0.0"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a1ff146_092f06f7","line":80,"range":{"start_line":70,"start_character":8,"end_line":80,"end_character":32},"updated":"2017-03-15 22:46:09.000000000","message":"This messes up the successful run when the fix is applied because we don\u0027t actually set the instance.host and instance.node values, which instance_claim normally would.","commit_id":"110f5a528d2653e700f9198c4a951dabd355fe0e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f12704c44c079714cacbf3943eadce5d4deaf527","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.failed_host \u003d None"},{"line_number":68,"context_line":"        self.attempts \u003d 0"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        def fake_instance_claim(_self, *args, **kwargs):"},{"line_number":71,"context_line":"            self.attempts +\u003d 1"},{"line_number":72,"context_line":"            if self.failed_host is None:"},{"line_number":73,"context_line":"                # Set the failed_host value to the ResourceTracker.host value."},{"line_number":74,"context_line":"                self.failed_host \u003d _self.host"},{"line_number":75,"context_line":"                raise exception.ComputeResourcesUnavailable("},{"line_number":76,"context_line":"                    reason\u003d\u0027forced failure\u0027)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self.stub_out("},{"line_number":79,"context_line":"            \u0027nova.compute.resource_tracker.ResourceTracker.instance_claim\u0027,"},{"line_number":80,"context_line":"            fake_instance_claim)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _wait_for_instance_status(self, server_id, status):"},{"line_number":83,"context_line":"        timeout \u003d 0.0"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a1ff146_e9638a18","line":80,"range":{"start_line":70,"start_character":8,"end_line":80,"end_character":32},"in_reply_to":"3a1ff146_092f06f7","updated":"2017-03-15 23:01:45.000000000","message":"I wonder if you could stub the nova.compute.claims.Claim __init__ instead to raise the exception, that way you get the normal things instance_claim is supposed to do, like setting the host and node. In the fake Claim __init__, you could use tracker.host for setting self.failed_host, I think.","commit_id":"110f5a528d2653e700f9198c4a951dabd355fe0e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9c1aa63a547f88c03c9dc689176921f5810f1ebe","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self.failed_host \u003d None"},{"line_number":68,"context_line":"        self.attempts \u003d 0"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        def fake_instance_claim(_self, *args, **kwargs):"},{"line_number":71,"context_line":"            self.attempts +\u003d 1"},{"line_number":72,"context_line":"            if self.failed_host is None:"},{"line_number":73,"context_line":"                # Set the failed_host value to the ResourceTracker.host value."},{"line_number":74,"context_line":"                self.failed_host \u003d _self.host"},{"line_number":75,"context_line":"                raise exception.ComputeResourcesUnavailable("},{"line_number":76,"context_line":"                    reason\u003d\u0027forced failure\u0027)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        self.stub_out("},{"line_number":79,"context_line":"            \u0027nova.compute.resource_tracker.ResourceTracker.instance_claim\u0027,"},{"line_number":80,"context_line":"            fake_instance_claim)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def _wait_for_instance_status(self, server_id, status):"},{"line_number":83,"context_line":"        timeout \u003d 0.0"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a1ff146_0c9f14b5","line":80,"range":{"start_line":70,"start_character":8,"end_line":80,"end_character":32},"in_reply_to":"3a1ff146_e9638a18","updated":"2017-03-15 23:11:13.000000000","message":"Yeah maybe.\n\nI\u0027m finding that even with the fix applied, things are failing because of this:\n\n2017-03-15 18:58:53,856 WARNING [nova.scheduler.utils] Failed to compute_task_build_instances: type object argument after ** must be a mapping, not NoneType\n    Traceback (most recent call last):\n      File \"nova/conductor/manager.py\", line 560, in build_instances\n        context, request_spec, filter_properties)\n      File \"nova/conductor/manager.py\", line 630, in _schedule_instances\n        context, request_spec, filter_properties)\n      File \"nova/objects/request_spec.py\", line 257, in from_primitives\n        spec._from_limits(limits)\n      File \"nova/objects/request_spec.py\", line 210, in _from_limits\n        self.limits \u003d SchedulerLimits.from_dict(limits_dict)\n      File \"nova/objects/request_spec.py\", line 687, in from_dict\n        limits \u003d cls(**limits_dict)\n    TypeError: type object argument after ** must be a mapping, not NoneType\n\n\nSeems that something is wrong with the RequestSpec code and not having \u0027limits\u0027 in the filter_properties.","commit_id":"110f5a528d2653e700f9198c4a951dabd355fe0e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"accecc7313db30253c52d6d343dcd20aea7d3f8f","unresolved":false,"context_lines":[{"line_number":96,"context_line":"        \"\"\"Tests the retry operation between compute nodes when one fails."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"        This tests the scenario that we have two compute services and we"},{"line_number":99,"context_line":"        try to build a single server. The test is setup such that we force"},{"line_number":100,"context_line":"        the scheduler to pick a host which we mock out to fail the spawn"},{"line_number":101,"context_line":"        operation on the hypervisor. This should then trigger a retry to"},{"line_number":102,"context_line":"        the second host."},{"line_number":103,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a1ff146_69215a4d","line":100,"range":{"start_line":99,"start_character":69,"end_line":100,"end_character":36},"updated":"2017-03-15 22:34:49.000000000","message":"I was originally going to use force_hosts but that doesn\u0027t take an ordered list, so I can remove this part of the description.","commit_id":"110f5a528d2653e700f9198c4a951dabd355fe0e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"57d81ecce12402015a28c9890b13251631d981a2","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        # Create the server which we expect to go to ERROR state because"},{"line_number":105,"context_line":"        # of the regression bug. Once the bug is fixed, we should assert"},{"line_number":106,"context_line":"        # that the server goes to ACTIVE status and is on the second host"},{"line_number":107,"context_line":"        # after the retry operation goes from bad-host to good-host."},{"line_number":108,"context_line":"        server \u003d dict("},{"line_number":109,"context_line":"            name\u003d\u0027retry-test\u0027,"},{"line_number":110,"context_line":"            imageRef\u003dself.image_id,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a1ff146_a9c9927a","line":107,"range":{"start_line":107,"start_character":46,"end_line":107,"end_character":67},"updated":"2017-03-15 22:37:44.000000000","message":"I used to have names for the hosts, but don\u0027t anymore so I can remove this.","commit_id":"110f5a528d2653e700f9198c4a951dabd355fe0e"}]}
