summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/nova-manage57
-rw-r--r--nova/db/sqlalchemy/api.py26
2 files changed, 54 insertions, 29 deletions
diff --git a/bin/nova-manage b/bin/nova-manage
index c3fa9cf3f..78591585d 100755
--- a/bin/nova-manage
+++ b/bin/nova-manage
@@ -617,49 +617,62 @@ class InstanceTypeCommands(object):
arguments: name memory_mb vcpus local_gb"""
# FIXME(kpepple) check for absurb arguments (?)
for option in [memory, flavorid, local_gb, vcpus]:
- if option <= 0:
+ if (option <= 0) or (option.__class__ == int):
print "Instance type parameters must be positive \
- numbers: %s" % option
+ integers: %s" % option
sys.exit(1)
- db.instance_type_create(context.get_admin_context(),
+ try:
+ db.instance_type_create(context.get_admin_context(),
dict(name=name, memory_mb=memory,
vcpus=vcpus, local_gb=local_gb,
flavorid=flavorid))
- print "%s created" % name
- return
+ print "%s created" % name
+ except exception.DBError, e:
+ print "%s is already a defined instance types" % name
+ sys.exit(1)
+ except:
+ print "Unknown error"
+ sys.exit(1)
def delete(self, name):
"""Marks instance types / flavors as deleted
arguments: name"""
if name == None:
print "Instance type name must be supplied"
- exit(1)
+ sys.exit(1)
else:
- records = db.instance_type_destroy(context.get_admin_context(),\
- name)
- if records != 1:
+ try:
+ records = db.instance_type_destroy(
+ context.get_admin_context(),
+ name)
+ except exception.NotFound, e:
sys.exit(1)
- return
def list(self, name=None):
"""Lists all instance types / flavors
arguments: [name]"""
ctxt = context.get_admin_context()
if name == None:
- instance_types = db.instance_type_get_all(ctxt)
- if len(instance_types) < 1:
+ try:
+ instance_types = db.instance_type_get_all(ctxt)
+ if len(instance_types) < 1:
+ sys.exit(1)
+ for k, v in instance_types.iteritems():
+ print "%s : %s memory(MB), %s vcpus, %s storage(GB)" % \
+ (k, v["memory_mb"],
+ v["vcpus"], v["local_gb"])
+ except exception.NotFound, e:
+ print e
sys.exit(1)
- for k, v in instance_types.iteritems():
- print "%s : %s memory(MB), %s vcpus, %s storage(GB)" % \
- (k, v["memory_mb"],
- v["vcpus"], v["local_gb"])
else:
- instance_types = db.instance_type_get_by_name(ctxt, name)
- print "%s : %s memory(MB), %s vcpus, %s storage(GB)" % \
- (instance_types["name"], instance_types["memory_mb"],
- instance_types["vcpus"], instance_types["local_gb"])
-
- return
+ try:
+ instance_types = db.instance_type_get_by_name(ctxt, name)
+ print "%s : %s memory(MB), %s vcpus, %s storage(GB)" % \
+ (instance_types["name"], instance_types["memory_mb"],
+ instance_types["vcpus"], instance_types["local_gb"])
+ except exception.NotFound, e:
+ print e
+ sys.exit(1)
CATEGORIES = [
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 6065af9ca..f084423e1 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -2044,10 +2044,13 @@ def instance_type_get_all(context):
filter_by(deleted=0).\
order_by("name").\
all()
- inst_dict = {}
- for i in inst_types:
- inst_dict[i['name']] = dict(i)
- return inst_dict
+ if inst_types:
+ inst_dict = {}
+ for i in inst_types:
+ inst_dict[i['name']] = dict(i)
+ return inst_dict
+ else:
+ raise exception.NotFound
@require_context
@@ -2057,7 +2060,10 @@ def instance_type_get_by_name(context, name):
inst_type = session.query(models.InstanceTypes).\
filter_by(name=name).\
first()
- return dict(inst_type)
+ if not inst_type:
+ raise exception.NotFound(_("No instance type with name %s") % name)
+ else:
+ return dict(inst_type)
@require_context
@@ -2067,7 +2073,10 @@ def instance_type_get_by_flavor_id(context, id):
inst_type = session.query(models.InstanceTypes).\
filter_by(flavorid=int(id)).\
first()
- return dict(inst_type)
+ if not inst_type:
+ raise exception.NotFound(_("No flavor with name %s") % id)
+ else:
+ return dict(inst_type)
@require_admin_context
@@ -2077,4 +2086,7 @@ def instance_type_destroy(context, name):
instance_type_ref = session.query(models.InstanceTypes).\
filter_by(name=name)
rows = instance_type_ref.update(dict(deleted=1))
- return rows
+ if not rows:
+ raise exception.NotFound(_("Couldn't delete instance type %s") % name)
+ else:
+ return rows