)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"813a71fa6767dd39e734a71becb0e8c49bea792c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently libvirt code has some references to Flavor"},{"line_number":10,"context_line":"as objects.Flavor.get_by_id. because the flavor might be"},{"line_number":11,"context_line":"deleted before it\u0027s referenced, so most code need to"},{"line_number":12,"context_line":"read deleted flavor in libvirt driver. This patch"},{"line_number":13,"context_line":"makes the _prepare_args_for_get_config which is used for"},{"line_number":14,"context_line":"sriov feature consistent to other Flavor get functions."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aa7fdbe_fe58e88b","line":11,"updated":"2014-10-23 14:54:55.000000000","message":"Is there a bug report for this?  How often is a flavor deleted while an instance is using it - and why do we want to support that?  I.e. it seems it\u0027s OK to fail if you\u0027re trying to boot or resize an instance to a flavor that no longer exists to have that fail with FlavorNotFound - which means you need to either recreate the flavor because you were naughty and deleted the wrong thing, or you need to redo your request with a flavor that does exist.","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"55133d0b08e2378a1f67ada9c9d1f4e4179a687d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently libvirt code has some references to Flavor"},{"line_number":10,"context_line":"as objects.Flavor.get_by_id. because the flavor might be"},{"line_number":11,"context_line":"deleted before it\u0027s referenced, so most code need to"},{"line_number":12,"context_line":"read deleted flavor in libvirt driver. This patch"},{"line_number":13,"context_line":"makes the _prepare_args_for_get_config which is used for"},{"line_number":14,"context_line":"sriov feature consistent to other Flavor get functions."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aa7fdbe_e1192dd8","line":11,"in_reply_to":"9aa7fdbe_a15d6517","updated":"2014-10-23 15:16:43.000000000","message":"I prefer to saw \u0027related\u0027 since the fix didn\u0027t fix Alex\u0027s bug \nhe mentioned it in previous comments and I am discussing with him \n\nthanks  let me know this :)","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc07c4d84098d6b8fd56b1bf22efd580d9de60f4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently libvirt code has some references to Flavor"},{"line_number":10,"context_line":"as objects.Flavor.get_by_id. because the flavor might be"},{"line_number":11,"context_line":"deleted before it\u0027s referenced, so most code need to"},{"line_number":12,"context_line":"read deleted flavor in libvirt driver. This patch"},{"line_number":13,"context_line":"makes the _prepare_args_for_get_config which is used for"},{"line_number":14,"context_line":"sriov feature consistent to other Flavor get functions."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aa7fdbe_9684fc5e","line":11,"in_reply_to":"9aa7fdbe_e1192dd8","updated":"2014-10-24 20:06:36.000000000","message":"Related-Bug is fine, otherwise open a new bug for the specific failure scenario.","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"55133d0b08e2378a1f67ada9c9d1f4e4179a687d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently libvirt code has some references to Flavor"},{"line_number":10,"context_line":"as objects.Flavor.get_by_id. because the flavor might be"},{"line_number":11,"context_line":"deleted before it\u0027s referenced, so most code need to"},{"line_number":12,"context_line":"read deleted flavor in libvirt driver. This patch"},{"line_number":13,"context_line":"makes the _prepare_args_for_get_config which is used for"},{"line_number":14,"context_line":"sriov feature consistent to other Flavor get functions."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aa7fdbe_e1676d4b","line":11,"in_reply_to":"9aa7fdbe_fe58e88b","updated":"2014-10-23 15:16:43.000000000","message":"I think we can take it as \n1) instance and flavor exist\n2) instance exist, flavor deleted\n3) instance exist, flavor deleted and archieved (not able to find it)\n\nwe used to support 1), with this patch, we support 2) \nbut we still can\u0027t support 3) unless use create it again ...","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99a529f1bf44f97c2050c2953d677f26102d7673","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently libvirt code has some references to Flavor"},{"line_number":10,"context_line":"as objects.Flavor.get_by_id. because the flavor might be"},{"line_number":11,"context_line":"deleted before it\u0027s referenced, so most code need to"},{"line_number":12,"context_line":"read deleted flavor in libvirt driver. This patch"},{"line_number":13,"context_line":"makes the _prepare_args_for_get_config which is used for"},{"line_number":14,"context_line":"sriov feature consistent to other Flavor get functions."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9aa7fdbe_a15d6517","line":11,"in_reply_to":"9aa7fdbe_fe58e88b","updated":"2014-10-23 15:02:26.000000000","message":"Reading bug 1352668 it\u0027s really a problem when you delete a flavor and then try to rebuild an instance that was using that flavor.\n\nWe should then have this marked as closing bug 1352668.","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"}],"nova/tests/virt/libvirt/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"80b4f1c282c778525bbab85bcd3cbaadb2efc747","unresolved":false,"context_lines":[{"line_number":11733,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI())"},{"line_number":11734,"context_line":"        conn._prepare_args_for_get_config(self.context, instance)"},{"line_number":11735,"context_line":""},{"line_number":11736,"context_line":"        self.context.read_deleted \u003d \u0027yes\u0027"},{"line_number":11737,"context_line":"        mock_get.assert_called_once_with(self.context,"},{"line_number":11738,"context_line":"                                         instance[\u0027instance_type_id\u0027])"},{"line_number":11739,"context_line":"        self.context.read_deleted \u003d \u0027no\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa7fdbe_2fbe49d5","line":11736,"updated":"2014-10-28 22:22:18.000000000","message":"This is bad because if the assertion fails then your test context is modified and doesn\u0027t get reset, unless it\u0027s cleaned up between test runs.\n\nWhat I think I\u0027d rather see if you stub out the get_by_id method with a nested function, then mock out the real one using the side_effect kwarg with mock.  Then in your stub, just assert that the context.read_deleted attribute is equal to \u0027yes\u0027.\n\nThen we don\u0027t actually have to modify the context variable to assert how it\u0027s used.","commit_id":"0afe5c1d0e73788c482ed0b990679ddb3aa05adc"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"0ff07389931fb1192b38f7479d607279362593cc","unresolved":false,"context_lines":[{"line_number":11733,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI())"},{"line_number":11734,"context_line":"        conn._prepare_args_for_get_config(self.context, instance)"},{"line_number":11735,"context_line":""},{"line_number":11736,"context_line":"        self.context.read_deleted \u003d \u0027yes\u0027"},{"line_number":11737,"context_line":"        mock_get.assert_called_once_with(self.context,"},{"line_number":11738,"context_line":"                                         instance[\u0027instance_type_id\u0027])"},{"line_number":11739,"context_line":"        self.context.read_deleted \u003d \u0027no\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa7fdbe_ac395a43","line":11736,"in_reply_to":"9aa7fdbe_2fbe49d5","updated":"2014-10-29 10:48:24.000000000","message":"yes, correct, it make more sense, thanks","commit_id":"0afe5c1d0e73788c482ed0b990679ddb3aa05adc"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"227c82be585f1d844b6439159aa1e348dca26e7c","unresolved":false,"context_lines":[{"line_number":11737,"context_line":"        mock_get.assert_called_once_with(self.context,"},{"line_number":11738,"context_line":"                                         instance[\u0027instance_type_id\u0027])"},{"line_number":11739,"context_line":"        self.context.read_deleted \u003d \u0027no\u0027"},{"line_number":11740,"context_line":""},{"line_number":11741,"context_line":""},{"line_number":11742,"context_line":"class LibvirtVolumeUsageTestCase(test.NoDBTestCase):"},{"line_number":11743,"context_line":"    \"\"\"Test for LibvirtDriver.get_all_volume_usage.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa7fdbe_c53cd0ca","line":11740,"updated":"2014-10-28 14:18:10.000000000","message":"Add mock_image.assert_called_once_with ?","commit_id":"0afe5c1d0e73788c482ed0b990679ddb3aa05adc"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"0ff07389931fb1192b38f7479d607279362593cc","unresolved":false,"context_lines":[{"line_number":11737,"context_line":"        mock_get.assert_called_once_with(self.context,"},{"line_number":11738,"context_line":"                                         instance[\u0027instance_type_id\u0027])"},{"line_number":11739,"context_line":"        self.context.read_deleted \u003d \u0027no\u0027"},{"line_number":11740,"context_line":""},{"line_number":11741,"context_line":""},{"line_number":11742,"context_line":"class LibvirtVolumeUsageTestCase(test.NoDBTestCase):"},{"line_number":11743,"context_line":"    \"\"\"Test for LibvirtDriver.get_all_volume_usage.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9aa7fdbe_cc3dbe2e","line":11740,"in_reply_to":"9aa7fdbe_c53cd0ca","updated":"2014-10-29 10:48:24.000000000","message":"don\u0027t need , I think ,the purpose is to test \u0027delete\u0027 \u003d \u0027yes\u0027\nother code should test it is called :)","commit_id":"0afe5c1d0e73788c482ed0b990679ddb3aa05adc"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"813a71fa6767dd39e734a71becb0e8c49bea792c","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        flavor \u003d objects.Flavor.get_by_id("},{"line_number":3166,"context_line":"            nova_context.get_admin_context(read_deleted\u003d\u0027yes\u0027),"},{"line_number":3167,"context_line":"            instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_7ef07891","line":3166,"updated":"2014-10-23 14:54:55.000000000","message":"Why does the context need to be escalated to admin?","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc07c4d84098d6b8fd56b1bf22efd580d9de60f4","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        flavor \u003d objects.Flavor.get_by_id("},{"line_number":3166,"context_line":"            nova_context.get_admin_context(read_deleted\u003d\u0027yes\u0027),"},{"line_number":3167,"context_line":"            instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_b68f4029","line":3166,"in_reply_to":"9aa7fdbe_41ccb96a","updated":"2014-10-24 20:06:36.000000000","message":"Looks like you might be right about this given the code needing to get extra_specs...\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/compute/flavors.py?id\u003d2014.2#n301\n\nI guess we could update flavors.extract_flavor, but given the note and what dansmith is working on in kilo (blueprint flavor-from-sysmeta-to-blob) maybe it\u0027s not worth it right now.","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"a45c7ca947d7858ca1dda8291d2c1444231b0dc5","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        flavor \u003d objects.Flavor.get_by_id("},{"line_number":3166,"context_line":"            nova_context.get_admin_context(read_deleted\u003d\u0027yes\u0027),"},{"line_number":3167,"context_line":"            instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_dec324eb","line":3166,"in_reply_to":"9aa7fdbe_7ef07891","updated":"2014-10-23 14:57:08.000000000","message":"This should probably use instance.get_flavor() anyway, right?","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"55133d0b08e2378a1f67ada9c9d1f4e4179a687d","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        flavor \u003d objects.Flavor.get_by_id("},{"line_number":3166,"context_line":"            nova_context.get_admin_context(read_deleted\u003d\u0027yes\u0027),"},{"line_number":3167,"context_line":"            instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_e1320d5e","line":3166,"in_reply_to":"9aa7fdbe_7ef07891","updated":"2014-10-23 15:16:43.000000000","message":"all the other usage use it, I think we need to get admin context to be able to read \u0027deleted\u0027 stuffs","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"55133d0b08e2378a1f67ada9c9d1f4e4179a687d","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        flavor \u003d objects.Flavor.get_by_id("},{"line_number":3166,"context_line":"            nova_context.get_admin_context(read_deleted\u003d\u0027yes\u0027),"},{"line_number":3167,"context_line":"            instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_41ccb96a","line":3166,"in_reply_to":"9aa7fdbe_a146454d","updated":"2014-10-23 15:16:43.000000000","message":"sorry but I don\u0027t think get_flavor should be used here:\nnova/virt/libvirt/designer.py , see following function\n\nfollowing function will at last consume the flavor we got here\nI think the system_metadata will not include those information?\n(correct me if I am wrong, thanks)\n\ndef set_vif_bandwidth_config(conf, inst_type):\n    \"\"\"Config vif inbound/outbound bandwidth limit. parameters are\n    set in instance_type_extra_specs table, key is in  the format\n    quota:vif_inbound_average.\n    \"\"\"\n\n    bandwidth_items \u003d [\u0027vif_inbound_average\u0027, \u0027vif_inbound_peak\u0027,\n        \u0027vif_inbound_burst\u0027, \u0027vif_outbound_average\u0027, \u0027vif_outbound_peak\u0027,\n        \u0027vif_outbound_burst\u0027]\n    for key, value in inst_type.get(\u0027extra_specs\u0027, {}).iteritems():\n        scope \u003d key.split(\u0027:\u0027)\n        if len(scope) \u003e 1 and scope[0] \u003d\u003d \u0027quota\u0027:\n            if scope[1] in bandwidth_items:\n                setattr(conf, scope[1], value)","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"eb775d4a085953ae5ca9695788eb6fec15bba50d","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        flavor \u003d objects.Flavor.get_by_id("},{"line_number":3166,"context_line":"            nova_context.get_admin_context(read_deleted\u003d\u0027yes\u0027),"},{"line_number":3167,"context_line":"            instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_1a5821f9","line":3166,"in_reply_to":"9aa7fdbe_b6bd80b9","updated":"2014-10-27 00:45:38.000000000","message":"@Matt, you are right , I will change it accordingly\n\n@Dan, ok, thanks for point this out","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f39b3be99c3d2b4a4a9f7790ac41ac3f45e5a42d","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        flavor \u003d objects.Flavor.get_by_id("},{"line_number":3166,"context_line":"            nova_context.get_admin_context(read_deleted\u003d\u0027yes\u0027),"},{"line_number":3167,"context_line":"            instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_b6bd80b9","line":3166,"in_reply_to":"9aa7fdbe_d60da4e9","updated":"2014-10-24 20:10:01.000000000","message":"We should *not* further abuse the flavor stashing, IMHO. The flavor blob work will cause us to start persisting extra_specs per instance and solve this problem. \n\nSo, this code should be refactored when that is in place.\n\nFor now, since it\u0027s already in here, all you need is:\n\n  with utils.temporary_mutation(context, read_deleted\u003d\"yes\"):\n      flavor \u003d ...","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99a529f1bf44f97c2050c2953d677f26102d7673","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        flavor \u003d objects.Flavor.get_by_id("},{"line_number":3166,"context_line":"            nova_context.get_admin_context(read_deleted\u003d\u0027yes\u0027),"},{"line_number":3167,"context_line":"            instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_a146454d","line":3166,"in_reply_to":"9aa7fdbe_dec324eb","updated":"2014-10-23 15:02:26.000000000","message":"Yeah, that constructs the flavor information from the instance system_metadata if I\u0027m reading it correctly, so if the flavor is deleted or not it doesn\u0027t matter since the information is stored with the instance.","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fc07c4d84098d6b8fd56b1bf22efd580d9de60f4","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        flavor \u003d objects.Flavor.get_by_id("},{"line_number":3166,"context_line":"            nova_context.get_admin_context(read_deleted\u003d\u0027yes\u0027),"},{"line_number":3167,"context_line":"            instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_d60da4e9","line":3166,"in_reply_to":"9aa7fdbe_e1320d5e","updated":"2014-10-24 20:06:36.000000000","message":"read_deleted is pulled from the db.api call or the context:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/db/sqlalchemy/api.py?id\u003d2014.2#n214\n\nIt doesn\u0027t have to be an admin context, see:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/db/sqlalchemy/api.py?id\u003d2014.2#n4389\n\nTo me that reads that if the context isn\u0027t admin you can only get flavors that are public or are owned by the given project (within the context).  Which makes sense to me.  The instance shouldn\u0027t have been using a flavor it didn\u0027t have access to in the first place.","commit_id":"46af5edbf14141144101e28b5398e2b55f38e829"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"31c2e263203d6bceb337c358934e06fd3cce503f","unresolved":false,"context_lines":[{"line_number":3163,"context_line":""},{"line_number":3164,"context_line":"    def _prepare_args_for_get_config(self, context, instance):"},{"line_number":3165,"context_line":"        with utils.temporary_mutation(context, read_deleted\u003d\"yes\"):"},{"line_number":3166,"context_line":"            flavor \u003d objects.Flavor.get_by_id(context,"},{"line_number":3167,"context_line":"                instance[\u0027instance_type_id\u0027])"},{"line_number":3168,"context_line":"        image_ref \u003d instance[\u0027image_ref\u0027]"},{"line_number":3169,"context_line":"        image_meta \u003d compute_utils.get_image_metadata("}],"source_content_type":"text/x-python","patch_set":3,"id":"9aa7fdbe_2fde77dd","line":3166,"updated":"2014-10-27 16:05:15.000000000","message":"Let\u0027s add or update a simple unit test that mocks out objects.Flavor.get_by_id so that we can assert the context passed to it has the read_deleted attribute set to \u0027yes\u0027.","commit_id":"69e434288048cd4a408a2bad8e4981eec8c8f6ee"}]}
