diff options
author | Todd Willey <todd@ansolabs.com> | 2011-03-23 04:11:06 +0000 |
---|---|---|
committer | Tarmac <> | 2011-03-23 04:11:06 +0000 |
commit | 83e2424e1c2721dd0ba42ca279de80b6c881ec21 (patch) | |
tree | 7e7dc71cb77ee11e82081cac6a96285918701095 | |
parent | cb9031903a0d93fcf242254f545aca2fdeb23f32 (diff) | |
parent | 4b8ed5afd1fd3e616eda0015f9bf16c7097f5476 (diff) | |
download | nova-83e2424e1c2721dd0ba42ca279de80b6c881ec21.tar.gz nova-83e2424e1c2721dd0ba42ca279de80b6c881ec21.tar.xz nova-83e2424e1c2721dd0ba42ca279de80b6c881ec21.zip |
Fix the describe_vpns admin api call.
Firstly, use the correct mechanism for mapping ec2 ids from instance ids.
Secondly, if a vpn doesn't have an ip/port assignment from the project, don't try utils.vpn_ping, as it will raise an exception.
-rw-r--r-- | nova/api/ec2/admin.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/nova/api/ec2/admin.py b/nova/api/ec2/admin.py index f32d0804f..037184b40 100644 --- a/nova/api/ec2/admin.py +++ b/nova/api/ec2/admin.py @@ -28,6 +28,7 @@ from nova import exception from nova import flags from nova import log as logging from nova import utils +from nova.api.ec2 import ec2utils from nova.auth import manager @@ -92,15 +93,18 @@ def vpn_dict(project, vpn_instance): 'public_ip': project.vpn_ip, 'public_port': project.vpn_port} if vpn_instance: - rv['instance_id'] = vpn_instance['ec2_id'] + rv['instance_id'] = ec2utils.id_to_ec2_id(vpn_instance['id']) rv['created_at'] = utils.isotime(vpn_instance['created_at']) address = vpn_instance.get('fixed_ip', None) if address: rv['internal_ip'] = address['address'] - if utils.vpn_ping(project.vpn_ip, project.vpn_port): - rv['state'] = 'running' + if project.vpn_ip and project.vpn_port: + if utils.vpn_ping(project.vpn_ip, project.vpn_port): + rv['state'] = 'running' + else: + rv['state'] = 'down' else: - rv['state'] = 'down' + rv['state'] = 'down - invalid project vpn config' else: rv['state'] = 'pending' return rv @@ -279,7 +283,7 @@ class AdminController(object): ", ensure it isn't running, and try " "again in a few minutes") instance = self._vpn_for(context, project) - return {'instance_id': instance['ec2_id']} + return {'instance_id': ec2utils.id_to_ec2_id(instance['id'])} def describe_vpns(self, context): vpns = [] |