def launch_rv(client_vm, guest_vm, params): """ Launches rv_binary with args based on spice configuration inside client_session on background. remote-viewer will try to connect from vm1 from vm2 @param client_vm - vm object @param guest_vm - vm object @param params """ rv_binary = params.get("rv_binary", "remote-viewer") host_ip = virt_utils.get_ip_address_by_interface(params.get("bridge")) host_port = None display = params.get("display") cmd = rv_binary + " --display=:0.0" ticket = None client_session = client_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) if display == "spice": ticket = guest_vm.get_spice_var("spice_password") if guest_vm.get_spice_var("spice_ssl") == "yes": raise NotImplementedError("spice-ssl") else: host_port = guest_vm.get_spice_var("spice_port") cmd += " spice://%s?port=%s" % (host_ip, host_port) elif display == "vnc": raise NotImplementedError("remote-viewer vnc") else: raise Exception("Unsupported display value") cmd = "nohup " + cmd + " &> /dev/null &" # Launch it on background # Launching the actual set of commands launch_xorg(client_session) wait_timeout() # Wait for Xorg to start up launch_gnome_session(client_session) wait_timeout() # Wait till gnome-session starts up print_rv_version(client_session, rv_binary) logging.info("Launching %s on the client (virtual)", cmd) client_session.cmd(cmd) # client waits for user entry (authentication) if spice_password is set if ticket: wait_timeout() # Wait for remote-viewer to launch send_ticket(client_vm, ticket) wait_timeout() # Wait for conncetion to establish verify_established(client_session, host_ip, host_port, rv_binary)
def __init__(self, test, params, vm): """ Sets class atributes from test parameters. @param test: KVM test object. @param params: Dictionary with test parameters. """ root_dir = test.bindir self.deps_dir = os.path.join(test.virtdir, 'deps') self.unattended_dir = os.path.join(test.virtdir, 'unattended') self.params = params attributes = [ 'kernel_args', 'finish_program', 'cdrom_cd1', 'unattended_file', 'medium', 'url', 'kernel', 'initrd', 'nfs_server', 'nfs_dir', 'install_virtio', 'floppy', 'cdrom_unattended', 'boot_path', 'kernel_params', 'extra_params', 'qemu_img_binary', 'cdkey', 'finish_program', 'vm_type', 'process_check' ] for a in attributes: setattr(self, a, params.get(a, '')) if self.install_virtio == 'yes': v_attributes = [ 'virtio_floppy', 'virtio_storage_path', 'virtio_network_path', 'virtio_oemsetup_id', 'virtio_network_installer' ] for va in v_attributes: setattr(self, va, params.get(va, '')) self.tmpdir = test.tmpdir if getattr(self, 'unattended_file'): self.unattended_file = os.path.join(test.virtdir, self.unattended_file) if getattr(self, 'finish_program'): self.finish_program = os.path.join(test.virtdir, self.finish_program) if getattr(self, 'qemu_img_binary'): if not os.path.isfile(getattr(self, 'qemu_img_binary')): self.qemu_img_binary = os.path.join(root_dir, self.qemu_img_binary) if getattr(self, 'cdrom_cd1'): self.cdrom_cd1 = os.path.join(root_dir, self.cdrom_cd1) self.cdrom_cd1_mount = tempfile.mkdtemp(prefix='cdrom_cd1_', dir=self.tmpdir) if self.medium == 'nfs': self.nfs_mount = tempfile.mkdtemp(prefix='nfs_', dir=self.tmpdir) if getattr(self, 'floppy'): self.floppy = os.path.join(root_dir, self.floppy) if not os.path.isdir(os.path.dirname(self.floppy)): os.makedirs(os.path.dirname(self.floppy)) self.image_path = os.path.dirname(self.kernel) # Content server params # lookup host ip address for first nic by interface name auto_ip = virt_utils.get_ip_address_by_interface(vm.virtnet[0].netdst) self.url_auto_content_ip = params.get('url_auto_ip', auto_ip) self.url_auto_content_port = None # Kickstart server params # use the same IP as url_auto_content_ip, but a different port self.unattended_server_port = None self.vm = vm
def launch_rv(client_vm, guest_vm, params): """ Launches rv_binary with args based on spice configuration inside client_session on background. remote-viewer will try to connect from vm1 from vm2 @param client_vm - vm object @param guest_vm - vm object @param params """ rv_binary = params.get("rv_binary", "remote-viewer") host_ip = virt_utils.get_ip_address_by_interface(params.get("bridge")) host_port = None display = params.get("display") cmd = rv_binary + " --display=:0.0" ticket = None client_session = client_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) if display == "spice": ticket = guest_vm.get_spice_var("spice_password") if guest_vm.get_spice_var("spice_ssl") == "yes": host_port = guest_vm.get_spice_var("spice_tls_port") cacert = "%s/%s" % ( guest_vm.get_spice_var("spice_x509_prefix"), guest_vm.get_spice_var("spice_x509_cacert_file")) #cacert subj is in format for create certificate(with '/' delimiter) #remote-viewer needs ',' delimiter. And also is needed to remove #first character (it's '/') host_subj = guest_vm.get_spice_var("spice_x509_server_subj") host_subj = host_subj.replace('/', ',')[1:] cmd += " spice://%s?tls-port=%s" % (host_ip, host_port) cmd += " --spice-ca-file=%s" % cacert if params.get("spice_client_host_subject") == "yes": cmd += " --spice-host-subject=\"%s\"" % host_subj #client needs cacert file client_session.cmd("rm -rf %s && mkdir -p %s" % (guest_vm.get_spice_var("spice_x509_prefix"), guest_vm.get_spice_var("spice_x509_prefix"))) virt_remote.copy_files_to(client_vm.get_address(), 'scp', params.get("username"), params.get("password"), params.get("shell_port"), cacert, cacert) else: host_port = guest_vm.get_spice_var("spice_port") cmd += " spice://%s?port=%s" % (host_ip, host_port) elif display == "vnc": raise NotImplementedError("remote-viewer vnc") else: raise Exception("Unsupported display value") cmd = "nohup " + cmd + " &> /dev/null &" # Launch it on background # Launching the actual set of commands launch_xorg(client_session) wait_timeout() # Wait for Xorg to start up launch_gnome_session(client_session) wait_timeout() # Wait till gnome-session starts up print_rv_version(client_session, rv_binary) logging.info("Launching %s on the client (virtual)", cmd) job_output = client_session.cmd(cmd) cmd = "disown -h %s" % get_pid(job_output) client_session.cmd(cmd) # client waits for user entry (authentication) if spice_password is set if ticket: wait_timeout() # Wait for remote-viewer to launch send_ticket(client_vm, ticket) wait_timeout() # Wait for conncetion to establish verify_established(client_session, host_ip, host_port, rv_binary)
def __init__(self, test, params, vm): """ Sets class atributes from test parameters. @param test: KVM test object. @param params: Dictionary with test parameters. """ root_dir = test.bindir self.deps_dir = os.path.join(test.virtdir, 'deps') self.unattended_dir = os.path.join(test.virtdir, 'unattended') self.params = params attributes = ['kernel_args', 'finish_program', 'cdrom_cd1', 'unattended_file', 'medium', 'url', 'kernel', 'initrd', 'nfs_server', 'nfs_dir', 'install_virtio', 'floppy_name', 'cdrom_unattended', 'boot_path', 'kernel_params', 'extra_params', 'qemu_img_binary', 'cdkey', 'finish_program', 'vm_type', 'process_check'] for a in attributes: setattr(self, a, params.get(a, '')) if self.install_virtio == 'yes': v_attributes = ['virtio_floppy', 'virtio_storage_path', 'virtio_network_path', 'virtio_oemsetup_id', 'virtio_network_installer'] for va in v_attributes: setattr(self, va, params.get(va, '')) self.tmpdir = test.tmpdir if getattr(self, 'unattended_file'): self.unattended_file = os.path.join(test.virtdir, self.unattended_file) if getattr(self, 'finish_program'): self.finish_program = os.path.join(test.virtdir, self.finish_program) if getattr(self, 'qemu_img_binary'): if not os.path.isfile(getattr(self, 'qemu_img_binary')): self.qemu_img_binary = os.path.join(root_dir, self.qemu_img_binary) if getattr(self, 'cdrom_cd1'): self.cdrom_cd1 = os.path.join(root_dir, self.cdrom_cd1) self.cdrom_cd1_mount = tempfile.mkdtemp(prefix='cdrom_cd1_', dir=self.tmpdir) if self.medium == 'nfs': self.nfs_mount = tempfile.mkdtemp(prefix='nfs_', dir=self.tmpdir) setattr(self, 'floppy', self.floppy_name) if getattr(self, 'floppy'): self.floppy = os.path.join(root_dir, self.floppy) if not os.path.isdir(os.path.dirname(self.floppy)): os.makedirs(os.path.dirname(self.floppy)) self.image_path = os.path.dirname(self.kernel) # Content server params # lookup host ip address for first nic by interface name auto_ip = virt_utils.get_ip_address_by_interface(vm.virtnet[0].netdst) self.url_auto_content_ip = params.get('url_auto_ip', auto_ip) self.url_auto_content_port = None # Kickstart server params # use the same IP as url_auto_content_ip, but a different port self.unattended_server_port = None self.vm = vm
def launch_rv(client_vm, guest_vm, params): """ Launches rv_binary with args based on spice configuration inside client_session on background. remote-viewer will try to connect from vm1 from vm2 @param client_vm - vm object @param guest_vm - vm object @param params """ rv_binary = params.get("rv_binary", "remote-viewer") host_ip = virt_utils.get_ip_address_by_interface(params.get("netdst")) host_port = None display = params.get("display") cmd = rv_binary + " --display=:0.0" ticket = None client_session = client_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) if display == "spice": ticket = guest_vm.get_spice_var("spice_password") if guest_vm.get_spice_var("spice_ssl") == "yes": host_port = guest_vm.get_spice_var("spice_tls_port") cacert = "%s/%s" % (guest_vm.get_spice_var("spice_x509_prefix"), guest_vm.get_spice_var("spice_x509_cacert_file")) #cacert subj is in format for create certificate(with '/' delimiter) #remote-viewer needs ',' delimiter. And also is needed to remove #first character (it's '/') host_subj = guest_vm.get_spice_var("spice_x509_server_subj") host_subj = host_subj.replace('/',',')[1:] cmd += " spice://%s?tls-port=%s" % (host_ip, host_port) cmd += " --spice-ca-file=%s" % cacert if params.get("spice_client_host_subject") == "yes": cmd += " --spice-host-subject=\"%s\"" % host_subj #client needs cacert file client_session.cmd("rm -rf %s && mkdir -p %s" % ( guest_vm.get_spice_var("spice_x509_prefix"), guest_vm.get_spice_var("spice_x509_prefix"))) virt_remote.copy_files_to(client_vm.get_address(), 'scp', params.get("username"), params.get("password"), params.get("shell_port"), cacert, cacert) else: host_port = guest_vm.get_spice_var("spice_port") cmd += " spice://%s?port=%s" % (host_ip, host_port) elif display == "vnc": raise NotImplementedError("remote-viewer vnc") else: raise Exception("Unsupported display value") cmd = "nohup " + cmd + " &> /dev/null &" # Launch it on background # Launching the actual set of commands launch_xorg(client_session) wait_timeout() # Wait for Xorg to start up launch_gnome_session(client_session) wait_timeout() # Wait till gnome-session starts up print_rv_version(client_session, rv_binary) logging.info("Launching %s on the client (virtual)", cmd) client_session.cmd(cmd) # client waits for user entry (authentication) if spice_password is set if ticket: wait_timeout() # Wait for remote-viewer to launch send_ticket(client_vm, ticket) wait_timeout() # Wait for conncetion to establish verify_established(client_session, host_ip, host_port, rv_binary) #prevent from kill remote-viewer after test finish cmd = "disown -ar" client_session.cmd(cmd)