From 71410724cd1516608ee58c37077bf9080da38de2 Mon Sep 17 00:00:00 2001 From: Thierry Carrez Date: Tue, 7 Feb 2012 16:37:34 +0100 Subject: Remove ajaxterm from Nova Removes copy of ajaxterm code, nova-ajax-console-proxy, and support for get_ajax_console from Nova proper. Implements blueprint remove-ajaxterm Fixes bug 917963 Change-Id: I2c0ff427c53c0f63a18b10475d6b4cbe9a085d83 --- nova/compute/api.py | 13 ------------- nova/compute/manager.py | 9 --------- nova/flags.py | 9 --------- nova/tests/fake_libvirt_utils.py | 4 ---- nova/tests/policy.json | 1 - nova/tests/test_compute.py | 21 --------------------- nova/tests/test_libvirt.py | 14 -------------- nova/tests/test_virt_drivers.py | 8 -------- nova/tests/test_vmwareapi.py | 3 --- nova/virt/driver.py | 4 ---- nova/virt/fake.py | 5 ----- nova/virt/libvirt/connection.py | 26 -------------------------- nova/virt/libvirt/utils.py | 12 ------------ nova/virt/vmwareapi/vmops.py | 4 ---- nova/virt/vmwareapi_conn.py | 4 ---- nova/virt/xenapi/vmops.py | 5 ----- nova/virt/xenapi_conn.py | 6 +----- 17 files changed, 1 insertion(+), 147 deletions(-) (limited to 'nova') diff --git a/nova/compute/api.py b/nova/compute/api.py index f54d184dd..2f4d3e200 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -1573,19 +1573,6 @@ class API(base.Base): self._cast_compute_message('inject_file', context, instance, params=params) - @wrap_check_policy - def get_ajax_console(self, context, instance): - """Get a url to an AJAX Console.""" - output = self._call_compute_message('get_ajax_console', - context, - instance) - rpc.cast(context, '%s' % FLAGS.ajax_console_proxy_topic, - {'method': 'authorize_ajax_console', - 'args': {'token': output['token'], 'host': output['host'], - 'port': output['port']}}) - return {'url': '%s/?token=%s' % (FLAGS.ajax_console_proxy_url, - output['token'])} - @wrap_check_policy def get_vnc_console(self, context, instance, console_type): """Get a url to an instance Console.""" diff --git a/nova/compute/manager.py b/nova/compute/manager.py index e5600af32..c7cd1baaf 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -1551,15 +1551,6 @@ class ComputeManager(manager.SchedulerDependentManager): else: return '\n'.join(log.split('\n')[-int(length):]) - @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) - @wrap_instance_fault - def get_ajax_console(self, context, instance_uuid): - """Return connection information for an ajax console.""" - context = context.elevated() - LOG.debug(_("instance %s: getting ajax console"), instance_uuid) - instance_ref = self.db.instance_get_by_uuid(context, instance_uuid) - return self.driver.get_ajax_console(instance_ref) - @exception.wrap_exception(notifier=notifier, publisher_id=publisher_id()) @wrap_instance_fault def get_vnc_console(self, context, instance_uuid, console_type): diff --git a/nova/flags.py b/nova/flags.py index 3f3560057..a76a2328c 100644 --- a/nova/flags.py +++ b/nova/flags.py @@ -250,15 +250,6 @@ global_opts = [ cfg.StrOpt('network_topic', default='network', help='the topic network nodes listen on'), - cfg.StrOpt('ajax_console_proxy_topic', - default='ajax_proxy', - help='the topic ajax proxy nodes listen on'), - cfg.StrOpt('ajax_console_proxy_url', - default='http://127.0.0.1:8000', - help='URL of ajax console proxy, in the form http://host:port'), - cfg.IntOpt('ajax_console_proxy_port', - default=8000, - help='port that ajax_console_proxy binds'), cfg.StrOpt('vsa_topic', default='vsa', help='the topic that nova-vsa service listens on'), diff --git a/nova/tests/fake_libvirt_utils.py b/nova/tests/fake_libvirt_utils.py index 27b753a64..726e28a1d 100644 --- a/nova/tests/fake_libvirt_utils.py +++ b/nova/tests/fake_libvirt_utils.py @@ -93,10 +93,6 @@ def get_open_port(start_port, end_port): return int((start_port + end_port) / 2) -def run_ajaxterm(cmd, token, port): - pass - - def get_fs_info(path): return {'total': 128 * (1024 ** 3), 'used': 44 * (1024 ** 3), diff --git a/nova/tests/policy.json b/nova/tests/policy.json index 4175d758e..99a97bba5 100644 --- a/nova/tests/policy.json +++ b/nova/tests/policy.json @@ -20,7 +20,6 @@ "compute:lock": [], "compute:unlock": [], - "compute:get_ajax_console": [], "compute:get_vnc_console": [], "compute:get_console_output": [], diff --git a/nova/tests/test_compute.py b/nova/tests/test_compute.py index d99aed310..221f86fe7 100644 --- a/nova/tests/test_compute.py +++ b/nova/tests/test_compute.py @@ -724,16 +724,6 @@ class ComputeTestCase(BaseTestCase): self.assertEqual(output, 'ANOTHER\nLAST LINE') self.compute.terminate_instance(self.context, instance['uuid']) - def test_ajax_console(self): - """Make sure we can get console output from instance""" - instance = self._create_fake_instance() - self.compute.run_instance(self.context, instance['uuid']) - - console = self.compute.get_ajax_console(self.context, - instance['uuid']) - self.assert_(set(['token', 'host', 'port']).issubset(console.keys())) - self.compute.terminate_instance(self.context, instance['uuid']) - def test_novnc_vnc_console(self): """Make sure we can a vnc console for an instance.""" instance = self._create_fake_instance() @@ -2990,17 +2980,6 @@ class ComputeAPITestCase(BaseTestCase): 'novnc') self.compute_api.delete(self.context, instance) - def test_ajax_console(self): - """Make sure we can an ajax console for an instance.""" - def ajax_rpc_call_wrapper(*args, **kwargs): - return {'token': 'asdf', 'host': '0.0.0.0', 'port': 8080} - - self.stubs.Set(rpc, 'call', ajax_rpc_call_wrapper) - - instance = self._create_fake_instance() - console = self.compute_api.get_ajax_console(self.context, instance) - self.compute_api.delete(self.context, instance) - def test_console_output(self): instance = self._create_fake_instance() console = self.compute_api.get_console_output(self.context, instance) diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index 72c9f8802..61d920ff1 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -1925,20 +1925,6 @@ disk size: 4.4M''', '')) finally: os.unlink(dst_path) - def test_run_ajaxterm(self): - self.mox.StubOutWithMock(utils, 'execute') - token = 's3cr3tt0ken' - shell_cmd = 'shell-cmd.py' - port = 2048 - utils.execute(mox.IgnoreArg(), - '--command', shell_cmd, - '-t', token, - '-p', port) - - # Start test - self.mox.ReplayAll() - libvirt_utils.run_ajaxterm(shell_cmd, token, port) - def test_get_fs_info(self): # Use a 1024-byte block size (df -k) because OS X does not support # the -B flag diff --git a/nova/tests/test_virt_drivers.py b/nova/tests/test_virt_drivers.py index 2cda7a61e..43dde697d 100644 --- a/nova/tests/test_virt_drivers.py +++ b/nova/tests/test_virt_drivers.py @@ -288,14 +288,6 @@ class _VirtDriverTestCase(test.TestCase): console_output = self.connection.get_console_output(instance_ref) self.assertTrue(isinstance(console_output, basestring)) - @catch_notimplementederror - def test_get_ajax_console(self): - instance_ref, network_info = self._get_running_instance() - ajax_console = self.connection.get_ajax_console(instance_ref) - self.assertIn('token', ajax_console) - self.assertIn('host', ajax_console) - self.assertIn('port', ajax_console) - @catch_notimplementederror def test_get_vnc_console(self): instance_ref, network_info = self._get_running_instance() diff --git a/nova/tests/test_vmwareapi.py b/nova/tests/test_vmwareapi.py index a1d0af440..bf8bcbe2f 100644 --- a/nova/tests/test_vmwareapi.py +++ b/nova/tests/test_vmwareapi.py @@ -259,6 +259,3 @@ class VMWareAPIVMTestCase(test.TestCase): def test_get_console_output(self): pass - - def test_get_ajax_console(self): - pass diff --git a/nova/virt/driver.py b/nova/virt/driver.py index d87a7286a..34ce9613b 100644 --- a/nova/virt/driver.py +++ b/nova/virt/driver.py @@ -191,10 +191,6 @@ class ComputeDriver(object): # TODO(Vek): Need to pass context in for access to auth_token raise NotImplementedError() - def get_ajax_console(self, instance): - # TODO(Vek): Need to pass context in for access to auth_token - raise NotImplementedError() - def get_vnc_console(self, instance): # TODO(Vek): Need to pass context in for access to auth_token raise NotImplementedError() diff --git a/nova/virt/fake.py b/nova/virt/fake.py index ff8da4724..ef3d392ba 100644 --- a/nova/virt/fake.py +++ b/nova/virt/fake.py @@ -219,11 +219,6 @@ class FakeConnection(driver.ComputeDriver): def get_console_output(self, instance): return 'FAKE CONSOLE OUTPUT\nANOTHER\nLAST LINE' - def get_ajax_console(self, instance): - return {'token': 'FAKETOKEN', - 'host': 'fakeajaxconsole.com', - 'port': 6969} - def get_vnc_console(self, instance): return {'internal_access_path': 'FAKE', 'host': 'fakevncconsole.com', diff --git a/nova/virt/libvirt/connection.py b/nova/virt/libvirt/connection.py index 37ad07736..ac3d1fb41 100644 --- a/nova/virt/libvirt/connection.py +++ b/nova/virt/libvirt/connection.py @@ -102,9 +102,6 @@ libvirt_opts = [ cfg.BoolOpt('use_cow_images', default=True, help='Whether to use cow images'), - cfg.StrOpt('ajaxterm_portrange', - default='10000-12000', - help='Range of ports that ajaxterm should try to bind'), cfg.StrOpt('cpuinfo_xml_template', default=utils.abspath('virt/cpuinfo.xml.template'), help='CpuInfo XML Template (Used only live migration now)'), @@ -777,29 +774,6 @@ class LibvirtConnection(driver.ComputeDriver): return libvirt_utils.load_file(fpath) - @exception.wrap_exception() - def get_ajax_console(self, instance): - def get_pty_for_instance(instance_name): - virt_dom = self._lookup_by_name(instance_name) - xml = virt_dom.XMLDesc(0) - dom = minidom.parseString(xml) - - for serial in dom.getElementsByTagName('serial'): - if serial.getAttribute('type') == 'pty': - source = serial.getElementsByTagName('source')[0] - return source.getAttribute('path') - - start_port, end_port = FLAGS.ajaxterm_portrange.split("-") - port = libvirt_utils.get_open_port(int(start_port), int(end_port)) - token = str(uuid.uuid4()) - host = instance['host'] - - ajaxterm_cmd = 'sudo netcat - %s' \ - % get_pty_for_instance(instance['name']) - - libvirt_utils.run_ajaxterm(ajaxterm_cmd, token, port) - return {'token': token, 'host': host, 'port': port} - @staticmethod def get_host_ip_addr(): return FLAGS.my_ip diff --git a/nova/virt/libvirt/utils.py b/nova/virt/libvirt/utils.py index f96128124..7b0e85f38 100644 --- a/nova/virt/libvirt/utils.py +++ b/nova/virt/libvirt/utils.py @@ -237,18 +237,6 @@ def get_open_port(start_port, end_port): raise Exception(_('Unable to find an open port')) -def run_ajaxterm(cmd, token, port): - """Run ajaxterm - - :param cmd: Command to connect to - :param token: Token to require for authentication - :param port: Port to run on - """ - cmd = ['%s/tools/ajaxterm/ajaxterm.py' % utils.novadir(), - '--command', cmd, '-t', token, '-p', port] - execute(*cmd) - - def get_fs_info(path): """Get free/used/total space info for a filesystem diff --git a/nova/virt/vmwareapi/vmops.py b/nova/virt/vmwareapi/vmops.py index af867dc6a..39d24479f 100644 --- a/nova/virt/vmwareapi/vmops.py +++ b/nova/virt/vmwareapi/vmops.py @@ -719,10 +719,6 @@ class VMWareVMOps(object): else: return "" - def get_ajax_console(self, instance): - """Return link to instance's ajax console.""" - return 'http://fakeajaxconsole/fake_url' - def _set_machine_id(self, client_factory, instance, network_info): """ Set the machine id of the VM for guest tools to pick up and reconfigure diff --git a/nova/virt/vmwareapi_conn.py b/nova/virt/vmwareapi_conn.py index 909969fac..7275b363e 100644 --- a/nova/virt/vmwareapi_conn.py +++ b/nova/virt/vmwareapi_conn.py @@ -174,10 +174,6 @@ class VMWareESXConnection(driver.ComputeDriver): """Return snapshot of console.""" return self._vmops.get_console_output(instance) - def get_ajax_console(self, instance): - """Return link to instance's ajax console.""" - return self._vmops.get_ajax_console(instance) - def get_volume_connector(self, _instance): """Return volume connector information""" # TODO(vish): When volume attaching is supported, return the diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py index c2960b86a..30d77369b 100644 --- a/nova/virt/xenapi/vmops.py +++ b/nova/virt/xenapi/vmops.py @@ -1425,11 +1425,6 @@ class VMOps(object): # TODO: implement this to fix pylint! return 'FAKE CONSOLE OUTPUT of instance' - def get_ajax_console(self, instance): - """Return link to instance's ajax console.""" - # TODO: implement this! - return 'http://fakeajaxconsole/fake_url' - def get_vnc_console(self, instance): """Return connection info for a vnc console.""" vm_ref = self._get_vm_opaque_ref(instance) diff --git a/nova/virt/xenapi_conn.py b/nova/virt/xenapi_conn.py index e034cb3ca..bbbc62df7 100644 --- a/nova/virt/xenapi_conn.py +++ b/nova/virt/xenapi_conn.py @@ -337,12 +337,8 @@ class XenAPIConnection(driver.ComputeDriver): """Return snapshot of console""" return self._vmops.get_console_output(instance) - def get_ajax_console(self, instance): - """Return link to instance's ajax console""" - return self._vmops.get_ajax_console(instance) - def get_vnc_console(self, instance): - """Return link to instance's ajax console""" + """Return link to instance's VNC console""" return self._vmops.get_vnc_console(instance) def get_volume_connector(self, _instance): -- cgit