diff options
| author | Trey Morris <trey.morris@rackspace.com> | 2011-06-27 16:48:03 -0500 |
|---|---|---|
| committer | Trey Morris <trey.morris@rackspace.com> | 2011-06-27 16:48:03 -0500 |
| commit | 0a2c2e0975c3037372b47b09a7f547eb197ef7d7 (patch) | |
| tree | a9bf06911ddd8765bb322727dce61c695502dcde /nova/api | |
| parent | e2a734a19584a1d46b85e28e427320b4cd1a840c (diff) | |
| parent | 8a8c013cd4513b07e936125a23188e7608f40d58 (diff) | |
trunk merge, getting fierce..
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/ec2/admin.py | 20 | ||||
| -rw-r--r-- | nova/api/ec2/cloud.py | 4 |
2 files changed, 22 insertions, 2 deletions
diff --git a/nova/api/ec2/admin.py b/nova/api/ec2/admin.py index 343bc61c4..df7876b9d 100644 --- a/nova/api/ec2/admin.py +++ b/nova/api/ec2/admin.py @@ -369,3 +369,23 @@ class AdminController(object): raise exception.ApiError(_('Duplicate rule')) self.compute_api.trigger_provider_fw_rules_refresh(context) return {'status': 'OK', 'message': 'Added %s rules' % rules_added} + + def describe_external_address_blocks(self, context): + blocks = db.provider_fw_rule_get_all(context) + # NOTE(todd): use a set since we have icmp/udp/tcp rules with same cidr + blocks = set([b.cidr for b in blocks]) + blocks = [{'cidr': b} for b in blocks] + return {'externalIpBlockInfo': + list(sorted(blocks, key=lambda k: k['cidr']))} + + def remove_external_address_block(self, context, cidr): + LOG.audit(_('Removing ip block from %s'), cidr, context=context) + cidr = urllib.unquote(cidr).decode() + # raise if invalid + netaddr.IPNetwork(cidr) + rules = db.provider_fw_rule_get_all_by_cidr(context, cidr) + for rule in rules: + db.provider_fw_rule_destroy(context, rule['id']) + if rules: + self.compute_api.trigger_provider_fw_rules_refresh(context) + return {'status': 'OK', 'message': 'Deleted %s rules' % len(rules)} diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index 078d35887..e7f94830f 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -23,7 +23,7 @@ datastore. """ import base64 -import IPy +import netaddr import os import urllib import tempfile @@ -452,7 +452,7 @@ class CloudController(object): elif cidr_ip: # If this fails, it throws an exception. This is what we want. cidr_ip = urllib.unquote(cidr_ip).decode() - IPy.IP(cidr_ip) + netaddr.IPNetwork(cidr_ip) values['cidr'] = cidr_ip else: values['cidr'] = '0.0.0.0/0' |
