summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorNaveed Massjouni <naveedm9@gmail.com>2011-08-08 20:25:31 -0400
committerNaveed Massjouni <naveedm9@gmail.com>2011-08-08 20:25:31 -0400
commit72dc7939f4bfd05588b09046cbd25be09413c4eb (patch)
tree92d23ee75262e44ec5c149db5705442f6607cc9b /bin
parent543a783cefc3b34fa4a5d4ae5b9034090666d182 (diff)
parentd63bfef32d33edca440038c978f61bd303db23aa (diff)
downloadnova-72dc7939f4bfd05588b09046cbd25be09413c4eb.tar.gz
nova-72dc7939f4bfd05588b09046cbd25be09413c4eb.tar.xz
nova-72dc7939f4bfd05588b09046cbd25be09413c4eb.zip
Merge from trunk.
Diffstat (limited to 'bin')
-rwxr-xr-xbin/nova-manage43
1 files changed, 40 insertions, 3 deletions
diff --git a/bin/nova-manage b/bin/nova-manage
index 807753a2e..40f22c19c 100755
--- a/bin/nova-manage
+++ b/bin/nova-manage
@@ -56,6 +56,7 @@
import gettext
import glob
import json
+import math
import netaddr
import os
import sys
@@ -591,6 +592,31 @@ class FixedIpCommands(object):
fixed_ip['address'],
mac_address, hostname, host)
+ @args('--address', dest="address", metavar='<ip address>',
+ help='IP address')
+ def reserve(self, address):
+ """Mark fixed ip as reserved
+ arguments: address"""
+ self._set_reserved(address, True)
+
+ @args('--address', dest="address", metavar='<ip address>',
+ help='IP address')
+ def unreserve(self, address):
+ """Mark fixed ip as free to use
+ arguments: address"""
+ self._set_reserved(address, False)
+
+ def _set_reserved(self, address, reserved):
+ ctxt = context.get_admin_context()
+
+ try:
+ fixed_ip = db.fixed_ip_get_by_address(ctxt, address)
+ db.fixed_ip_update(ctxt, fixed_ip['address'],
+ {'reserved': reserved})
+ except exception.NotFound as ex:
+ print "error: %s" % ex
+ sys.exit(2)
+
class FloatingIpCommands(object):
"""Class for managing floating ip."""
@@ -694,7 +720,17 @@ class NetworkCommands(object):
if not num_networks:
num_networks = FLAGS.num_networks
if not network_size:
- network_size = FLAGS.network_size
+ fixnet = netaddr.IPNetwork(fixed_range_v4)
+ each_subnet_size = fixnet.size / int(num_networks)
+ if each_subnet_size > FLAGS.network_size:
+ network_size = FLAGS.network_size
+ subnet = 32 - int(math.log(network_size, 2))
+ oversize_msg = _('Subnet(s) too large, defaulting to /%s.'
+ ' To override, specify network_size flag.'
+ ) % subnet
+ print oversize_msg
+ else:
+ network_size = fixnet.size
if not multi_host:
multi_host = FLAGS.multi_host
else:
@@ -1224,11 +1260,12 @@ class ImageCommands(object):
is_public, architecture)
def _lookup(self, old_image_id):
+ elevated = context.get_admin_context()
try:
internal_id = ec2utils.ec2_id_to_id(old_image_id)
- image = self.image_service.show(context, internal_id)
+ image = self.image_service.show(elevated, internal_id)
except (exception.InvalidEc2Id, exception.ImageNotFound):
- image = self.image_service.show_by_name(context, old_image_id)
+ image = self.image_service.show_by_name(elevated, old_image_id)
return image['id']
def _old_to_new(self, old):