summaryrefslogtreecommitdiffstats
path: root/nova/db
diff options
context:
space:
mode:
authorRick Harris <rconradharris@gmail.com>2011-09-21 16:29:36 +0000
committerRick Harris <rconradharris@gmail.com>2011-09-21 16:29:36 +0000
commitec2a93ca94e3d8ce436858380fc2c46963c76e05 (patch)
tree7ef167c96c10ccb5c307b6cbc31930edc462693d /nova/db
parent275f58c5649653632b8c28b66b59ff19d2cdf366 (diff)
Adding flavor filtering
Diffstat (limited to 'nova/db')
-rw-r--r--nova/db/api.py5
-rw-r--r--nova/db/sqlalchemy/api.py10
2 files changed, 12 insertions, 3 deletions
diff --git a/nova/db/api.py b/nova/db/api.py
index 8c4c78374..f776953db 100644
--- a/nova/db/api.py
+++ b/nova/db/api.py
@@ -1349,9 +1349,10 @@ def instance_type_create(context, values):
return IMPL.instance_type_create(context, values)
-def instance_type_get_all(context, inactive=False):
+def instance_type_get_all(context, inactive=False, filters=None):
"""Get all instance types."""
- return IMPL.instance_type_get_all(context, inactive)
+ return IMPL.instance_type_get_all(
+ context, inactive=inactive, filters=filters)
def instance_type_get(context, id):
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index a42ee8616..3aa5c59bb 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -3322,16 +3322,24 @@ def _dict_with_extra_specs(inst_type_query):
@require_context
-def instance_type_get_all(context, inactive=False):
+def instance_type_get_all(context, inactive=False, filters=None):
"""
Returns all instance types.
"""
+ filters = filters or {}
session = get_session()
partial = session.query(models.InstanceTypes)\
.options(joinedload('extra_specs'))
if not inactive:
partial = partial.filter_by(deleted=False)
+ if 'min_memory_mb' in filters:
+ partial = partial.filter(
+ models.InstanceTypes.memory_mb >= filters['min_memory_mb'])
+ if 'min_local_gb' in filters:
+ partial = partial.filter(
+ models.InstanceTypes.local_gb >= filters['min_local_gb'])
+
inst_types = partial.order_by("name").all()
return [_dict_with_extra_specs(i) for i in inst_types]