)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"796b75a39dc8989428ccf56bcbf5bfb71ae18f04","unresolved":false,"context_lines":[{"line_number":20,"context_line":"subsequent patch can calculate that flag for existing instances"},{"line_number":21,"context_line":"so that we will be able to heal over time by migrating instances"},{"line_number":22,"context_line":"or re-writing their allocations to reflect reality."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I9c2111f7377df65c1fc3c72323f85483b3295989"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5f7c97a3_4d1c61c1","line":23,"updated":"2018-07-06 17:12:04.000000000","message":"Need to link this back to bug 1469179 right?","commit_id":"82be7923267a7734447076a8b713f23ad5b131c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8db975d5a937ce1a34d1bcad4573a4666a065104","unresolved":false,"context_lines":[{"line_number":16,"context_line":"To do this, we need another flag in request_spec to track the"},{"line_number":17,"context_line":"BFV-ness of the instance. Right now, this patch just sets that on"},{"line_number":18,"context_line":"new builds and the scheduler client assumes a lack of said flag"},{"line_number":19,"context_line":"as \"I don\u0027t know, so assume not-BFV\" for compatibility. A"},{"line_number":20,"context_line":"subsequent patch can calculate that flag for existing instances"},{"line_number":21,"context_line":"so that we will be able to heal over time by migrating instances"},{"line_number":22,"context_line":"or re-writing their allocations to reflect reality."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Related-Bug: #1469179"},{"line_number":25,"context_line":"Change-Id: I9c2111f7377df65c1fc3c72323f85483b3295989"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_20dc31e0","line":22,"range":{"start_line":19,"start_character":56,"end_line":22,"end_character":51},"updated":"2018-07-11 20:08:43.000000000","message":"Yeah in thinking this through, the RequestSpec.is_bfv flag will be persisted for new instances created with this change so any move operations using the request spec after that should benefit. But any move operations for existing instances wouldn\u0027t benefit since they don\u0027t have the is_bfv flag set in the RequestSpec. As noted, we could detect this and auto-heal during move operations with something like:\n\nif \u0027is_bfv\u0027 not in request_spec:\n    request_spec.is_bfv \u003d compute_utils.is_volume_backed_instance(context, instance)\n    request_spec.save()","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0abba9c1989832e90442708dc2196ada28c9df90","unresolved":false,"context_lines":[{"line_number":21,"context_line":"so that we will be able to heal over time by migrating instances"},{"line_number":22,"context_line":"or re-writing their allocations to reflect reality."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Related-Bug: #1469179"},{"line_number":25,"context_line":"Change-Id: I9c2111f7377df65c1fc3c72323f85483b3295989"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_7b7e5c1c","line":24,"range":{"start_line":24,"start_character":0,"end_line":24,"end_character":7},"updated":"2018-07-11 20:26:15.000000000","message":"After looking at this bug again, this should at least be Partial-Bug and then when we handle the auto-heal for existing instances on move operations, I think we can finally consider it closed (if you\u0027re using placement anyway - not fixed for CachingScheduler but that\u0027s deprecated anyway).","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"}],"nova/compute/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61a8fb77a15a6a086de609bba407371ef56fbe98","unresolved":false,"context_lines":[{"line_number":886,"context_line":"                        instance_group, base_options[\u0027availability_zone\u0027],"},{"line_number":887,"context_line":"                        security_groups\u003dsecurity_groups)"},{"line_number":888,"context_line":""},{"line_number":889,"context_line":"                if block_device_mapping:"},{"line_number":890,"context_line":"                    # Record whether or not we are a BFV instance"},{"line_number":891,"context_line":"                    root \u003d block_device_mapping.root_bdm()"},{"line_number":892,"context_line":"                    req_spec.is_bfv \u003d root and root.is_volume or False"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_809f45b2","line":889,"range":{"start_line":889,"start_character":19,"end_line":889,"end_character":39},"updated":"2018-07-11 19:54:38.000000000","message":"Looks a bit confusing but this is actually a BlockDeviceMappingList so that\u0027s why root_bdm() below works.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"81a09f01417b9c1096a64ce15151c702dc579e0a","unresolved":false,"context_lines":[{"line_number":889,"context_line":"                if block_device_mapping:"},{"line_number":890,"context_line":"                    # Record whether or not we are a BFV instance"},{"line_number":891,"context_line":"                    root \u003d block_device_mapping.root_bdm()"},{"line_number":892,"context_line":"                    req_spec.is_bfv \u003d root and root.is_volume or False"},{"line_number":893,"context_line":"                else:"},{"line_number":894,"context_line":"                    # If we have no BDMs, we\u0027re clearly not BFV"},{"line_number":895,"context_line":"                    req_spec.is_bfv \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_da96f7ef","line":892,"range":{"start_line":892,"start_character":61,"end_line":892,"end_character":70},"updated":"2018-07-18 14:38:22.000000000","message":"This seems redundant. Am I missing something?","commit_id":"4dc370e890ab4991046c99d00b56c0d3328c0d7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"489809349f8f371193229dfaceedb89a3b2b0fd7","unresolved":false,"context_lines":[{"line_number":889,"context_line":"                if block_device_mapping:"},{"line_number":890,"context_line":"                    # Record whether or not we are a BFV instance"},{"line_number":891,"context_line":"                    root \u003d block_device_mapping.root_bdm()"},{"line_number":892,"context_line":"                    req_spec.is_bfv \u003d root and root.is_volume or False"},{"line_number":893,"context_line":"                else:"},{"line_number":894,"context_line":"                    # If we have no BDMs, we\u0027re clearly not BFV"},{"line_number":895,"context_line":"                    req_spec.is_bfv \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_e02c6202","line":892,"range":{"start_line":892,"start_character":61,"end_line":892,"end_character":70},"in_reply_to":"5f7c97a3_da96f7ef","updated":"2018-07-18 15:43:52.000000000","message":"Done","commit_id":"4dc370e890ab4991046c99d00b56c0d3328c0d7c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"58b3ec456900c227f8abf11f3655851ae2ac150c","unresolved":false,"context_lines":[{"line_number":889,"context_line":"                if block_device_mapping:"},{"line_number":890,"context_line":"                    # Record whether or not we are a BFV instance"},{"line_number":891,"context_line":"                    root \u003d block_device_mapping.root_bdm()"},{"line_number":892,"context_line":"                    req_spec.is_bfv \u003d root and root.is_volume or False"},{"line_number":893,"context_line":"                else:"},{"line_number":894,"context_line":"                    # If we have no BDMs, we\u0027re clearly not BFV"},{"line_number":895,"context_line":"                    req_spec.is_bfv \u003d False"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_a3166f57","line":892,"range":{"start_line":892,"start_character":61,"end_line":892,"end_character":70},"in_reply_to":"5f7c97a3_e02c6202","updated":"2018-07-18 19:48:00.000000000","message":"I bet this was to prevent [1].\n\nStill, it doesn\u0027t make sense to me that we would have to be careful to set the field to False instead of a different False-ish (like None) but not careful to set it to True. So let\u0027s make this\n\n req_spec.is_bfv \u003d bool(root and root.is_volume)\n\n[1] http://logs.openstack.org/46/583646/2/check/openstack-tox-py27/01405d0/testr_results.html.gz","commit_id":"4dc370e890ab4991046c99d00b56c0d3328c0d7c"}],"nova/objects/request_spec.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61a8fb77a15a6a086de609bba407371ef56fbe98","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    # Version 1.8: Added security_groups"},{"line_number":44,"context_line":"    # Version 1.9: Added user_id"},{"line_number":45,"context_line":"    # Version 1.10: Added is_bfv"},{"line_number":46,"context_line":"    VERSION \u003d \u00271.10\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    fields \u003d {"},{"line_number":49,"context_line":"        \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_80ed0526","line":46,"updated":"2018-07-11 19:54:38.000000000","message":"So not a backportable fix...we do have the BlockDeviceMappingList in conductor before calling select_destinations in the scheduler so we could have just set an is_bfv flag on the RequestSpec w/o persisting it. Thoughts?","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3cbfb574f80b3a84ab87725cc4697faf29189ccf","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    # Version 1.8: Added security_groups"},{"line_number":44,"context_line":"    # Version 1.9: Added user_id"},{"line_number":45,"context_line":"    # Version 1.10: Added is_bfv"},{"line_number":46,"context_line":"    VERSION \u003d \u00271.10\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    fields \u003d {"},{"line_number":49,"context_line":"        \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_7b93bc4f","line":46,"in_reply_to":"5f7c97a3_2078b1bf","updated":"2018-07-11 20:29:28.000000000","message":"\u003e  in order for it to communicate that to scheduler via the object, it has to be a field.\n\nEven if we set the attribute does it get dropped when we send it over the wire to scheduler? If so, apologies for the brain fart. I thought we did this in at least one case between nova-api and nova-network.\n\n\u003e a release note where it\u0027s clear when the behavior will start.\n\nI\u0027m cool with that, let\u0027s add a \u0027fixes\u0027 release note for this.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8e35c948ef0c89c319d9a674de1fbb8b6268619d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    # Version 1.8: Added security_groups"},{"line_number":44,"context_line":"    # Version 1.9: Added user_id"},{"line_number":45,"context_line":"    # Version 1.10: Added is_bfv"},{"line_number":46,"context_line":"    VERSION \u003d \u00271.10\u0027"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    fields \u003d {"},{"line_number":49,"context_line":"        \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_2078b1bf","line":46,"in_reply_to":"5f7c97a3_80ed0526","updated":"2018-07-11 20:12:27.000000000","message":"I\u0027m not sure what you mean. Conductor can know if we need a disk allocation because it has BDMs, but in order for it to communicate that to scheduler via the object, it has to be a field. I\u0027m not sure what you mean by \"no persisting it\" because I don\u0027t think that helps.\n\nI (obviously) wasn\u0027t shooting for making this backportable.. I didn\u0027t even consider it. It seems like a bad idea to backport something that will start requesting and claiming different allocations mid-release. It seems like it would be a lot better to just say this is resolved in rocky with a release note where it\u0027s clear when the behavior will start.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61a8fb77a15a6a086de609bba407371ef56fbe98","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        # NOTE(sbauza): In case the primitive was not providing that field"},{"line_number":112,"context_line":"        # because of a previous RequestSpec version, we want to default"},{"line_number":113,"context_line":"        # that field in order to have the same behaviour."},{"line_number":114,"context_line":"        self.obj_set_defaults(attrname)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @property"},{"line_number":117,"context_line":"    def vcpus(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_406e0d98","line":114,"updated":"2018-07-11 19:54:38.000000000","message":"We could set default\u003dFalse on is_bfv and then it\u0027d be set for all existing request specs...","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8e35c948ef0c89c319d9a674de1fbb8b6268619d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        # NOTE(sbauza): In case the primitive was not providing that field"},{"line_number":112,"context_line":"        # because of a previous RequestSpec version, we want to default"},{"line_number":113,"context_line":"        # that field in order to have the same behaviour."},{"line_number":114,"context_line":"        self.obj_set_defaults(attrname)"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    @property"},{"line_number":117,"context_line":"    def vcpus(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_800e653b","line":114,"in_reply_to":"5f7c97a3_406e0d98","updated":"2018-07-11 20:12:27.000000000","message":"Right, but that wouldn\u0027t be correct. We have existing request_specs for BFV instances and if we just assume False for them all, we won\u0027t convert them over time during a migration or something. I\u0027d rather leave this unset until we know if it\u0027s true or false.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61a8fb77a15a6a086de609bba407371ef56fbe98","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        else:"},{"line_number":146,"context_line":"            self.image \u003d None"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _from_instance(self, instance):"},{"line_number":149,"context_line":"        if isinstance(instance, obj_instance.Instance):"},{"line_number":150,"context_line":"            # NOTE(sbauza): Instance should normally be a NovaObject..."},{"line_number":151,"context_line":"            getter \u003d getattr"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_c028dd37","line":148,"updated":"2018-07-11 19:54:38.000000000","message":"If we wanted to, we could set is_bfv \u003d not instance.image_ref since image_ref is \u0027\u0027 for volume-backed instances.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8e35c948ef0c89c319d9a674de1fbb8b6268619d","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        else:"},{"line_number":146,"context_line":"            self.image \u003d None"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _from_instance(self, instance):"},{"line_number":149,"context_line":"        if isinstance(instance, obj_instance.Instance):"},{"line_number":150,"context_line":"            # NOTE(sbauza): Instance should normally be a NovaObject..."},{"line_number":151,"context_line":"            getter \u003d getattr"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_00549521","line":148,"in_reply_to":"5f7c97a3_c028dd37","updated":"2018-07-11 20:12:27.000000000","message":"Yeah, it just seems too implicit to me.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61a8fb77a15a6a086de609bba407371ef56fbe98","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            # though they should match."},{"line_number":467,"context_line":"            if key in [\u0027id\u0027, \u0027instance_uuid\u0027]:"},{"line_number":468,"context_line":"                setattr(spec, key, db_spec[key])"},{"line_number":469,"context_line":"            elif key in spec_obj:"},{"line_number":470,"context_line":"                setattr(spec, key, getattr(spec_obj, key))"},{"line_number":471,"context_line":"        spec._context \u003d context"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_40c04d7e","line":469,"updated":"2018-07-11 19:54:38.000000000","message":"Is this needed for existing request specs that won\u0027t have is_bfv set? Why wouldn\u0027t we just handle that key separately and default to False? Maybe because then we can\u0027t tell the difference between unset (we don\u0027t know) and False (defaulted or definitely not volume-backed). Just thinking this through since the code using this defaults to False anyway if the field isn\u0027t set.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"8e35c948ef0c89c319d9a674de1fbb8b6268619d","unresolved":false,"context_lines":[{"line_number":466,"context_line":"            # though they should match."},{"line_number":467,"context_line":"            if key in [\u0027id\u0027, \u0027instance_uuid\u0027]:"},{"line_number":468,"context_line":"                setattr(spec, key, db_spec[key])"},{"line_number":469,"context_line":"            elif key in spec_obj:"},{"line_number":470,"context_line":"                setattr(spec, key, getattr(spec_obj, key))"},{"line_number":471,"context_line":"        spec._context \u003d context"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_c0c1bdff","line":469,"in_reply_to":"5f7c97a3_40c04d7e","updated":"2018-07-11 20:12:27.000000000","message":"Well, yes, but it\u0027s also kinda broken I think. The spec_obj is the thing we deserialized, so anything we add to the object will initially be unset on this spec_obj the first time we load it from the DB. The old code assumed they were the same schema and that it could just load anything in the current set of fields (spec.fields) from the potentially-old object we just deserialized from the db (spec_obj). I just don\u0027t think that makes any sense, so instead of calling out my new field specifically, I figured I\u0027d fix the bad assumption.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b5b3be6ca52e45a595452e74a2416fd4b7d2e7db","unresolved":false,"context_lines":[{"line_number":477,"context_line":"            # though they should match."},{"line_number":478,"context_line":"            if key in [\u0027id\u0027, \u0027instance_uuid\u0027]:"},{"line_number":479,"context_line":"                setattr(spec, key, db_spec[key])"},{"line_number":480,"context_line":"            elif key in spec_obj:"},{"line_number":481,"context_line":"                setattr(spec, key, getattr(spec_obj, key))"},{"line_number":482,"context_line":"        spec._context \u003d context"},{"line_number":483,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_7176e694","line":480,"range":{"start_line":480,"start_character":12,"end_line":480,"end_character":33},"updated":"2018-07-18 16:38:09.000000000","message":"Just a reminder to myself that legacy request specs won\u0027t have is_bfv in them so that\u0027s why this is here. This will be important for determining when we need to migrate request specs during a move operation in a subsequent change.","commit_id":"c4e1d0e7b637701838e001c7d9b824ae67949296"}],"nova/scheduler/utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61a8fb77a15a6a086de609bba407371ef56fbe98","unresolved":false,"context_lines":[{"line_number":348,"context_line":"    resource_class:amount based on the attributes of the flavor, accounting for"},{"line_number":349,"context_line":"    any overrides that are made in extra_specs."},{"line_number":350,"context_line":"    \"\"\""},{"line_number":351,"context_line":"    is_bfv \u003d compute_utils.is_volume_backed_instance(instance._context,"},{"line_number":352,"context_line":"                                                     instance)"},{"line_number":353,"context_line":"    swap_in_gb \u003d compute_utils.convert_mb_to_ceil_gb(flavor.swap)"},{"line_number":354,"context_line":"    disk \u003d ((0 if is_bfv else flavor.root_gb) +"},{"line_number":355,"context_line":"            swap_in_gb + flavor.ephemeral_gb)"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    resources \u003d {"},{"line_number":358,"context_line":"        fields.ResourceClass.VCPU: flavor.vcpus,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_a0984169","line":355,"range":{"start_line":351,"start_character":4,"end_line":355,"end_character":45},"updated":"2018-07-11 19:54:38.000000000","message":"Yup, basically the same logic here.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"}],"nova/tests/functional/test_servers.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"61a8fb77a15a6a086de609bba407371ef56fbe98","unresolved":false,"context_lines":[{"line_number":3578,"context_line":"        self._delete_and_check_allocations(server)"},{"line_number":3579,"context_line":""},{"line_number":3580,"context_line":""},{"line_number":3581,"context_line":"class VolumeBackedServerTest(integrated_helpers.ProviderUsageBaseTestCase):"},{"line_number":3582,"context_line":"    \"\"\"Tests for volume-backed servers.\"\"\""},{"line_number":3583,"context_line":""},{"line_number":3584,"context_line":"    compute_driver \u003d \u0027fake.SmallFakeDriver\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_003015e9","line":3581,"updated":"2018-07-11 19:54:38.000000000","message":"Nice tests.","commit_id":"d9c3dc8690e4c2a7706d797bb603704e32e263c3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"81a09f01417b9c1096a64ce15151c702dc579e0a","unresolved":false,"context_lines":[{"line_number":3645,"context_line":"        allocs \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":3646,"context_line":"        resources \u003d list(allocs.values())[0][\u0027resources\u0027]"},{"line_number":3647,"context_line":"        self.assertIn(\u0027MEMORY_MB\u0027, resources)"},{"line_number":3648,"context_line":"        # 10gb root, 20gb ephemerial, 5gb swap"},{"line_number":3649,"context_line":"        self.assertEqual(35, resources[\u0027DISK_GB\u0027])"},{"line_number":3650,"context_line":""},{"line_number":3651,"context_line":"    def test_volume_backed_no_disk_allocation(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_9d0b997a","line":3648,"range":{"start_line":3648,"start_character":26,"end_line":3648,"end_character":36},"updated":"2018-07-18 14:38:22.000000000","message":"ephemeral","commit_id":"4dc370e890ab4991046c99d00b56c0d3328c0d7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"489809349f8f371193229dfaceedb89a3b2b0fd7","unresolved":false,"context_lines":[{"line_number":3645,"context_line":"        allocs \u003d self._get_allocations_by_server_uuid(server[\u0027id\u0027])"},{"line_number":3646,"context_line":"        resources \u003d list(allocs.values())[0][\u0027resources\u0027]"},{"line_number":3647,"context_line":"        self.assertIn(\u0027MEMORY_MB\u0027, resources)"},{"line_number":3648,"context_line":"        # 10gb root, 20gb ephemerial, 5gb swap"},{"line_number":3649,"context_line":"        self.assertEqual(35, resources[\u0027DISK_GB\u0027])"},{"line_number":3650,"context_line":""},{"line_number":3651,"context_line":"    def test_volume_backed_no_disk_allocation(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_c01046ae","line":3648,"range":{"start_line":3648,"start_character":26,"end_line":3648,"end_character":36},"in_reply_to":"5f7c97a3_9d0b997a","updated":"2018-07-18 15:43:52.000000000","message":"Done","commit_id":"4dc370e890ab4991046c99d00b56c0d3328c0d7c"}],"releasenotes/notes/bfv-instances-no-longer-allocate-from-compute-95d048fbe9867c34.yaml":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ef562002d76451710ae92d7de159a53362620c35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5f7c97a3_761c3366","line":11,"updated":"2018-07-11 21:08:07.000000000","message":"I don\u0027t know if we need to / should make caveats about the CachingScheduler and DiskFilter in here. If you\u0027re using the CachingScheduler you still likely want the DiskFilter which means we\u0027ll still do a faulty claim in the RT...maybe we should just say, \"This only applies to the FilterScheduler. Also, when using the FilterScheduler, the DiskFilter should *not* be enabled.\"","commit_id":"6bd32cada5b23c2d7f386cd134ce1d632e2ce6fe"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"81a09f01417b9c1096a64ce15151c702dc579e0a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Booting volume-backed instances no longer include an incorrect allocation"},{"line_number":5,"context_line":"    against the compute node for the root disk. Historically, this has been"},{"line_number":6,"context_line":"    quite broken behavior in Nova, where volume-backed instances would count"},{"line_number":7,"context_line":"    against available space on the compute node, even though their storage"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5f7c97a3_a0542afe","line":4,"range":{"start_line":4,"start_character":46,"end_line":4,"end_character":53},"updated":"2018-07-18 14:38:22.000000000","message":"includes","commit_id":"4dc370e890ab4991046c99d00b56c0d3328c0d7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"489809349f8f371193229dfaceedb89a3b2b0fd7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Booting volume-backed instances no longer include an incorrect allocation"},{"line_number":5,"context_line":"    against the compute node for the root disk. Historically, this has been"},{"line_number":6,"context_line":"    quite broken behavior in Nova, where volume-backed instances would count"},{"line_number":7,"context_line":"    against available space on the compute node, even though their storage"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5f7c97a3_8006ce73","line":4,"range":{"start_line":4,"start_character":46,"end_line":4,"end_character":53},"in_reply_to":"5f7c97a3_a0542afe","updated":"2018-07-18 15:43:52.000000000","message":"Done","commit_id":"4dc370e890ab4991046c99d00b56c0d3328c0d7c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"81a09f01417b9c1096a64ce15151c702dc579e0a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    instances will not create allocations of ``DISK_GB`` against the compute"},{"line_number":10,"context_line":"    node for the ``root_gb`` quantity in the flavor. Note that if you are"},{"line_number":11,"context_line":"    still using a scheduler configured with the (now deprecated)"},{"line_number":12,"context_line":"    DiskFilter (including deployments using CachingScheduler), the"},{"line_number":13,"context_line":"    preceding change will not apply to you."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5f7c97a3_406676f0","line":13,"range":{"start_line":12,"start_character":63,"end_line":13,"end_character":13},"updated":"2018-07-18 14:38:22.000000000","message":"s/preceding/above/. \"preceding\" sounds like we\u0027re talking about a change before this one.","commit_id":"4dc370e890ab4991046c99d00b56c0d3328c0d7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"489809349f8f371193229dfaceedb89a3b2b0fd7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    instances will not create allocations of ``DISK_GB`` against the compute"},{"line_number":10,"context_line":"    node for the ``root_gb`` quantity in the flavor. Note that if you are"},{"line_number":11,"context_line":"    still using a scheduler configured with the (now deprecated)"},{"line_number":12,"context_line":"    DiskFilter (including deployments using CachingScheduler), the"},{"line_number":13,"context_line":"    preceding change will not apply to you."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"5f7c97a3_001abec5","line":13,"range":{"start_line":12,"start_character":63,"end_line":13,"end_character":13},"in_reply_to":"5f7c97a3_406676f0","updated":"2018-07-18 15:43:52.000000000","message":"Done","commit_id":"4dc370e890ab4991046c99d00b56c0d3328c0d7c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"69232bdae9e5c713f4a65896302f6985a50e45fa","unresolved":false,"context_lines":[{"line_number":8,"context_line":"    was provided by the volume service. Now, newly-booted volume-backed"},{"line_number":9,"context_line":"    instances will not create allocations of ``DISK_GB`` against the compute"},{"line_number":10,"context_line":"    node for the ``root_gb`` quantity in the flavor. Note that if you are"},{"line_number":11,"context_line":"    still using a scheduler configured with the (now deprecated)"},{"line_number":12,"context_line":"    DiskFilter (including deployments using CachingScheduler), the"},{"line_number":13,"context_line":"    above change will not apply to you."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3f79a3b5_9815ca3f","line":11,"range":{"start_line":11,"start_character":49,"end_line":11,"end_character":63},"updated":"2018-08-24 23:32:18.000000000","message":"The DiskFilter is technically not deprecated in Rocky:\n\nhttps://review.openstack.org/#/c/596502/","commit_id":"03c596a9f4324e572bc04d4bbad09a6d3d47366c"}]}
