)]}'
{"nova/scheduler/client/report.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"176c46c33f0688b5790b1da834fed58fa9232b86","unresolved":false,"context_lines":[{"line_number":217,"context_line":"            # the same host with no shared providers, like storage, involved,"},{"line_number":218,"context_line":"            # so we need to sum/merge the allocations for the host using both"},{"line_number":219,"context_line":"            # the current and new allocations."},{"line_number":220,"context_line":"            # FIXME(mriedem): would have to handle resize to same host with"},{"line_number":221,"context_line":"            # shared storage."},{"line_number":222,"context_line":"            for current_alloc in current_allocs:"},{"line_number":223,"context_line":"                # Find the matching resource provider allocations by UUID."},{"line_number":224,"context_line":"                if (current_alloc[\u0027resource_provider\u0027][\u0027uuid\u0027] \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_6bc6269d","line":221,"range":{"start_line":220,"start_character":14,"end_line":221,"end_character":29},"updated":"2017-08-02 16:53:18.000000000","message":"I think we could handle this by checking to see if there are no VCPU resource allocations in new_rp_uuids, which would mean we removed any compute resource providers above and kept the shared provider (likely DISK_GB in this case).","commit_id":"0d6830868a1014f9e07023188ebcf5d061ea5d9b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"eaa858a1c7ea1801ab22287b79f3376b47c4caf9","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    # Now sum the current allocation resource amounts with"},{"line_number":227,"context_line":"                    # the new allocation resource amounts."},{"line_number":228,"context_line":"                    for res_name, res_value in alloc[\u0027resources\u0027].items():"},{"line_number":229,"context_line":"                        current_alloc[\u0027resources\u0027][res_name] +\u003d res_value"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    LOG.debug(\"New allocation request containing both source and \""},{"line_number":232,"context_line":"              \"destination hosts in move operation: %s\", new_alloc_req)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_cb8d1232","line":229,"updated":"2017-08-02 17:02:20.000000000","message":"these loops make my brain hurt, since I think we\u0027ve only got one actual allocation object involved","commit_id":"0d6830868a1014f9e07023188ebcf5d061ea5d9b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5f1ff5084e89ed1dedc6e6a12951e72331470f36","unresolved":false,"context_lines":[{"line_number":226,"context_line":"                    # Now sum the current allocation resource amounts with"},{"line_number":227,"context_line":"                    # the new allocation resource amounts."},{"line_number":228,"context_line":"                    for res_name, res_value in alloc[\u0027resources\u0027].items():"},{"line_number":229,"context_line":"                        current_alloc[\u0027resources\u0027][res_name] +\u003d res_value"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"    LOG.debug(\"New allocation request containing both source and \""},{"line_number":232,"context_line":"              \"destination hosts in move operation: %s\", new_alloc_req)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_cb1d1274","line":229,"in_reply_to":"df3967d1_cb8d1232","updated":"2017-08-02 17:12:16.000000000","message":"Yeah I wanted to get it working first before optimizing for pretty. I wasn\u0027t totally sure if we could have more than one allocation provider if there is no shared storage involved so I just played it dumb and safe.","commit_id":"0d6830868a1014f9e07023188ebcf5d061ea5d9b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"26507da4c4dd3917e92aa14c0c80d963c80ea487","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                    # Now sum the current allocation resource amounts with"},{"line_number":230,"context_line":"                    # the new allocation resource amounts."},{"line_number":231,"context_line":"                    for res_name, res_value in alloc[\u0027resources\u0027].items():"},{"line_number":232,"context_line":"                        current_alloc[\u0027resources\u0027][res_name] +\u003d res_value"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    LOG.debug(\"New allocation request containing both source and \""},{"line_number":235,"context_line":"              \"destination hosts in move operation: %s\", new_alloc_req)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_fb3d3f8f","line":232,"updated":"2017-08-02 20:48:05.000000000","message":"It would be weird for this to be the case, but isn\u0027t there a chance that there could be a resource class in the destination allocations that is not in the current allocations so we need to watch out for a KeyError on current_alloc[\u0027resource\u0027][res_name] and when we get it set the new entry in the dict to res_value?","commit_id":"0381712d935d370ad3776df69dc04512f0aae14f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c78ac94220305bcb6968ab785f4dd04c40cdb5e1","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                    # Now sum the current allocation resource amounts with"},{"line_number":230,"context_line":"                    # the new allocation resource amounts."},{"line_number":231,"context_line":"                    for res_name, res_value in alloc[\u0027resources\u0027].items():"},{"line_number":232,"context_line":"                        current_alloc[\u0027resources\u0027][res_name] +\u003d res_value"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    LOG.debug(\"New allocation request containing both source and \""},{"line_number":235,"context_line":"              \"destination hosts in move operation: %s\", new_alloc_req)"}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_f6343695","line":232,"in_reply_to":"df3967d1_fb3d3f8f","updated":"2017-08-02 21:20:04.000000000","message":"Sure, I can check for that. Extra specs goodies and what not.","commit_id":"0381712d935d370ad3776df69dc04512f0aae14f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"411f353eb3c77a57ddcf864963017d534212ee64","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                    # the new allocation resource amounts."},{"line_number":235,"context_line":"                    for res_name, res_value in alloc[\u0027resources\u0027].items():"},{"line_number":236,"context_line":"                        if res_name in current_alloc[\u0027resources\u0027]:"},{"line_number":237,"context_line":"                            current_alloc[\u0027resources\u0027][res_name] +\u003d res_value"},{"line_number":238,"context_line":"                        else:"},{"line_number":239,"context_line":"                            # This is a new resource class in the new"},{"line_number":240,"context_line":"                            # allocation for which we need to account."}],"source_content_type":"text/x-python","patch_set":6,"id":"df3967d1_fd02bc6e","line":237,"updated":"2017-08-03 13:36:17.000000000","message":"We need to account for flavor overrides here right?","commit_id":"e53bfb208a711ca6e5e1d96905cd19ef9b06862c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a281d939a9cc23b94d08cf3151bf401f83f94719","unresolved":false,"context_lines":[{"line_number":234,"context_line":"                    # the new allocation resource amounts."},{"line_number":235,"context_line":"                    for res_name, res_value in alloc[\u0027resources\u0027].items():"},{"line_number":236,"context_line":"                        if res_name in current_alloc[\u0027resources\u0027]:"},{"line_number":237,"context_line":"                            current_alloc[\u0027resources\u0027][res_name] +\u003d res_value"},{"line_number":238,"context_line":"                        else:"},{"line_number":239,"context_line":"                            # This is a new resource class in the new"},{"line_number":240,"context_line":"                            # allocation for which we need to account."}],"source_content_type":"text/x-python","patch_set":6,"id":"df3967d1_432446af","line":237,"in_reply_to":"df3967d1_fd02bc6e","updated":"2017-08-03 14:39:51.000000000","message":"(9:17:34 AM) mriedem: dansmith: so no resource override in my change?\n(9:17:45 AM) mriedem: b/c if so, you\u0027ll have to deal with it b/c resource override is lost on me\n(9:17:47 AM) dansmith: mriedem: right yours should be good because the scheduler has already done that part\n(9:17:55 AM) mriedem: ok","commit_id":"e53bfb208a711ca6e5e1d96905cd19ef9b06862c"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"af5b6b95ae8b24dae8b9f941f0974e45e7a49117","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"        self.assertEqual(flavor[\u0027disk\u0027], allocation[\u0027DISK_GB\u0027])"},{"line_number":1198,"context_line":""},{"line_number":1199,"context_line":"    def assertFlavorsMatchAllocation(self, old_flavor, new_flavor, allocation):"},{"line_number":1200,"context_line":"        self.assertEqual(allocation[\u0027VCPU\u0027],"},{"line_number":1201,"context_line":"                         old_flavor[\u0027vcpus\u0027] + new_flavor[\u0027vcpus\u0027])"},{"line_number":1202,"context_line":"        self.assertEqual(allocation[\u0027MEMORY_MB\u0027],"},{"line_number":1203,"context_line":"                         old_flavor[\u0027ram\u0027] + new_flavor[\u0027ram\u0027])"},{"line_number":1204,"context_line":"        self.assertEqual(allocation[\u0027DISK_GB\u0027],"},{"line_number":1205,"context_line":"                         old_flavor[\u0027disk\u0027] + new_flavor[\u0027disk\u0027])"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"    def _boot_and_check_allocations(self, flavor, source_hostname):"},{"line_number":1208,"context_line":"        server_req \u003d self._build_minimal_create_server_request("}],"source_content_type":"text/x-python","patch_set":2,"id":"df3967d1_447eb0af","line":1205,"range":{"start_line":1200,"start_character":8,"end_line":1205,"end_character":65},"updated":"2017-08-02 18:49:14.000000000","message":"reverse the args for (expected, actual)","commit_id":"72d85867d7f8775e43061f1cd036c91340e650b2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5043e085c8167e0132a0666e06b7e5777b6f6dd5","unresolved":false,"context_lines":[{"line_number":1297,"context_line":"            # Single-host resize, so make sure the allocation against"},{"line_number":1298,"context_line":"            # the single node is the sum of both flavors"},{"line_number":1299,"context_line":"            usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1300,"context_line":"            self.assertFlavorsMatcheAllocation(old_flavor, new_flavor, usages)"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"        # Check that the server allocates resource from both source and dest"},{"line_number":1303,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"df3967d1_848a58bc","line":1300,"range":{"start_line":1300,"start_character":30,"end_line":1300,"end_character":36},"updated":"2017-08-02 18:47:31.000000000","message":"Match?","commit_id":"72d85867d7f8775e43061f1cd036c91340e650b2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1a39fbc944c0d03580a6426e8b23f38a7017a76a","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"            self.assertFlavorMatchesAllocation(old_flavor, source_usages)"},{"line_number":1294,"context_line":"            dest_usages \u003d self._get_provider_usages(dest_rp_uuid)"},{"line_number":1295,"context_line":"            self.assertFlavorMatchesAllocation(new_flavor, dest_usages)"},{"line_number":1296,"context_line":"        else:"},{"line_number":1297,"context_line":"            # Single-host resize, so make sure the allocation against"},{"line_number":1298,"context_line":"            # the single node is the sum of both flavors"},{"line_number":1299,"context_line":"            usages \u003d self._get_provider_usages(source_rp_uuid)"},{"line_number":1300,"context_line":"            self.assertFlavorsMatchAllocation(old_flavor, new_flavor, usages)"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"        # Check that the server allocates resource from both source and dest"},{"line_number":1303,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_fbe3ffd7","line":1300,"range":{"start_line":1296,"start_character":8,"end_line":1300,"end_character":77},"updated":"2017-08-02 20:55:34.000000000","message":"This is dead code, the same host tests call _resize_to_same_host_and_check_allocations, not this method.","commit_id":"0381712d935d370ad3776df69dc04512f0aae14f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b559353215602bec2388b027e09770d136f13b7","unresolved":false,"context_lines":[{"line_number":1486,"context_line":""},{"line_number":1487,"context_line":"        self.assertFlavorsMatchAllocation(old_flavor, new_flavor, usages)"},{"line_number":1488,"context_line":""},{"line_number":1489,"context_line":"        # NOTE(gibi): After fixing bug 1707252 the following is expected"},{"line_number":1490,"context_line":"        # self.assertEqual(old_flavor[\u0027vcpus\u0027] + new_flavor[\u0027vcpus\u0027],"},{"line_number":1491,"context_line":"        #                  usages[\u0027VCPU\u0027])"},{"line_number":1492,"context_line":"        # self.assertEqual(old_flavor[\u0027ram\u0027] + new_flavor[\u0027ram\u0027],"},{"line_number":1493,"context_line":"        #                  usages[\u0027MEMORY_MB\u0027])"},{"line_number":1494,"context_line":"        # self.assertEqual(old_flavor[\u0027disk\u0027] + new_flavor[\u0027disk\u0027],"},{"line_number":1495,"context_line":"        #                  usages[\u0027DISK_GB\u0027])"},{"line_number":1496,"context_line":""},{"line_number":1497,"context_line":"        allocations \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":1498,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_4afd92af","line":1495,"range":{"start_line":1489,"start_character":8,"end_line":1495,"end_character":45},"updated":"2017-08-02 21:48:12.000000000","message":"we can remove this","commit_id":"0381712d935d370ad3776df69dc04512f0aae14f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"7b559353215602bec2388b027e09770d136f13b7","unresolved":false,"context_lines":[{"line_number":1500,"context_line":"        allocation \u003d allocations[rp_uuid][\u0027resources\u0027]"},{"line_number":1501,"context_line":"        self.assertFlavorsMatchAllocation(old_flavor, new_flavor, allocation)"},{"line_number":1502,"context_line":""},{"line_number":1503,"context_line":"        # NOTE(gibi): After fixing bug 1707252 the following is expected"},{"line_number":1504,"context_line":"        # self.assertEqual(old_flavor[\u0027vcpus\u0027] + new_flavor[\u0027vcpus\u0027],"},{"line_number":1505,"context_line":"        #                  allocation[\u0027VCPU\u0027])"},{"line_number":1506,"context_line":"        # self.assertEqual(old_flavor[\u0027ram\u0027] + new_flavor[\u0027ram\u0027],"},{"line_number":1507,"context_line":"        #                  allocation[\u0027MEMORY_MB\u0027])"},{"line_number":1508,"context_line":"        # self.assertEqual(old_flavor[\u0027disk\u0027] + new_flavor[\u0027disk\u0027],"},{"line_number":1509,"context_line":"        #                  allocation[\u0027DISK_GB\u0027])"},{"line_number":1510,"context_line":""},{"line_number":1511,"context_line":"        self._run_periodics()"},{"line_number":1512,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"df3967d1_ca2aa22a","line":1509,"range":{"start_line":1503,"start_character":8,"end_line":1509,"end_character":49},"updated":"2017-08-02 21:48:12.000000000","message":"and this","commit_id":"0381712d935d370ad3776df69dc04512f0aae14f"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"eb4c1f83045ea0160d9f98c998115a9cfc394331","unresolved":false,"context_lines":[{"line_number":1495,"context_line":"        # tramples on the doubled allocations created in the scheduler."},{"line_number":1496,"context_line":"        self.assertFlavorMatchesAllocation(new_flavor, usages)"},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"        # NOTE(gibi): After fixing bug 1707252 the following is expected"},{"line_number":1499,"context_line":"        # self.assertEqual(old_flavor[\u0027vcpus\u0027] + new_flavor[\u0027vcpus\u0027],"},{"line_number":1500,"context_line":"        #                  usages[\u0027VCPU\u0027])"},{"line_number":1501,"context_line":"        # self.assertEqual(old_flavor[\u0027ram\u0027] + new_flavor[\u0027ram\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"df3967d1_44645a4a","line":1498,"range":{"start_line":1498,"start_character":39,"end_line":1498,"end_character":46},"updated":"2017-08-03 09:35:14.000000000","message":"nit: the this should refer to 1707071 too","commit_id":"e53bfb208a711ca6e5e1d96905cd19ef9b06862c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"eb4c1f83045ea0160d9f98c998115a9cfc394331","unresolved":false,"context_lines":[{"line_number":1511,"context_line":"        # tramples on the doubled allocations created in the scheduler."},{"line_number":1512,"context_line":"        self.assertFlavorMatchesAllocation(new_flavor, allocation)"},{"line_number":1513,"context_line":""},{"line_number":1514,"context_line":"        # NOTE(gibi): After fixing bug 1707252 the following is expected"},{"line_number":1515,"context_line":"        # self.assertEqual(old_flavor[\u0027vcpus\u0027] + new_flavor[\u0027vcpus\u0027],"},{"line_number":1516,"context_line":"        #                  allocation[\u0027VCPU\u0027])"},{"line_number":1517,"context_line":"        # self.assertEqual(old_flavor[\u0027ram\u0027] + new_flavor[\u0027ram\u0027],"}],"source_content_type":"text/x-python","patch_set":6,"id":"df3967d1_045ad281","line":1514,"range":{"start_line":1514,"start_character":39,"end_line":1514,"end_character":46},"updated":"2017-08-03 09:35:14.000000000","message":"1707071","commit_id":"e53bfb208a711ca6e5e1d96905cd19ef9b06862c"}],"nova/tests/unit/scheduler/client/test_report.py":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"eaa858a1c7ea1801ab22287b79f3376b47c4caf9","unresolved":false,"context_lines":[{"line_number":530,"context_line":"                    # VCPU and MEMORY_GB goes down on resize? Would we ignore"},{"line_number":531,"context_line":"                    # those and retain the source allocations since they are"},{"line_number":532,"context_line":"                    # larger? Or does the compute just decrement the old_flavor"},{"line_number":533,"context_line":"                    # on confirm_resize from a doubled-up allocation?"},{"line_number":534,"context_line":"                    \u0027resources\u0027: {"},{"line_number":535,"context_line":"                        \u0027VCPU\u0027: 3,"},{"line_number":536,"context_line":"                        \u0027MEMORY_MB\u0027: 3072,"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_8bb5cacf","line":533,"updated":"2017-08-02 17:02:20.000000000","message":"IRC says always double easier, less guesswork","commit_id":"0d6830868a1014f9e07023188ebcf5d061ea5d9b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"32fb6c948294463a96952db2b4ce8186fbfccc5c","unresolved":false,"context_lines":[{"line_number":530,"context_line":"                    # VCPU and MEMORY_GB goes down on resize? Would we ignore"},{"line_number":531,"context_line":"                    # those and retain the source allocations since they are"},{"line_number":532,"context_line":"                    # larger? Or does the compute just decrement the old_flavor"},{"line_number":533,"context_line":"                    # on confirm_resize from a doubled-up allocation?"},{"line_number":534,"context_line":"                    \u0027resources\u0027: {"},{"line_number":535,"context_line":"                        \u0027VCPU\u0027: 3,"},{"line_number":536,"context_line":"                        \u0027MEMORY_MB\u0027: 3072,"}],"source_content_type":"text/x-python","patch_set":1,"id":"df3967d1_a609e52c","line":533,"in_reply_to":"df3967d1_8bb5cacf","updated":"2017-08-02 17:12:56.000000000","message":"Yeah, Dan can build on this for the compute side stuff. I should move a note about this to the scheduler code though about why we sum instead of max.","commit_id":"0d6830868a1014f9e07023188ebcf5d061ea5d9b"}]}
