diff options
| author | Naveed Massjouni <naveedm9@gmail.com> | 2011-08-08 20:25:31 -0400 |
|---|---|---|
| committer | Naveed Massjouni <naveedm9@gmail.com> | 2011-08-08 20:25:31 -0400 |
| commit | 72dc7939f4bfd05588b09046cbd25be09413c4eb (patch) | |
| tree | 92d23ee75262e44ec5c149db5705442f6607cc9b /bin | |
| parent | 543a783cefc3b34fa4a5d4ae5b9034090666d182 (diff) | |
| parent | d63bfef32d33edca440038c978f61bd303db23aa (diff) | |
| download | nova-72dc7939f4bfd05588b09046cbd25be09413c4eb.tar.gz nova-72dc7939f4bfd05588b09046cbd25be09413c4eb.tar.xz nova-72dc7939f4bfd05588b09046cbd25be09413c4eb.zip | |
Merge from trunk.
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/nova-manage | 43 |
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): |
