summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/nova-manage41
-rw-r--r--nova/compute/instance_types.py28
-rw-r--r--nova/db/sqlalchemy/migrate_repo/versions/003_cactus.py4
-rw-r--r--nova/db/sqlalchemy/models.py3
-rw-r--r--nova/tests/test_nova_manage.py48
5 files changed, 101 insertions, 23 deletions
diff --git a/bin/nova-manage b/bin/nova-manage
index e3c3e70f8..bd2fc0e81 100755
--- a/bin/nova-manage
+++ b/bin/nova-manage
@@ -614,15 +614,42 @@ class InstanceTypeCommands(object):
"""Class for managing instance types / flavors."""
def _print_instance_types(self, n, val):
- print "%s: %s memory(MB), %s vcpus, %s storage(GB), %s flavorid"\
- % (n, val["memory_mb"], val["vcpus"],
- val["local_gb"], val["flavorid"])
-
- def create(self, name, memory, vcpus, local_gb, flavorid):
+ print ("%s: Memory: %sMB, VCPUS: %s, Storage: %sGB, FlavorID: %s, "
+ "Swap: %sGB, RXTX Quota: %sGB, RXTX Cap: %sMB") % (
+ n,
+ val["memory_mb"],
+ val["vcpus"],
+ val["local_gb"],
+ val["flavorid"],
+ val["swap"],
+ val["rxtx_quota"],
+ val["rxtx_cap"])
+
+ def create(
+ self,
+ name,
+ memory,
+ vcpus,
+ local_gb,
+ flavorid,
+ swap,
+ rxtx_quota,
+ rxtx_cap):
"""Creates instance types / flavors
- arguments: name memory_mb vcpus local_gb"""
+ arguments: name memory vcpus local_gb flavorid swap rxtx_quota
+ rxtx_cap
+ """
+
try:
- instance_types.create(name, memory, vcpus, local_gb, flavorid)
+ instance_types.create(
+ name,
+ memory,
+ vcpus,
+ local_gb,
+ flavorid,
+ swap,
+ rxtx_quota,
+ rxtx_cap)
except exception.InvalidInputException:
print "Must supply valid parameters to create instance type"
sys.exit(1)
diff --git a/nova/compute/instance_types.py b/nova/compute/instance_types.py
index c6887795a..01abee584 100644
--- a/nova/compute/instance_types.py
+++ b/nova/compute/instance_types.py
@@ -29,16 +29,32 @@ from nova import exception
FLAGS = flags.FLAGS
-def create(name, memory, vcpus, local_gb, flavorid):
+def create(
+ name,
+ memory,
+ vcpus,
+ local_gb,
+ flavorid,
+ swap=0,
+ rxtx_quota=0,
+ rxtx_cap=0):
"""Creates instance types / flavors
- arguments: name memory_mb vcpus local_gb"""
+ arguments: name memory vcpus local_gb flavorid swap rxtx_quota rxtx_cap
+ """
if (memory <= 0) or (vcpus <= 0) or (local_gb < 0):
raise exception.InvalidInputException
- db.instance_type_create(context.get_admin_context(),
- dict(name=name, memory_mb=memory,
- vcpus=vcpus, local_gb=local_gb,
- flavorid=flavorid))
+ db.instance_type_create(
+ context.get_admin_context(),
+ dict(
+ name=name,
+ memory_mb=memory,
+ vcpus=vcpus,
+ local_gb=local_gb,
+ flavorid=flavorid,
+ swap=swap,
+ rxtx_quota=rxtx_quota,
+ rxtx_cap=rxtx_cap))
def destroy(name):
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/003_cactus.py b/nova/db/sqlalchemy/migrate_repo/versions/003_cactus.py
index f95996042..fec191214 100644
--- a/nova/db/sqlalchemy/migrate_repo/versions/003_cactus.py
+++ b/nova/db/sqlalchemy/migrate_repo/versions/003_cactus.py
@@ -41,7 +41,9 @@ instance_types = Table('instance_types', meta,
Column('vcpus', Integer(), nullable=False),
Column('local_gb', Integer(), nullable=False),
Column('flavorid', Integer(), nullable=False, unique=True),
- )
+ Column('swap', Integer(), nullable=False, default=0),
+ Column('rxtx_quota', Integer(), nullable=False, default=0),
+ Column('rxtx_cap', Integer(), nullable=False, default=0))
def upgrade(migrate_engine):
diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py
index 955d373fd..8ee3e3532 100644
--- a/nova/db/sqlalchemy/models.py
+++ b/nova/db/sqlalchemy/models.py
@@ -219,6 +219,9 @@ class InstanceTypes(BASE, NovaBase):
vcpus = Column(Integer)
local_gb = Column(Integer)
flavorid = Column(Integer, unique=True)
+ swap = Column(Integer, nullable=False, default=0)
+ rxtx_quota = Column(Integer, nullable=False, default=0)
+ rxtx_cap = Column(Integer, nullable=False, default=0)
class Volume(BASE, NovaBase):
diff --git a/nova/tests/test_nova_manage.py b/nova/tests/test_nova_manage.py
index c1ef8cae9..5a6e1287f 100644
--- a/nova/tests/test_nova_manage.py
+++ b/nova/tests/test_nova_manage.py
@@ -40,9 +40,19 @@ class NovaManageTestCase(test.TestCase):
def test_create_and_delete_instance_types(self):
fnull = open(os.devnull, 'w')
- retcode = subprocess.call(["bin/nova-manage", "instance_type",
- "create", self.name, "256", "1",
- "120", self.flavorid], stdout=fnull)
+ retcode = subprocess.call([
+ "bin/nova-manage",
+ "instance_type",
+ "create",
+ self.name,
+ "256",
+ "1",
+ "120",
+ self.flavorid,
+ "2",
+ "10",
+ "10"],
+ stdout=fnull)
self.assertEqual(0, retcode)
retcode = subprocess.call(["bin/nova-manage", "instance_type",\
"delete", self.name], stdout=fnull)
@@ -80,13 +90,33 @@ class NovaManageTestCase(test.TestCase):
def test_should_fail_on_duplicate_name(self):
fnull = open(os.devnull, 'w')
- retcode = subprocess.call(["bin/nova-manage", "instance_type",\
- "create", "fsfsfsdfsdf", "256", "1",\
- "120", self.flavorid], stdout=fnull)
+ retcode = subprocess.call([
+ "bin/nova-manage",
+ "instance_type",
+ "create",
+ "fsfsfsdfsdf",
+ "256",
+ "1",
+ "120",
+ self.flavorid,
+ "2",
+ "10",
+ "10"],
+ stdout=fnull)
self.assertEqual(0, retcode)
- retcode = subprocess.call(["bin/nova-manage", "instance_type",\
- "create", "fsfsfsdfsdf", "256", "1",\
- "120", self.flavorid], stdout=fnull)
+ retcode = subprocess.call([
+ "bin/nova-manage",
+ "instance_type",
+ "create",
+ "fsfsfsdfsdf",
+ "256",
+ "1",
+ "120",
+ self.flavorid,
+ "2",
+ "10",
+ "10"],
+ stdout=fnull)
self.assertEqual(1, retcode)
# def test_instance_type_delete_should_fail_without_valid_name(self):