diff options
author | Ewan Mellor <emellor@silver> | 2010-10-03 13:12:32 +0100 |
---|---|---|
committer | Ewan Mellor <emellor@silver> | 2010-10-03 13:12:32 +0100 |
commit | 4fa2258af9fb130be1650372cf48be39e83451e5 (patch) | |
tree | 56cec5f01e7979a7ef2ef8d9891092d781f173be | |
parent | 4d13a8554459638387d772a23fffe6aaaab3348d (diff) | |
download | nova-4fa2258af9fb130be1650372cf48be39e83451e5.tar.gz nova-4fa2258af9fb130be1650372cf48be39e83451e5.tar.xz nova-4fa2258af9fb130be1650372cf48be39e83451e5.zip |
Bug #654025: nova-manage project zip and nova-manage vpn list broken by change in DB semantics when networks are missing
Catch exception.NotFound when getting project VPN data. This is in two places:
nova-manage as part of its vpn list command, and
auth.manager.AuthManager.get_credentials.
Also, document the behaviour of db.api.project_get_network.
-rwxr-xr-x | bin/nova-manage | 9 | ||||
-rw-r--r-- | nova/auth/manager.py | 5 | ||||
-rw-r--r-- | nova/db/api.py | 6 |
3 files changed, 16 insertions, 4 deletions
diff --git a/bin/nova-manage b/bin/nova-manage index bf3c67612..5293fc942 100755 --- a/bin/nova-manage +++ b/bin/nova-manage @@ -88,11 +88,16 @@ class VpnCommands(object): def list(self): """Print a listing of the VPNs for all projects.""" print "%-12s\t" % 'project', - print "%-12s\t" % 'ip:port', + print "%-20s\t" % 'ip:port', print "%s" % 'state' for project in self.manager.get_projects(): print "%-12s\t" % project.name, - print "%s:%s\t" % (project.vpn_ip, project.vpn_port), + + try: + s = "%s:%s" % (project.vpn_ip, project.vpn_port) + except exception.NotFound: + s = "None" + print "%-20s\t" % s, vpn = self._vpn_for(project.id) if vpn: diff --git a/nova/auth/manager.py b/nova/auth/manager.py index 0bc12c80f..c30192e20 100644 --- a/nova/auth/manager.py +++ b/nova/auth/manager.py @@ -653,7 +653,10 @@ class AuthManager(object): zippy.writestr(FLAGS.credential_key_file, private_key) zippy.writestr(FLAGS.credential_cert_file, signed_cert) - (vpn_ip, vpn_port) = self.get_project_vpn_data(project) + try: + (vpn_ip, vpn_port) = self.get_project_vpn_data(project) + except exception.NotFound: + vpn_ip = None if vpn_ip: configfile = open(FLAGS.vpn_client_template, "r") s = string.Template(configfile.read()) diff --git a/nova/db/api.py b/nova/db/api.py index 5c935b561..d34f1b2cb 100644 --- a/nova/db/api.py +++ b/nova/db/api.py @@ -432,7 +432,11 @@ def network_update(context, network_id, values): def project_get_network(context, project_id): - """Return the network associated with the project.""" + """Return the network associated with the project. + + Raises NotFound if no such network can be found. + + """ return IMPL.project_get_network(context, project_id) |