diff options
Diffstat (limited to 'nova/compute')
| -rw-r--r-- | nova/compute/instance_types.py | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/nova/compute/instance_types.py b/nova/compute/instance_types.py index dfcf235dd..e31933240 100644 --- a/nova/compute/instance_types.py +++ b/nova/compute/instance_types.py @@ -27,6 +27,7 @@ from nova import db from nova import exception from nova import flags from nova.openstack.common import log as logging +from nova import utils FLAGS = flags.FLAGS LOG = logging.getLogger(__name__) @@ -35,7 +36,7 @@ INVALID_NAME_REGEX = re.compile("[^\w\.\- ]") def create(name, memory, vcpus, root_gb, ephemeral_gb, flavorid, swap=None, - rxtx_factor=None): + rxtx_factor=None, is_public=True): """Creates instance types.""" if swap is None: @@ -80,6 +81,9 @@ def create(name, memory, vcpus, root_gb, ephemeral_gb, flavorid, swap=None, # in through json as an integer, so we convert it here. kwargs['flavorid'] = unicode(flavorid) + # ensure is_public attribute is boolean + kwargs['is_public'] = utils.bool_from_str(is_public) + try: return db.instance_type_create(context.get_admin_context(), kwargs) except exception.DBError, e: @@ -97,12 +101,14 @@ def destroy(name): raise exception.InstanceTypeNotFoundByName(instance_type_name=name) -def get_all_types(inactive=False, filters=None): +def get_all_types(ctxt=None, inactive=False, filters=None): """Get all non-deleted instance_types. Pass true as argument if you want deleted instance types returned also. """ - ctxt = context.get_admin_context() + if ctxt is None: + ctxt = context.get_admin_context() + inst_types = db.instance_type_get_all( ctxt, inactive=inactive, filters=filters) @@ -120,30 +126,60 @@ def get_default_instance_type(): return get_instance_type_by_name(name) -def get_instance_type(instance_type_id): +def get_instance_type(instance_type_id, ctxt=None): """Retrieves single instance type by id.""" if instance_type_id is None: return get_default_instance_type() - ctxt = context.get_admin_context() + if ctxt is None: + ctxt = context.get_admin_context() + return db.instance_type_get(ctxt, instance_type_id) -def get_instance_type_by_name(name): +def get_instance_type_by_name(name, ctxt=None): """Retrieves single instance type by name.""" if name is None: return get_default_instance_type() - ctxt = context.get_admin_context() + if ctxt is None: + ctxt = context.get_admin_context() + return db.instance_type_get_by_name(ctxt, name) # TODO(termie): flavor-specific code should probably be in the API that uses # flavors. -def get_instance_type_by_flavor_id(flavorid, read_deleted="yes"): +def get_instance_type_by_flavor_id(flavorid, ctxt=None, read_deleted="yes"): """Retrieve instance type by flavorid. :raises: FlavorNotFound """ - ctxt = context.get_admin_context(read_deleted=read_deleted) + if ctxt is None: + ctxt = context.get_admin_context(read_deleted=read_deleted) + return db.instance_type_get_by_flavor_id(ctxt, flavorid) + + +def get_instance_type_access_by_flavor_id(flavorid, ctxt=None): + """Retrieve instance type access list by flavor id""" + if ctxt is None: + ctxt = context.get_admin_context() + + return db.instance_type_access_get_by_flavor_id(ctxt, flavorid) + + +def add_instance_type_access(flavorid, projectid, ctxt=None): + """Add instance type access for project""" + if ctxt is None: + ctxt = context.get_admin_context() + + return db.instance_type_access_add(ctxt, flavorid, projectid) + + +def remove_instance_type_access(flavorid, projectid, ctxt=None): + """Remove instance type access for project""" + if ctxt is None: + ctxt = context.get_admin_context() + + return db.instance_type_access_remove(ctxt, flavorid, projectid) |
