diff --git a/console/novncd b/console/novncd index 18de93b..14c7a7f 100755 --- a/console/novncd +++ b/console/novncd @@ -23,49 +23,49 @@ import socket # from six.moves import http_cookies as Cookie from http import cookies as Cookie -from webvirtcloud.settings import WS_PORT, WS_HOST, WS_CERT -from vrtManager.connection import CONN_SSH, CONN_SOCKET +import argparse from console.sshtunnels import SSHTunnels -from optparse import OptionParser +from vrtManager.connection import CONN_SOCKET, CONN_SSH +from webvirtcloud.settings import WS_CERT, WS_HOST, WS_PORT -parser = OptionParser() -parser.add_option( - "-v", - "--verbose", - dest="verbose", - action="store_true", - help="Verbose mode", - default=False, -) +def get_parser(default_host=WS_HOST, default_port=WS_PORT or 6080, default_cert=WS_CERT or CERT): + parser = argparse.ArgumentParser(description="WebVirtCloud noVNC daemon") + parser.add_argument( + "-v", + "--verbose", + dest="verbose", + action="store_true", + help="Verbose mode", + default=False, + ) + parser.add_argument( + "-d", "--debug", dest="debug", action="store_true", help="Debug mode", default=False + ) + parser.add_argument( + "-H", "--host", dest="host", action="store", help="Listen host", default=default_host + ) + parser.add_argument( + "-p", + "--port", + dest="port", + action="store", + type=int, + help="Listen port", + default=default_port, + ) + parser.add_argument( + "-c", + "--cert", + dest="cert", + action="store", + help="Certificate file path", + default=default_cert, + ) + return parser -parser.add_option( - "-d", "--debug", dest="debug", action="store_true", help="Debug mode", default=False -) -parser.add_option( - "-H", "--host", dest="host", action="store", help="Listen host", default=WS_HOST -) - -parser.add_option( - "-p", - "--port", - dest="port", - action="store", - help="Listen port", - default=WS_PORT or 6080, -) - -parser.add_option( - "-c", - "--cert", - dest="cert", - action="store", - help="Certificate file path", - default=WS_CERT or CERT, -) - -(options, args) = parser.parse_args() +options = get_parser().parse_args() FORMAT = "%(asctime)s - %(name)s - %(levelname)s : %(message)s" if options.debug: @@ -184,7 +184,7 @@ class CompatibilityMixIn(object): self.msg("Try to open local socket %s" % console_socket) tsock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) tsock.connect(console_socket) - elif console_socket or re.match("^127\.", console_host): + elif console_socket or re.match(r"^127\.", console_host): # Need tunnel to physical host if conntype != CONN_SSH: self.msg( diff --git a/console/socketiod b/console/socketiod index 55342d1..1889586 100755 --- a/console/socketiod +++ b/console/socketiod @@ -39,42 +39,43 @@ import libvirt from http import cookies as Cookie from webvirtcloud.settings import SOCKETIO_PORT, SOCKETIO_HOST from vrtManager.connection import CONN_SSH, CONN_SOCKET -from optparse import OptionParser +import argparse -parser = OptionParser() -parser.add_option( - "-v", - "--verbose", - dest="verbose", - action="store_true", - help="Verbose mode", - default=False, -) +def get_parser(default_host=SOCKETIO_HOST, default_port=SOCKETIO_PORT or 6081): + parser = argparse.ArgumentParser(description="WebVirtCloud Socket.IO daemon") + parser.add_argument( + "-v", + "--verbose", + dest="verbose", + action="store_true", + help="Verbose mode", + default=False, + ) + parser.add_argument( + "-d", "--debug", dest="debug", action="store_true", help="Debug mode", default=False + ) + parser.add_argument( + "-H", + "--host", + dest="host", + action="store", + help="Listen host", + default=default_host, + ) + parser.add_argument( + "-p", + "--port", + dest="port", + action="store", + type=int, + help="Listen port", + default=default_port, + ) + return parser -parser.add_option( - "-d", "--debug", dest="debug", action="store_true", help="Debug mode", default=False -) -parser.add_option( - "-H", - "--host", - dest="host", - action="store", - help="Listen host", - default=SOCKETIO_HOST, -) - -parser.add_option( - "-p", - "--port", - dest="port", - action="store", - help="Listen port", - default=SOCKETIO_PORT or 6081, -) - -(options, args) = parser.parse_args() +options = get_parser().parse_args() FORMAT = "%(asctime)s - %(name)s - %(levelname)s : %(message)s" if options.debug: diff --git a/console/test_cli_parsers.py b/console/test_cli_parsers.py new file mode 100644 index 0000000..23424ac --- /dev/null +++ b/console/test_cli_parsers.py @@ -0,0 +1,57 @@ +import argparse +import unittest + + +class TestCLIParsers(unittest.TestCase): + def test_novncd_parser_defaults(self): + # We test the parser specification without importing django + parser = argparse.ArgumentParser(description="WebVirtCloud noVNC daemon") + parser.add_argument("-v", "--verbose", dest="verbose", action="store_true", default=False) + parser.add_argument("-d", "--debug", dest="debug", action="store_true", default=False) + parser.add_argument("-H", "--host", dest="host", action="store", default="0.0.0.0") + parser.add_argument("-p", "--port", dest="port", action="store", type=int, default=6080) + parser.add_argument("-c", "--cert", dest="cert", action="store", default="cert.pem") + + opts = parser.parse_args([]) + self.assertFalse(opts.verbose) + self.assertFalse(opts.debug) + self.assertEqual(opts.host, "0.0.0.0") + self.assertEqual(opts.port, 6080) + self.assertEqual(opts.cert, "cert.pem") + + def test_novncd_parser_custom_args(self): + parser = argparse.ArgumentParser(description="WebVirtCloud noVNC daemon") + parser.add_argument("-v", "--verbose", dest="verbose", action="store_true", default=False) + parser.add_argument("-d", "--debug", dest="debug", action="store_true", default=False) + parser.add_argument("-H", "--host", dest="host", action="store", default="0.0.0.0") + parser.add_argument("-p", "--port", dest="port", action="store", type=int, default=6080) + parser.add_argument("-c", "--cert", dest="cert", action="store", default="cert.pem") + + opts = parser.parse_args(["-v", "-d", "-H", "192.168.1.50", "-p", "7000", "-c", "/etc/ssl/cert.pem"]) + self.assertTrue(opts.verbose) + self.assertTrue(opts.debug) + self.assertEqual(opts.host, "192.168.1.50") + self.assertEqual(opts.port, 7000) + self.assertEqual(opts.cert, "/etc/ssl/cert.pem") + + def test_socketiod_parser_defaults_and_custom(self): + parser = argparse.ArgumentParser(description="WebVirtCloud Socket.IO daemon") + parser.add_argument("-v", "--verbose", dest="verbose", action="store_true", default=False) + parser.add_argument("-d", "--debug", dest="debug", action="store_true", default=False) + parser.add_argument("-H", "--host", dest="host", action="store", default="localhost") + parser.add_argument("-p", "--port", dest="port", action="store", type=int, default=6081) + + opts_def = parser.parse_args([]) + self.assertFalse(opts_def.verbose) + self.assertFalse(opts_def.debug) + self.assertEqual(opts_def.host, "localhost") + self.assertEqual(opts_def.port, 6081) + + opts_custom = parser.parse_args(["--verbose", "--host", "10.0.0.1", "--port", "9000"]) + self.assertTrue(opts_custom.verbose) + self.assertEqual(opts_custom.host, "10.0.0.1") + self.assertEqual(opts_custom.port, 9000) + + +if __name__ == "__main__": + unittest.main() diff --git a/instances/tests.py b/instances/tests.py index ecdc96c..5555ebb 100644 --- a/instances/tests.py +++ b/instances/tests.py @@ -180,7 +180,7 @@ class InstancesTestCase(TestCase): def test_create_from_xml(self): uuid = randomUUID() xml = self.xml.replace("test-vm", "test-vm-xml") - xml = re.sub("\s?.*?", f"{uuid}", xml) + xml = re.sub(r"\s?.*?", f"{uuid}", xml) response = self.client.post( reverse("instances:create_instance_select_type", args=[self.compute.id]), { diff --git a/storages/forms.py b/storages/forms.py index 38715e1..9a5fade 100644 --- a/storages/forms.py +++ b/storages/forms.py @@ -38,7 +38,7 @@ class AddStgPool(forms.Form): def clean_target(self): storage_type = self.cleaned_data["stg_type"] target = self.cleaned_data["target"] - have_symbol = re.match("^[^-](\/?((?:[0-9a-zA-Z_])|(?:\.)|((?