summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-03-25 18:01:18 +0000
committerGerrit Code Review <review@openstack.org>2013-03-25 18:01:18 +0000
commite52e69126110300151db034fdd0c3d77637c9ac5 (patch)
tree28c1b54bbd7feb216af1c8ab32982e82f4ac2f7c
parent1ee892bb37b7350cef189f2a7335a3c6e14b39b1 (diff)
parent48e81f1554ce41c3d4f7445421d19f4a8128e98d (diff)
downloadnova-essex-eol.tar.gz
Merge "Fixed broken vncproxy flush tokens patch" into stable/essexessex-eol
-rw-r--r--nova/compute/api.py8
-rw-r--r--nova/consoleauth/manager.py9
-rw-r--r--nova/tests/test_compute.py8
3 files changed, 15 insertions, 10 deletions
diff --git a/nova/compute/api.py b/nova/compute/api.py
index a317c447fb..8309fbbb2e 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -1561,12 +1561,14 @@ class API(BaseAPI):
return {'url': connect_info['access_url']}
@wrap_check_policy
- def validate_vnc_console(self, context, instance_id, host, port):
+ def validate_vnc_console(self, context, instance_id, host, port,
+ console_type):
"""Validate VNC Console for an instance."""
instance = self.get(context, instance_id)
output = self._call_compute_message('get_vnc_console',
- context,
- instance)
+ context,
+ instance,
+ params={"console_type": console_type})
return (port == output['port'] and host == output['host'])
@wrap_check_policy
diff --git a/nova/consoleauth/manager.py b/nova/consoleauth/manager.py
index 5690ef3271..507bdc5491 100644
--- a/nova/consoleauth/manager.py
+++ b/nova/consoleauth/manager.py
@@ -84,14 +84,15 @@ class ConsoleAuthManager(manager.Manager):
LOG.audit(_("Received Token: %(token)s, %(token_dict)s)"), locals())
- def _validate_console(self, token):
+ def _validate_console(self, context, token):
console_valid = False
token_dict = self.tokens[token]
try:
console_valid = self.compute_api.validate_vnc_console(context,
- token_dict['instance_uuid'],
+ token_dict['instance_id'],
token_dict['host'],
- token_dict['port'])
+ token_dict['port'],
+ token_dict['console_type'])
except exception.InstanceNotFound:
pass
return console_valid
@@ -99,7 +100,7 @@ class ConsoleAuthManager(manager.Manager):
def check_token(self, context, token):
token_valid = token in self.tokens
LOG.audit(_("Checking Token: %(token)s, %(token_valid)s)"), locals())
- if token_valid and self._validate_console(token):
+ if token_valid and self._validate_console(context, token):
return self.tokens[token]
def delete_tokens_for_instance(self, context, instance_id):
diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py
index 7bd6fcd3a1..bff08a40d0 100644
--- a/nova/tests/test_compute.py
+++ b/nova/tests/test_compute.py
@@ -767,7 +767,8 @@ class ComputeTestCase(BaseTestCase):
console_valid = self.compute_api.validate_vnc_console(self.context,
instance['uuid'],
'myhost',
- '5900')
+ '5900',
+ 'novnc')
self.assertTrue(console_valid)
self.compute.terminate_instance(self.context, instance['uuid'])
@@ -783,7 +784,8 @@ class ComputeTestCase(BaseTestCase):
console_valid = self.compute_api.validate_vnc_console(self.context,
instance['uuid'],
'myhost',
- '5900')
+ '5900',
+ 'novnc')
self.assertFalse(console_valid)
self.compute.terminate_instance(self.context, instance['uuid'])
@@ -793,7 +795,7 @@ class ComputeTestCase(BaseTestCase):
self.compute.run_instance(self.context, instance['uuid'])
self.assertRaises(exception.InstanceNotFound,
self.compute_api.validate_vnc_console,
- self.context, 5555, 'myhost', '5900')
+ self.context, 5555, 'myhost', '5900', 'novnc')
self.compute.terminate_instance(self.context, instance['uuid'])
def test_xvpvnc_vnc_console(self):