)]}'
{"nova/objects/resource_provider.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"3d3a7e635a8d298e646568c56fcbce1d5e0e82bd","unresolved":false,"context_lines":[{"line_number":1045,"context_line":"    # The last inventory join"},{"line_number":1046,"context_line":"    lastij \u003d None"},{"line_number":1047,"context_line":""},{"line_number":1048,"context_line":"    # TODO(jaypipes): It is necessary to sort the sharing_providers.items()"},{"line_number":1049,"context_line":"    # below. The SQL JOINs that are generated by the _get_all_with_shared()"},{"line_number":1050,"context_line":"    # function depend on a specific order. For non-shared resources, an INNER"},{"line_number":1051,"context_line":"    # JOIN is done to the preceding derived query whereas for shared resources,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_155939fd","line":1048,"range":{"start_line":1048,"start_character":6,"end_line":1048,"end_character":10},"updated":"2017-07-21 11:35:00.000000000","message":"NOTE?","commit_id":"5858fb7995bb86cb976f90ba3f2712f3fd2d78fa"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c41c7baa6a3c40a7c7f9b36f31acba2b522a582c","unresolved":false,"context_lines":[{"line_number":1045,"context_line":"    # The last inventory join"},{"line_number":1046,"context_line":"    lastij \u003d None"},{"line_number":1047,"context_line":""},{"line_number":1048,"context_line":"    # TODO(jaypipes): It is necessary to sort the sharing_providers.items()"},{"line_number":1049,"context_line":"    # below. The SQL JOINs that are generated by the _get_all_with_shared()"},{"line_number":1050,"context_line":"    # function depend on a specific order. For non-shared resources, an INNER"},{"line_number":1051,"context_line":"    # JOIN is done to the preceding derived query whereas for shared resources,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_5c1d96bb","line":1048,"range":{"start_line":1048,"start_character":6,"end_line":1048,"end_character":10},"in_reply_to":"1f1a1f67_155939fd","updated":"2017-07-21 14:23:00.000000000","message":"heh, yeah, probably :) but this was just as much of a reminder for me to revisit this and instead of sorting a list of shared provider dicts, instead just separate the sharing providers from the non-sharing providers instead of a single loop :)","commit_id":"5858fb7995bb86cb976f90ba3f2712f3fd2d78fa"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"a1344e52e75122d7766fa0095750b373bbe9419e","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"    # is what we want."},{"line_number":1058,"context_line":"    #"},{"line_number":1059,"context_line":"    # ref: https://bugs.launchpad.net/nova/+bug/1705231"},{"line_number":1060,"context_line":"    for rc_id, sps in sorted(sharing_providers.items(), key\u003dlambda x: x[1]):"},{"line_number":1061,"context_line":"        it \u003d inv_tables[rc_id]"},{"line_number":1062,"context_line":"        ut \u003d usage_tables[rc_id]"},{"line_number":1063,"context_line":"        amount \u003d resources[rc_id]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_e14efa36","line":1060,"updated":"2017-07-21 16:20:15.000000000","message":"From what I can tell, sharing_providers is a dict where:\n\n {resource_class_id: [resource_provider_id1, resource_provider_id2, ...], ...}\n\nI was confused about how this makes sure that non-shared resources go first. I was thinking it was comparing IDs and we were assuming non-shared resources have lower IDs or something.\n\nOkay, just chatted with cdent on IRC and he let me know that sharing_providers also contains non-shared resources (the variable name confused me) and for those, the value is an empty list []. So this sorts the empty lists ahead of the populated lists, non-shared ahead of shared.","commit_id":"5858fb7995bb86cb976f90ba3f2712f3fd2d78fa"}],"nova/tests/functional/db/test_resource_provider.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"aea904670e71161d9d9a7846f9c912a17b360462","unresolved":false,"context_lines":[{"line_number":2722,"context_line":""},{"line_number":2723,"context_line":"        self.assertEqual(set([ss_uuid]), a_req_rps)"},{"line_number":2724,"context_line":""},{"line_number":2725,"context_line":"    def test_local_with_shared_custom_resource(self):"},{"line_number":2726,"context_line":"        \"\"\"Create some resource providers that can satisfy the request for"},{"line_number":2727,"context_line":"        resources with local VCPU and MEMORY_MB but rely on a shared resource"},{"line_number":2728,"context_line":"        provider to satisfy a custom resource requirement and verify that the"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_b679b0c5","line":2725,"updated":"2017-07-19 20:29:46.000000000","message":"So, the only difference between this particular test and the test_local_with_shared_disk() on line 2477 is that instead of DISK_GB (a standard resource class), this one uses a CUSTOM_MAGIC custom resource class.\n\nVery odd that there would be any difference between the results of these tests.","commit_id":"4f6edc581cdf0b2c140cca4fc4194d2671f7df02"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"aea904670e71161d9d9a7846f9c912a17b360462","unresolved":false,"context_lines":[{"line_number":2733,"context_line":"        # The aggregate that will be associated to everything..."},{"line_number":2734,"context_line":"        agg_uuid \u003d uuidsentinel.agg"},{"line_number":2735,"context_line":""},{"line_number":2736,"context_line":"        # Create two compute node providers with VCPU, RAM and NO local disk"},{"line_number":2737,"context_line":"        cn1_uuid \u003d uuidsentinel.cn1"},{"line_number":2738,"context_line":"        cn1 \u003d objects.ResourceProvider("},{"line_number":2739,"context_line":"            self.context,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_964eb494","line":2736,"updated":"2017-07-19 20:29:46.000000000","message":"s/and NO local disk/and NO local CUSTOM_MAGIC resources/","commit_id":"4f6edc581cdf0b2c140cca4fc4194d2671f7df02"}]}
