added purge option and tightened up testing
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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."""
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user