)]}'
{"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"882e0f2d3945d974ea4979b69b7a2dc739c2dbb7","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"                                                     scheduler_hints)"},{"line_number":2126,"context_line":"                image_meta \u003d objects.ImageMeta.from_dict(image)"},{"line_number":2127,"context_line":""},{"line_number":2128,"context_line":"                if (request_spec"},{"line_number":2129,"context_line":"                        and \u0027requested_resources\u0027 in request_spec"},{"line_number":2130,"context_line":"                        and request_spec.requested_resources is not None):"},{"line_number":2131,"context_line":"                    request_group_resource_providers_mapping \u003d {"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_53ba42e1","line":2128,"updated":"2019-02-21 22:41:00.000000000","message":"Per my comment in the change before this in the series that adds this block, putting this into a private helper method would help.","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c8a4e494962d6b4330c5271853e7cef12f0328a","unresolved":false,"context_lines":[{"line_number":2125,"context_line":"                                                     scheduler_hints)"},{"line_number":2126,"context_line":"                image_meta \u003d objects.ImageMeta.from_dict(image)"},{"line_number":2127,"context_line":""},{"line_number":2128,"context_line":"                if (request_spec"},{"line_number":2129,"context_line":"                        and \u0027requested_resources\u0027 in request_spec"},{"line_number":2130,"context_line":"                        and request_spec.requested_resources is not None):"},{"line_number":2131,"context_line":"                    request_group_resource_providers_mapping \u003d {"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_f989a725","line":2128,"in_reply_to":"9fdfeff1_53ba42e1","updated":"2019-02-25 16:59:28.000000000","message":"Done in a fup.","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"}],"nova/conductor/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ca81e9d66e2e4923c71e46e88300c50b8450f4a4","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            legacy_request_spec \u003d scheduler_utils.build_request_spec("},{"line_number":571,"context_line":"                image, instances)"},{"line_number":572,"context_line":"        else:"},{"line_number":573,"context_line":"            # TODO(mriedem): This is annoying but to populate the local"},{"line_number":574,"context_line":"            # request spec below using the filter_properties, we have to pass"},{"line_number":575,"context_line":"            # in a primitive version of the request spec. Yes it\u0027s inefficient"},{"line_number":576,"context_line":"            # and we can remove it once the populate_retry and"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_738bc61d","line":573,"updated":"2019-02-21 22:41:43.000000000","message":"For sanity reasons, we should probably make this a priority to cleanup in Train because conductor is full of this RequestSpec-\u003edict-\u003eRequestSpec stuff. I have tried cleaning up some of that before but it\u0027s tiring.","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c8a4e494962d6b4330c5271853e7cef12f0328a","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            legacy_request_spec \u003d scheduler_utils.build_request_spec("},{"line_number":571,"context_line":"                image, instances)"},{"line_number":572,"context_line":"        else:"},{"line_number":573,"context_line":"            # TODO(mriedem): This is annoying but to populate the local"},{"line_number":574,"context_line":"            # request spec below using the filter_properties, we have to pass"},{"line_number":575,"context_line":"            # in a primitive version of the request spec. Yes it\u0027s inefficient"},{"line_number":576,"context_line":"            # and we can remove it once the populate_retry and"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_997adb21","line":573,"in_reply_to":"9fdfeff1_738bc61d","updated":"2019-02-25 16:59:28.000000000","message":"I agree","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"709916e9c25aa9110e7d0f6fd1167edd307de6e8","unresolved":false,"context_lines":[{"line_number":570,"context_line":"            legacy_request_spec \u003d scheduler_utils.build_request_spec("},{"line_number":571,"context_line":"                image, instances)"},{"line_number":572,"context_line":"        else:"},{"line_number":573,"context_line":"            # TODO(mriedem): This is annoying but to populate the local"},{"line_number":574,"context_line":"            # request spec below using the filter_properties, we have to pass"},{"line_number":575,"context_line":"            # in a primitive version of the request spec. Yes it\u0027s inefficient"},{"line_number":576,"context_line":"            # and we can remove it once the populate_retry and"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_884a8624","line":573,"in_reply_to":"9fdfeff1_738bc61d","updated":"2019-02-25 16:04:13.000000000","message":"yeah, considering we\u0027ve got \"request_spec\", \"spec_obj\", \"legacy_request_spec\" and \"local_reqspec\" variables all *in the same function* :(","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"af6f295b0bfa9bfdf52e0bb53f1b204b4707f454","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                            # NOTE(gibi): redo the request group - resource"},{"line_number":676,"context_line":"                            # provider mapping as the above claim call moves"},{"line_number":677,"context_line":"                            # the allocation of the instance to another host"},{"line_number":678,"context_line":"                            self._fill_provider_mapping("},{"line_number":679,"context_line":"                                context, instance.uuid, request_spec)"},{"line_number":680,"context_line":"                    else:"},{"line_number":681,"context_line":"                        # Some deployments use different schedulers that do not"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_6953cde3","line":678,"range":{"start_line":678,"start_character":33,"end_line":678,"end_character":55},"updated":"2019-02-22 13:19:18.000000000","message":"Note to self, technically this could raise ConsumerAllocationRetrievalFailed which would be uncaught in this method. I don\u0027t think we\u0027d change the status of the server so it would be stuck in building status and no fault would be record, I\u0027m not even sure anything would be logged.\n\nTechnically claim_resources could also raise AllocationUpdateFailed and we\u0027d be in the same situation.\n\nAnyway, I guess my point is later we should think about pulling this while loop code out into another method so we can add proper error handling (and make this overall build_instances method smaller).","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c8a4e494962d6b4330c5271853e7cef12f0328a","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                            # NOTE(gibi): redo the request group - resource"},{"line_number":676,"context_line":"                            # provider mapping as the above claim call moves"},{"line_number":677,"context_line":"                            # the allocation of the instance to another host"},{"line_number":678,"context_line":"                            self._fill_provider_mapping("},{"line_number":679,"context_line":"                                context, instance.uuid, request_spec)"},{"line_number":680,"context_line":"                    else:"},{"line_number":681,"context_line":"                        # Some deployments use different schedulers that do not"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_b4d80652","line":678,"range":{"start_line":678,"start_character":33,"end_line":678,"end_character":55},"in_reply_to":"9fdfeff1_19510b37","updated":"2019-02-25 16:59:28.000000000","message":"Actually this is covered already in the functional test [1] in the next patch. We need the next patch for the test as that adds the externally visible behavior change, the rp_uuid in the port binding:profile, to verify.\n\n[1]https://review.openstack.org/#/c/569459/67/nova/tests/functional/test_servers.py@6163","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"79b208f9f29bb94bdf4f9536708e03aa87c54a8b","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                            # NOTE(gibi): redo the request group - resource"},{"line_number":676,"context_line":"                            # provider mapping as the above claim call moves"},{"line_number":677,"context_line":"                            # the allocation of the instance to another host"},{"line_number":678,"context_line":"                            self._fill_provider_mapping("},{"line_number":679,"context_line":"                                context, instance.uuid, request_spec)"},{"line_number":680,"context_line":"                    else:"},{"line_number":681,"context_line":"                        # Some deployments use different schedulers that do not"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_19510b37","line":678,"range":{"start_line":678,"start_character":33,"end_line":678,"end_character":55},"in_reply_to":"9fdfeff1_6953cde3","updated":"2019-02-25 15:08:35.000000000","message":"BTW, we have PortResourceRequestReSchedulingTestIgnoreMicroversionCheck which already tests reschedule - should we expand that now that we have this re-calculation logic happening? Maybe you need a more exotic test with an SRIOV port though like in:\n\nhttps://review.openstack.org/#/c/573317/61/nova/tests/functional/test_servers.py","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c8a4e494962d6b4330c5271853e7cef12f0328a","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                            # NOTE(gibi): redo the request group - resource"},{"line_number":676,"context_line":"                            # provider mapping as the above claim call moves"},{"line_number":677,"context_line":"                            # the allocation of the instance to another host"},{"line_number":678,"context_line":"                            self._fill_provider_mapping("},{"line_number":679,"context_line":"                                context, instance.uuid, request_spec)"},{"line_number":680,"context_line":"                    else:"},{"line_number":681,"context_line":"                        # Some deployments use different schedulers that do not"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_995c1b4c","line":678,"range":{"start_line":678,"start_character":33,"end_line":678,"end_character":55},"in_reply_to":"9fdfeff1_6953cde3","updated":"2019-02-25 16:59:28.000000000","message":"I\u0027ve just checked,  if fill_provider_mapping raises ConsumerAllocationRetrievalFailed then the server goes to ERROR state with a log:\n\n   2019-02-25 10:00:16,154 WARNING [nova.scheduler.utils] Failed to compute_task_build_instances: Failed to retrieve allocations for consumer e6e0a46a-766c-4277-90f2-087c2ec69108:","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2a688f3cacd8212e79f32052494e3351e84de7b6","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                            # NOTE(gibi): redo the request group - resource"},{"line_number":676,"context_line":"                            # provider mapping as the above claim call moves"},{"line_number":677,"context_line":"                            # the allocation of the instance to another host"},{"line_number":678,"context_line":"                            self._fill_provider_mapping("},{"line_number":679,"context_line":"                                context, instance.uuid, request_spec)"},{"line_number":680,"context_line":"                    else:"},{"line_number":681,"context_line":"                        # Some deployments use different schedulers that do not"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_b20fb12c","line":678,"range":{"start_line":678,"start_character":33,"end_line":678,"end_character":55},"in_reply_to":"9fdfeff1_995c1b4c","updated":"2019-02-25 19:28:24.000000000","message":"\u003e I\u0027ve just checked,  if fill_provider_mapping raises\n \u003e ConsumerAllocationRetrievalFailed then the server goes to ERROR\n \u003e state with a log:\n \u003e \n \u003e 2019-02-25 10:00:16,154 WARNING [nova.scheduler.utils] Failed to\n \u003e compute_task_build_instances: Failed to retrieve allocations for\n \u003e consumer e6e0a46a-766c-4277-90f2-087c2ec69108:\n\nHmm, I\u0027m not sure what\u0027s handling that though.","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"12fca56c690a34e9b95d8d4917483f662be779a9","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                            # NOTE(gibi): redo the request group - resource"},{"line_number":676,"context_line":"                            # provider mapping as the above claim call moves"},{"line_number":677,"context_line":"                            # the allocation of the instance to another host"},{"line_number":678,"context_line":"                            self._fill_provider_mapping("},{"line_number":679,"context_line":"                                context, instance.uuid, request_spec)"},{"line_number":680,"context_line":"                    else:"},{"line_number":681,"context_line":"                        # Some deployments use different schedulers that do not"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_b2ab31d4","line":678,"range":{"start_line":678,"start_character":33,"end_line":678,"end_character":55},"in_reply_to":"9fdfeff1_b20fb12c","updated":"2019-02-25 19:36:52.000000000","message":"Also, are you sure you didn\u0027t hit that in a test using the CastAsCall fixture?","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4abe77ad3202b304ccf84c7e05629d789344a878","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                            # NOTE(gibi): redo the request group - resource"},{"line_number":676,"context_line":"                            # provider mapping as the above claim call moves"},{"line_number":677,"context_line":"                            # the allocation of the instance to another host"},{"line_number":678,"context_line":"                            self._fill_provider_mapping("},{"line_number":679,"context_line":"                                context, instance.uuid, request_spec)"},{"line_number":680,"context_line":"                    else:"},{"line_number":681,"context_line":"                        # Some deployments use different schedulers that do not"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_9f43843f","line":678,"range":{"start_line":678,"start_character":33,"end_line":678,"end_character":55},"in_reply_to":"9fdfeff1_b2ab31d4","updated":"2019-02-26 16:16:43.000000000","message":"You are right. I mixed up boot with reschedule. I need to add some cleanup to the re-schedule case if _fill_provider_mapping() raises. Done in the fup.","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"882e0f2d3945d974ea4979b69b7a2dc739c2dbb7","unresolved":false,"context_lines":[{"line_number":717,"context_line":""},{"line_number":718,"context_line":"            # NOTE(gibi): at this point the request spec already got converted"},{"line_number":719,"context_line":"            # to a legacy dict and then back to an object so we lost the non"},{"line_number":720,"context_line":"            # legacy part of the spec. Re-populate the requested_resource"},{"line_number":721,"context_line":"            # field based on the original request spec object passed to this"},{"line_number":722,"context_line":"            # function."},{"line_number":723,"context_line":"            if request_spec:"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_b3c28e52","line":720,"range":{"start_line":720,"start_character":55,"end_line":720,"end_character":73},"updated":"2019-02-21 22:41:00.000000000","message":"requested_resources","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5c8a4e494962d6b4330c5271853e7cef12f0328a","unresolved":false,"context_lines":[{"line_number":717,"context_line":""},{"line_number":718,"context_line":"            # NOTE(gibi): at this point the request spec already got converted"},{"line_number":719,"context_line":"            # to a legacy dict and then back to an object so we lost the non"},{"line_number":720,"context_line":"            # legacy part of the spec. Re-populate the requested_resource"},{"line_number":721,"context_line":"            # field based on the original request spec object passed to this"},{"line_number":722,"context_line":"            # function."},{"line_number":723,"context_line":"            if request_spec:"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_9494e28c","line":720,"range":{"start_line":720,"start_character":55,"end_line":720,"end_character":73},"in_reply_to":"9fdfeff1_b3c28e52","updated":"2019-02-25 16:59:28.000000000","message":"Done in a fup.","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"}],"nova/tests/unit/conductor/test_conductor.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"709916e9c25aa9110e7d0f6fd1167edd307de6e8","unresolved":false,"context_lines":[{"line_number":1024,"context_line":"                rg1.resources,"},{"line_number":1025,"context_line":"                actual_request_spec.requested_resources[0].resources)"},{"line_number":1026,"context_line":""},{"line_number":1027,"context_line":"        do_test()"},{"line_number":1028,"context_line":""},{"line_number":1029,"context_line":"    @mock.patch.object(cinder.API, \u0027attachment_get\u0027)"},{"line_number":1030,"context_line":"    @mock.patch.object(cinder.API, \u0027attachment_create\u0027)"}],"source_content_type":"text/x-python","patch_set":26,"id":"9fdfeff1_e8dd5241","line":1027,"updated":"2019-02-25 16:04:13.000000000","message":"ugh, the surface area of this test is way too big, just like the build_instances() function itself...","commit_id":"bc57a916c4045a387c69f327eb3a9e74be5b1a33"}]}
