)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9ea24344ae899dbeb9ab1b9450e9a33148907bb4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"the assertions are just changed to assert_called_once() since the tests"},{"line_number":27,"context_line":"clearly don\u0027t care about the actual parameters passed to that method."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Finally, surprisingly the functional test is not noticeably faster after"},{"line_number":30,"context_line":"the image cache is added which means there is an opportunity for further"},{"line_number":31,"context_line":"profiling of this scenario to weed out other inefficiencies."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: Ibd51d6fc2d4c9fd142ba17f2f87214bb62f72440"},{"line_number":34,"context_line":"Closes-Bug: #1846777"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_4136f8e9","line":31,"range":{"start_line":29,"start_character":0,"end_line":31,"end_character":60},"updated":"2019-10-04 21:42:12.000000000","message":"It looks like this might be a result of issues in the test. I tried using NoopConductorFixture but that doesn\u0027t work because the base class setup still starts a conductor service so the API hits conductor which hits scheduling and runs the servers through the compute service. To fix that, I\u0027d need to split out into a separate test class that doesn\u0027t run conductor.","commit_id":"115fc9481825552dd9e7416c9cee02be7708074d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2af1eee34f12540bd31654e9c7e74e56cf39a2a4","unresolved":false,"context_lines":[{"line_number":26,"context_line":"the assertions are just changed to assert_called_once() since the tests"},{"line_number":27,"context_line":"clearly don\u0027t care about the actual parameters passed to that method."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Finally, surprisingly the functional test is not noticeably faster after"},{"line_number":30,"context_line":"the image cache is added which means there is an opportunity for further"},{"line_number":31,"context_line":"profiling of this scenario to weed out other inefficiencies."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Change-Id: Ibd51d6fc2d4c9fd142ba17f2f87214bb62f72440"},{"line_number":34,"context_line":"Closes-Bug: #1846777"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3fa7e38b_013000e8","line":31,"range":{"start_line":29,"start_character":0,"end_line":31,"end_character":60},"in_reply_to":"3fa7e38b_4136f8e9","updated":"2019-10-04 21:42:34.000000000","message":"Yup when doing that it\u0027s about half the time.","commit_id":"115fc9481825552dd9e7416c9cee02be7708074d"}],"nova/tests/functional/test_boot_from_volume.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"992fb6f851c733f446c5d6cdfd19e402bd6ee4e4","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # services if they need them."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def test_boot_from_volume_10_servers_255_volumes(self):"},{"line_number":191,"context_line":"        \"\"\"Create 10 servers with 255 BDMs each using the same image. This"},{"line_number":192,"context_line":"        is a bit silly but it just shows that it\u0027s possible and there is no"},{"line_number":193,"context_line":"        rate limiting involved in this type of very heavy request."},{"line_number":194,"context_line":"        \"\"\""},{"line_number":195,"context_line":"        # We only care about API performance in this test case so stub out"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_9b620aad","line":192,"range":{"start_line":191,"start_character":70,"end_line":192,"end_character":22},"updated":"2019-10-07 15:55:35.000000000","message":"The part that\u0027s silly is that a single instance would never (?) be using the same image more than once, right?\n\nBut we\u0027re proving it\u0027s theoretically possible for an instance to be using 255 BDMs.\n\nAnd the important aspect of the caching is the server[\u0027min_count\u0027] bit - that is, that we\u0027ll cache the image across multiple creates of the \"same\" instance.\n\nWhat it *doesn\u0027t* mean is that we would cache an image across multiple *different* instance creations, which would seem like a nice thing to do. But perhaps that\u0027s done at the virt driver (if it supports imagecache) right?\n\nThe other thing that seems a bit light here is that we\u0027re not exercising the cache with more than one image. Would it be relatively easy to use two (or more) different images?","commit_id":"59ba804fa0a9e8cbbd4d3a2bb8052871bf502419"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"48e1fdd8eba19c02f0834587dd3f8923590a38b6","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # services if they need them."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def test_boot_from_volume_10_servers_255_volumes(self):"},{"line_number":191,"context_line":"        \"\"\"Create 10 servers with 255 BDMs each using the same image. This"},{"line_number":192,"context_line":"        is a bit silly but it just shows that it\u0027s possible and there is no"},{"line_number":193,"context_line":"        rate limiting involved in this type of very heavy request."},{"line_number":194,"context_line":"        \"\"\""},{"line_number":195,"context_line":"        # We only care about API performance in this test case so stub out"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_28a4d5b8","line":192,"range":{"start_line":191,"start_character":70,"end_line":192,"end_character":22},"in_reply_to":"3fa7e38b_024c589c","updated":"2019-10-08 16:57:22.000000000","message":"\u003e Yeah I think I can bake that into the test pretty easily. I\u0027ll\n \u003e probably do what I have here and then add an additional bdm which\n \u003e uses some other image so ultimately with the cache we\u0027d have 1 + 1\n \u003e + 1 \u003d 3 calls to GET /v2/images/{image_id}.\n\n++","commit_id":"59ba804fa0a9e8cbbd4d3a2bb8052871bf502419"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ffd3e3d9dc9e9963810b08af5991a535ab6dd3ac","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # services if they need them."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def test_boot_from_volume_10_servers_255_volumes(self):"},{"line_number":191,"context_line":"        \"\"\"Create 10 servers with 255 BDMs each using the same image. This"},{"line_number":192,"context_line":"        is a bit silly but it just shows that it\u0027s possible and there is no"},{"line_number":193,"context_line":"        rate limiting involved in this type of very heavy request."},{"line_number":194,"context_line":"        \"\"\""},{"line_number":195,"context_line":"        # We only care about API performance in this test case so stub out"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_a208e42c","line":192,"range":{"start_line":191,"start_character":70,"end_line":192,"end_character":22},"in_reply_to":"3fa7e38b_024c589c","updated":"2019-10-08 15:55:58.000000000","message":"By the way, this came about in discussing Dan\u0027s aggregate-based image caching blueprint and rate limiting that API since while it might be silly to do so, technically his API will allow someone to send like 1000 images to cache. We got talking about other places in the API that aren\u0027t rate limited and this was one example and so I wrote a test to show that is the case and how it\u0027s easily fixed with a simple per-request cache.","commit_id":"59ba804fa0a9e8cbbd4d3a2bb8052871bf502419"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b97d7a3e1694393c9f1f3557b630d36283ae19bc","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # services if they need them."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def test_boot_from_volume_10_servers_255_volumes(self):"},{"line_number":191,"context_line":"        \"\"\"Create 10 servers with 255 BDMs each using the same image. This"},{"line_number":192,"context_line":"        is a bit silly but it just shows that it\u0027s possible and there is no"},{"line_number":193,"context_line":"        rate limiting involved in this type of very heavy request."},{"line_number":194,"context_line":"        \"\"\""},{"line_number":195,"context_line":"        # We only care about API performance in this test case so stub out"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_eb5c77ee","line":192,"range":{"start_line":191,"start_character":70,"end_line":192,"end_character":22},"in_reply_to":"3fa7e38b_28a4d5b8","updated":"2019-10-08 17:40:28.000000000","message":"Done - I decided to split it by 200 bdms for image1 and 55 bdms for image2.","commit_id":"59ba804fa0a9e8cbbd4d3a2bb8052871bf502419"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8f18af4d405cde208a24a6712acac2bd2fe711e9","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # services if they need them."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def test_boot_from_volume_10_servers_255_volumes(self):"},{"line_number":191,"context_line":"        \"\"\"Create 10 servers with 255 BDMs each using the same image. This"},{"line_number":192,"context_line":"        is a bit silly but it just shows that it\u0027s possible and there is no"},{"line_number":193,"context_line":"        rate limiting involved in this type of very heavy request."},{"line_number":194,"context_line":"        \"\"\""},{"line_number":195,"context_line":"        # We only care about API performance in this test case so stub out"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_024c589c","line":192,"range":{"start_line":191,"start_character":70,"end_line":192,"end_character":22},"in_reply_to":"3fa7e38b_9b620aad","updated":"2019-10-08 15:52:53.000000000","message":"\u003e The part that\u0027s silly is that a single instance would never (?) be\n \u003e using the same image more than once, right?\n\nYeah.\n\n \u003e \n \u003e But we\u0027re proving it\u0027s theoretically possible for an instance to be\n \u003e using 255 BDMs.\n\nYes.\n\n \u003e \n \u003e And the important aspect of the caching is the server[\u0027min_count\u0027]\n \u003e bit - that is, that we\u0027ll cache the image across multiple creates\n \u003e of the \"same\" instance.\n\nYes. So excluding a case where a server has more than one bdm with the same image, you could definitely have a group of 10 servers with at least one bdm that are all using the same image, maybe multiple bdms using different images depending on the application (root bdm has the OS image, secondary bdms have some other non-OS filesystem images or something). So even in that case you\u0027d have 10 or more GET calls to glance to get the image information.\n\n \u003e \n \u003e What it *doesn\u0027t* mean is that we would cache an image across\n \u003e multiple *different* instance creations, which would seem like a\n \u003e nice thing to do. But perhaps that\u0027s done at the virt driver (if it\n \u003e supports imagecache) right?\n\nThat\u0027s not something we could reasonably do in the API without some kind of TTL on the cache because the image could change status or property information between server create requests. Granted, for what the _validate_bdm code is doing, it\u0027s just an existence check really.\n\nAnd yes if the compute driver supports the image cache and that\u0027s all setup then the compute service image cache manager will manage caching the image while it\u0027s in-use on that host (and related to the blueprint Dan is working on).\n\n \u003e \n \u003e The other thing that seems a bit light here is that we\u0027re not\n \u003e exercising the cache with more than one image. Would it be\n \u003e relatively easy to use two (or more) different images?\n\nYeah I think I can bake that into the test pretty easily. I\u0027ll probably do what I have here and then add an additional bdm which uses some other image so ultimately with the cache we\u0027d have 1 + 1 + 1 \u003d 3 calls to GET /v2/images/{image_id}.","commit_id":"59ba804fa0a9e8cbbd4d3a2bb8052871bf502419"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"901eef26630b2dc0b8d8ffdb5753fbbc24383205","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        # The test cases will handle starting compute/conductor/scheduler"},{"line_number":188,"context_line":"        # services if they need them."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def test_boot_from_volume_10_servers_255_volumes_2_images(self):"},{"line_number":191,"context_line":"        \"\"\"Create 10 servers with 255 BDMs each using the same image for 200"},{"line_number":192,"context_line":"        of the BDMs and another image for 55 other BDMs. This is a bit silly"},{"line_number":193,"context_line":"        but it just shows that it\u0027s possible and there is no rate limiting"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_4bda6b17","line":190,"range":{"start_line":190,"start_character":52,"end_line":190,"end_character":61},"updated":"2019-10-08 17:50:51.000000000","message":"piconit, this should have been in the previous patch","commit_id":"6c2172f2473e87c053679305cbef6f4d4a068c97"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"18e69bc1e0915aa5d0b642b4e9288ed97e97e20a","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        # The test cases will handle starting compute/conductor/scheduler"},{"line_number":188,"context_line":"        # services if they need them."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def test_boot_from_volume_10_servers_255_volumes_2_images(self):"},{"line_number":191,"context_line":"        \"\"\"Create 10 servers with 255 BDMs each using the same image for 200"},{"line_number":192,"context_line":"        of the BDMs and another image for 55 other BDMs. This is a bit silly"},{"line_number":193,"context_line":"        but it just shows that it\u0027s possible and there is no rate limiting"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_37774c3d","line":190,"range":{"start_line":190,"start_character":52,"end_line":190,"end_character":61},"in_reply_to":"3fa7e38b_4bda6b17","updated":"2019-10-08 20:42:02.000000000","message":"Ah yeah, rebase fail.","commit_id":"6c2172f2473e87c053679305cbef6f4d4a068c97"}]}
