summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTodd Willey <todd@ansolabs.com>2011-03-23 04:11:06 +0000
committerTarmac <>2011-03-23 04:11:06 +0000
commit83e2424e1c2721dd0ba42ca279de80b6c881ec21 (patch)
tree7e7dc71cb77ee11e82081cac6a96285918701095
parentcb9031903a0d93fcf242254f545aca2fdeb23f32 (diff)
parent4b8ed5afd1fd3e616eda0015f9bf16c7097f5476 (diff)
downloadnova-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.py14
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 = []