From 91756f4be7cf87ab95effa5a91f3036bda892cef Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Wed, 19 Jun 2013 12:27:21 -0700 Subject: Make InstanceList filter non-column extra attributes This is a no-op right now, but we need to avoid passing things like fault to the instance_get_all() queries. This will be used in changes to follow. Related to blueprint unified-object-model Change-Id: I66355a024b139fa6c579e04885ba52f9697381fe --- nova/objects/instance.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'nova/objects') diff --git a/nova/objects/instance.py b/nova/objects/instance.py index cc61b1ed9..3691e7282 100644 --- a/nova/objects/instance.py +++ b/nova/objects/instance.py @@ -30,6 +30,8 @@ CONF = cfg.CONF INSTANCE_OPTIONAL_FIELDS = ['metadata', 'system_metadata'] # These are fields that are always joined by the db right now INSTANCE_IMPLIED_FIELDS = ['info_cache', 'security_groups'] +# These are fields that are optional but don't translate to db columns +INSTANCE_OPTIONAL_NON_COLUMNS = [] class Instance(base.NovaObject): @@ -315,6 +317,14 @@ def _make_instance_list(context, inst_list, db_inst_list, expected_attrs): return inst_list +def expected_cols(expected_attrs): + """Return expected_attrs that are columns needing joining.""" + if expected_attrs: + return list(set(expected_attrs) - set(INSTANCE_OPTIONAL_NON_COLUMNS)) + else: + return expected_attrs + + class InstanceList(base.ObjectListBase, base.NovaObject): @base.remotable_classmethod def get_by_filters(cls, context, filters, @@ -322,15 +332,14 @@ class InstanceList(base.ObjectListBase, base.NovaObject): expected_attrs=None): db_inst_list = db.instance_get_all_by_filters( context, filters, sort_key, sort_dir, limit, marker, - columns_to_join=expected_attrs) - + columns_to_join=expected_cols(expected_attrs)) return _make_instance_list(context, cls(), db_inst_list, expected_attrs) @base.remotable_classmethod def get_by_host(cls, context, host, expected_attrs=None): db_inst_list = db.instance_get_all_by_host( - context, host, columns_to_join=expected_attrs) + context, host, columns_to_join=expected_cols(expected_attrs)) return _make_instance_list(context, cls(), db_inst_list, expected_attrs) -- cgit