added purge option and tightened up testing

This commit is contained in:
Ken Pepple
2011-02-18 17:17:47 -08:00
parent 3609f1da7e
commit 53784c1afa
4 changed files with 56 additions and 36 deletions

View File

@@ -683,9 +683,9 @@ class InstanceTypeCommands(object):
vcpus,
local_gb,
flavorid,
swap,
rxtx_quota,
rxtx_cap):
swap=0,
rxtx_quota=0,
rxtx_cap=0):
"""Creates instance types / flavors
arguments: name memory vcpus local_gb flavorid swap rxtx_quota
rxtx_cap
@@ -719,13 +719,18 @@ class InstanceTypeCommands(object):
try:
if purge == "--purge":
instance_types.purge(name)
verb = "deleted"
verb = "purged"
else:
instance_types.destroy(name)
verb = "purged"
verb = "deleted"
except exception.ApiError:
print "Valid instance type name is required"
sys.exit(1)
except exception.DBError, e:
print "DB Error: %s" % e
sys.exit(2)
except:
sys.exit(3)
else:
print "%s %s" % (name, verb)

View File

@@ -81,6 +81,19 @@ def destroy(name):
name)
def purge(name):
"""Removes instance types / flavors from database
arguments: name"""
if name == None:
raise exception.InvalidInputException(_("No instance type specified"))
else:
try:
db.instance_type_purge(context.get_admin_context(), name)
except exception.NotFound:
raise exception.ApiError(_("Unknown instance type: %s"),
name)
def get_all_types(inactive=0):
"""Retrieves non-deleted instance_types.
Pass true as argument if you want deleted instance types returned also."""

View File

@@ -54,7 +54,7 @@ class InstanceTypeTestCase(test.TestCase):
self.assertEqual(1,
instance_types.get_instance_type(self.name)["deleted"])
self.assertEqual(starting_inst_list, instance_types.get_all_types())
db.instance_type_purge(context.get_admin_context(), self.name)
instance_types.purge(self.name)
self.assertEqual(len(starting_inst_list),
len(instance_types.get_all_types()),
'instance type not purged')

View File

@@ -33,12 +33,13 @@ class NovaManageTestCase(test.TestCase):
order_by("flavorid desc").first()
self.flavorid = str(max_flavorid["flavorid"] + 1)
self.name = str(int(time.time()))
self.fnull = open(os.devnull, 'w')
def teardown(self):
fnull.close()
self.fnull.close()
def test_create_and_delete_instance_types(self):
fnull = open(os.devnull, 'w')
myname = self.name + "create_and_delete"
retcode = subprocess.call([
"bin/nova-manage",
"instance_type",
@@ -51,45 +52,44 @@ class NovaManageTestCase(test.TestCase):
"2",
"10",
"10"],
stdout=fnull)
stdout=self.fnull)
self.assertEqual(0, retcode)
retcode = subprocess.call(["bin/nova-manage", "instance_type",\
"delete", self.name], stdout=fnull)
retcode = subprocess.call(["bin/nova-manage", "instance_type",
"delete", self.name], stdout=self.fnull)
self.assertEqual(0, retcode)
retcode = subprocess.call(["bin/nova-manage", "instance_type",
"delete", self.name, "--purge"],
stdout=self.fnull)
self.assertEqual(0, retcode)
def test_list_instance_types_or_flavors(self):
fnull = open(os.devnull, 'w')
for c in ["instance_type", "flavor"]:
retcode = subprocess.call(["bin/nova-manage", c, \
"list"], stdout=fnull)
"list"], stdout=self.fnull)
self.assertEqual(0, retcode)
def test_list_specific_instance_type(self):
fnull = open(os.devnull, 'w')
retcode = subprocess.call(["bin/nova-manage", "instance_type", "list",
"m1.medium"], stdout=fnull)
"m1.medium"], stdout=self.fnull)
self.assertEqual(0, retcode)
def test_should_error_on_bad_create_args(self):
fnull = open(os.devnull, 'w')
# shouldn't be able to create instance type with 0 vcpus
retcode = subprocess.call(["bin/nova-manage", "instance_type",\
"create", self.name, "256", "0",\
"120", self.flavorid], stdout=fnull)
retcode = subprocess.call(["bin/nova-manage", "instance_type",
"create", self.name + "bad_args",
"256", "0", "120", self.flavorid],
stdout=self.fnull)
self.assertEqual(1, retcode)
def test_should_fail_on_duplicate_flavorid(self):
fnull = open(os.devnull, 'w')
# flavorid 1 is set in migration seed data
retcode = subprocess.call(["bin/nova-manage", "instance_type",\
"create", self.name, "256", "1",\
"120", "1"], stdout=fnull)
self.assertEqual(1, retcode)
"create", self.name + "dupflavor", "256",
"1", "120", "1"], stdout=self.fnull)
self.assertEqual(3, retcode)
def test_should_fail_on_duplicate_name(self):
# FIXME(ken-pepple) duplicate_name really needs to be unique
duplicate_name = "sdfsdfsafsdfsd"
fnull = open(os.devnull, 'w')
duplicate_name = self.name + "dup_name"
retcode = subprocess.call([
"bin/nova-manage",
"instance_type",
@@ -102,27 +102,29 @@ class NovaManageTestCase(test.TestCase):
"2",
"10",
"10"],
stdout=fnull)
stdout=self.fnull)
self.assertEqual(0, retcode)
duplicate_retcode = subprocess.call([
"bin/nova-manage",
"instance_type",
"create",
duplicate_name,
"256",
"512",
"1",
"120",
self.flavorid,
"240",
str(int(self.flavorid) + 1),
"2",
"10",
"10"],
stdout=fnull)
stdout=self.fnull)
self.assertEqual(3, duplicate_retcode)
delete_retcode = subprocess.call(["bin/nova-manage", "instance_type",\
"delete", duplicate_name], stdout=fnull)
delete_retcode = subprocess.call(["bin/nova-manage", "instance_type",
"delete", duplicate_name, "--purge"],
stdout=self.fnull)
self.assertEqual(0, delete_retcode)
def test_instance_type_delete_should_fail_without_valid_name(self):
fnull = open(os.devnull, 'w')
retcode = subprocess.call(["bin/nova-manage", "instance_type",\
"delete", "doesntexist"], stdout=fnull)
retcode = subprocess.call(["bin/nova-manage", "instance_type",
"delete", "doesntexist"],
stdout=self.fnull)
self.assertEqual(1, retcode)