diff options
| author | Nachi Ueno <ueno.nachi@lab.ntt.co.jp> | 2011-01-14 07:14:25 +0000 |
|---|---|---|
| committer | Tarmac <> | 2011-01-14 07:14:25 +0000 |
| commit | 8a4eb03ec32144381e8defa791e923675a1c2314 (patch) | |
| tree | 9b3ae6e811e90bbdd5cdb16cce85617105f3afb9 /nova/api | |
| parent | c468658d553d3fd9cb8d9d39c7dcbc3f2ffbc640 (diff) | |
| parent | 449913debbe8533d734b618394f5c8b4eeece936 (diff) | |
OpenStack Compute (Nova) IPv4/IPv6 dual stack support
http://wiki.openstack.org/BexarIpv6supportReadme
Tested with
unit test
smoke test
No conflict with current branch r 562.
Fixed comment by Soren and Vish
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/ec2/cloud.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index 3abb6e3f6..630aaeaf2 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -26,9 +26,11 @@ import base64 import datetime import IPy import os +import urllib from nova import compute from nova import context + from nova import crypto from nova import db from nova import exception @@ -374,6 +376,7 @@ class CloudController(object): values['group_id'] = source_security_group['id'] 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) values['cidr'] = cidr_ip else: @@ -643,6 +646,10 @@ class CloudController(object): def describe_instances(self, context, **kwargs): return self._format_describe_instances(context, **kwargs) + def describe_instances_v6(self, context, **kwargs): + kwargs['use_v6'] = True + return self._format_describe_instances(context, **kwargs) + def _format_describe_instances(self, context, **kwargs): return {'reservationSet': self._format_instances(context, **kwargs)} @@ -678,10 +685,16 @@ class CloudController(object): if instance['fixed_ip']['floating_ips']: fixed = instance['fixed_ip'] floating_addr = fixed['floating_ips'][0]['address'] + if instance['fixed_ip']['network'] and 'use_v6' in kwargs: + i['dnsNameV6'] = utils.to_global_ipv6( + instance['fixed_ip']['network']['cidr_v6'], + instance['mac_address']) + i['privateDnsName'] = fixed_addr i['publicDnsName'] = floating_addr i['dnsName'] = i['publicDnsName'] or i['privateDnsName'] i['keyName'] = instance['key_name'] + if context.user.is_admin(): i['keyName'] = '%s (%s, %s)' % (i['keyName'], instance['project_id'], |
