92
92
return self._view_builder.show(req, flavor)
94
def _get_is_public(self, req):
95
"""Parse is_public into something usable."""
96
is_public = req.params.get('is_public', None)
99
# preserve default value of showing only public flavors
101
elif is_public is True or \
102
is_public.lower() in ['t', 'true', 'yes', '1']:
104
elif is_public is False or \
105
is_public.lower() in ['f', 'false', 'no', '0']:
107
elif is_public.lower() == 'none':
108
# value to match all flavors, ignore is_public
111
msg = _('Invalid is_public filter [%s]') % req.params['is_public']
112
raise webob.exc.HTTPBadRequest(explanation=msg)
94
114
def _get_flavors(self, req):
95
115
"""Helper function that returns a list of flavor dicts."""
98
118
context = req.environ['nova.context']
99
if not context.is_admin:
120
# Only admin has query access to all flavor types
121
filters['is_public'] = self._get_is_public(req)
123
filters['is_public'] = True
100
124
filters['disabled'] = False
102
126
if 'minRam' in req.params:
113
137
msg = _('Invalid minDisk filter [%s]') % req.params['minDisk']
114
138
raise webob.exc.HTTPBadRequest(explanation=msg)
116
flavors = instance_types.get_all_types(filters=filters)
140
flavors = instance_types.get_all_types(context, filters=filters)
117
141
flavors_list = flavors.values()
118
142
sorted_flavors = sorted(flavors_list,
119
143
key=lambda item: item['flavorid'])