summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorEric Windisch <eric@cloudscaling.com>2011-03-08 01:04:21 -0500
committerEric Windisch <eric@cloudscaling.com>2011-03-08 01:04:21 -0500
commit41f99fca5a20435e3a6dabe1fd1607bf1f3279ac (patch)
treeb26c6d6cc9e184f6e83996a4498bd6dac368951a /bin
parentcac5881eaa35f94e004c18dd34ca78014f067976 (diff)
parentbb4e0c940f49564c740a1863d110106d9018e8d4 (diff)
Merge from main branch
Diffstat (limited to 'bin')
-rwxr-xr-xbin/nova-api7
-rwxr-xr-xbin/nova-manage78
2 files changed, 82 insertions, 3 deletions
diff --git a/bin/nova-api b/bin/nova-api
index 14be4b841..0b2a44c88 100755
--- a/bin/nova-api
+++ b/bin/nova-api
@@ -43,6 +43,8 @@ from nova import wsgi
LOG = logging.getLogger('nova.api')
FLAGS = flags.FLAGS
+flags.DEFINE_string('paste_config', "api-paste.ini",
+ 'File name for the paste.deploy config for nova-api')
flags.DEFINE_string('ec2_listen', "0.0.0.0",
'IP address for EC2 API to listen')
flags.DEFINE_integer('ec2_listen_port', 8773, 'port for ec2 api to listen')
@@ -90,8 +92,9 @@ if __name__ == '__main__':
for flag in FLAGS:
flag_get = FLAGS.get(flag, None)
LOG.debug("%(flag)s : %(flag_get)s" % locals())
- conf = wsgi.paste_config_file('nova-api.conf')
+ conf = wsgi.paste_config_file(FLAGS.paste_config)
if conf:
run_app(conf)
else:
- LOG.error(_("No paste configuration found for: %s"), 'nova-api.conf')
+ LOG.error(_("No paste configuration found for: %s"),
+ FLAGS.paste_config)
diff --git a/bin/nova-manage b/bin/nova-manage
index 89332f2af..9bf3a1bb3 100755
--- a/bin/nova-manage
+++ b/bin/nova-manage
@@ -84,6 +84,7 @@ from nova import utils
from nova.api.ec2.cloud import ec2_id_to_id
from nova.auth import manager
from nova.cloudpipe import pipelib
+from nova.compute import instance_types
from nova.db import migration
FLAGS = flags.FLAGS
@@ -661,6 +662,79 @@ class VolumeCommands(object):
"mountpoint": volume['mountpoint']}})
+class InstanceTypeCommands(object):
+ """Class for managing instance types / flavors."""
+
+ def _print_instance_types(self, n, val):
+ deleted = ('', ', inactive')[val["deleted"] == 1]
+ print ("%s: Memory: %sMB, VCPUS: %s, Storage: %sGB, FlavorID: %s, "
+ "Swap: %sGB, RXTX Quota: %sGB, RXTX Cap: %sMB%s") % (
+ n, val["memory_mb"], val["vcpus"], val["local_gb"],
+ val["flavorid"], val["swap"], val["rxtx_quota"],
+ val["rxtx_cap"], deleted)
+
+ def create(self, name, memory, vcpus, local_gb, flavorid,
+ swap=0, rxtx_quota=0, rxtx_cap=0):
+ """Creates instance types / flavors
+ arguments: name memory vcpus local_gb flavorid [swap] [rxtx_quota]
+ [rxtx_cap]
+ """
+ try:
+ 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"
+ print e
+ sys.exit(1)
+ except exception.DBError, e:
+ print "DB Error: %s" % e
+ sys.exit(2)
+ except:
+ print "Unknown error"
+ sys.exit(3)
+ else:
+ print "%s created" % name
+
+ def delete(self, name, purge=None):
+ """Marks instance types / flavors as deleted
+ arguments: name"""
+ try:
+ if purge == "--purge":
+ instance_types.purge(name)
+ verb = "purged"
+ else:
+ instance_types.destroy(name)
+ 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)
+
+ def list(self, name=None):
+ """Lists all active or specific instance types / flavors
+ arguments: [name]"""
+ try:
+ if name == None:
+ inst_types = instance_types.get_all_types()
+ elif name == "--all":
+ inst_types = instance_types.get_all_types(1)
+ else:
+ inst_types = instance_types.get_instance_type(name)
+ except exception.DBError, e:
+ _db_error(e)
+ if isinstance(inst_types.values()[0], dict):
+ for k, v in inst_types.iteritems():
+ self._print_instance_types(k, v)
+ else:
+ self._print_instance_types(name, inst_types)
+
+
CATEGORIES = [
('user', UserCommands),
('project', ProjectCommands),
@@ -673,7 +747,9 @@ CATEGORIES = [
('service', ServiceCommands),
('log', LogCommands),
('db', DbCommands),
- ('volume', VolumeCommands)]
+ ('volume', VolumeCommands),
+ ('instance_type', InstanceTypeCommands),
+ ('flavor', InstanceTypeCommands)]
def lazy_match(name, key_value_tuples):