Project

General

Profile

Feature #30225

VNC button for VMs should be Connect button with multiple connection protocols

Added by Warren Block about 2 years ago. Updated about 2 years ago.

Status:
Done
Priority:
Nice to have
Assignee:
Vaibhav Chauhan
Category:
GUI (new)
Estimated time:
Severity:
Reason for Closing:
Reason for Blocked:
Dependent on a related task to be completed
Needs QA:
Yes
Needs Doc:
Yes
Needs Merging:
No
Needs Automation:
No
Support Suite Ticket:
n/a
Hardware Configuration:

Description

VNC is just one method of connecting to a VM. A serial console can also be used, or SSH, or possibly other protocols like RDP.

The VNC button on the VM cards can be replaced with a Connect button with a drop-down list for available protocols like VNC and a serial console. Choosing Console would automatically start a shell and use cu to connect to the correct nmdm serial port for the VM.


Related issues

Related to FreeNAS - Feature #30777: re-attach serial console deviceDone
Has duplicate FreeNAS - Feature #23799: [VM] Add a way to connect to console port via web.Closed2017-05-05
Blocked by FreeNAS - Bug #30870: Ensure shell is killed on connection closeDone

Associated revisions

Revision 7d5b8abd (diff)
Added by Erin Clark about 2 years ago

Make jail shell work Ticket: #30225

History

#1 Updated by Erin Clark about 2 years ago

  • Assignee changed from Erin Clark to Vaibhav Chauhan

#2 Updated by Vaibhav Chauhan about 2 years ago

  • Assignee changed from Vaibhav Chauhan to Warren Block

this is not a bug, I would reclassify this as a feature request. also listing drop-down list for available protocols like VNC and a serial console does not look good at all on card view and frankly it makes much difficult to work with.

I think it's much simpler to think something like this, if NO VNC device is configured, hitting 'connect' connects you shell via serial console, otherwise connect default to use VNC.

and WINDOWS does not work well with serial console, we can configure RDP connectivity with right time.

if we can agree this way of solving this issue, I can try to get this done in 11.2-BETA1,

awaiting you comment.

#3 Updated by Warren Block about 2 years ago

VNC is our default communication protocol for VMs, it is built-in. The others... it would be nice to auto-detect what was enabled, but I'm fine with just having an entry for each communication method we support. For now, that's at least VNC, serial (starting a GUI shell using cu to connect to the known nmdm port), and SSH, prompting for the username and starting a GUI shell to the VM IP address. If the client is not set up for any of these, it will not work, but that is kind of up to the user.

Kris suggested the drop-down on the button, which I thought we had for something else already. It certainly is less cluttered that way than having a button for every option. Putting it another way, multiple buttons for each option don't scale very well. A drop-down for the method followed by a Connect button would also work, it's just nice to tie the elements together visually.

As far as feature or bug, either way works. The only question is scheduling, which will be up to Kris and Erin.

#4 Updated by Vaibhav Chauhan about 2 years ago

  • Tracker changed from Bug to Feature
  • Target version changed from 11.2-BETA1 to 11.2-RC2
  • Seen in deleted (Master - FreeNAS Nightlies)
  • ChangeLog Required deleted (No)

#5 Updated by Warren Block about 2 years ago

  • Assignee changed from Warren Block to Erin Clark

#6 Updated by Vaibhav Chauhan about 2 years ago

  • Assignee changed from Erin Clark to Warren Block

Warren Block wrote:

VNC is our default communication protocol for VMs, it is built-in. The others... it would be nice to auto-detect what was enabled, but I'm fine with just having an entry for each communication method we support. For now, that's at least VNC, serial (starting a GUI shell using cu to connect to the known nmdm port), and SSH, prompting for the username and starting a GUI shell to the VM IP address. If the client is not set up for any of these, it will not work, but that is kind of up to the user.

so if the user configure their Regular VM using new UI, VNC is preconfigured for the enduser, but sadly that is not the case with dockerVM(at least for now),according to marcello, Rancheros uses grub-bhyve and has no support to uefi yet and uefi support needs to be added for adding VNC support.IMHO we should have VNC server available by default so that we have at least one single point of entry for all the users.

Kris suggested the drop-down on the button, which I thought we had for something else already. It certainly is less cluttered that way than having a button for every option. Putting it another way, multiple buttons for each option don't scale very well. A drop-down for the method followed by a Connect button would also work, it's just nice to tie the elements together visually.

we do not intended to clutter the card view with a dropdown. I plan to do something similar to how jail shells are done.

As far as feature or bug, either way works. The only question is scheduling, which will be up to Kris and Erin.

#7 Updated by Vaibhav Chauhan about 2 years ago

  • Assignee changed from Warren Block to Erin Clark

oops I just realized that I changed the assignee :P

#8 Updated by Warren Block about 2 years ago

The standard name for the type of button we have been trying to describe is a "split" button, as demonstrated here: https://www.telerik.com/kendo-angular-ui/components/buttons/splitbutton/

#9 Updated by Vaibhav Chauhan about 2 years ago

I would rather take user to a new page which lists VNC, serial, RDP or any other protocol, when they click on "connect" button users can then connect using desired protocols from that list.doing a list view allows me to implement edit/add/delete protocols from connect page.

I am not in favor of using "split" button as it narrows my ability to implement edit/add/delete protocols from a single page.

#10 Avatar?id=14398&size=24x24 Updated by Kris Moore about 2 years ago

VB - I'm not sure why we'd want a new page here, that seems like more difficult work than just a split button. I think part of the issue is wording here. So what we are thinking is this:

Where the current "VNC" button is that launches VNC. It currently launches VNC in a new tab. Instead of adding a new button for "Terminal/Console" we would replace that with a split-button which when you click it, lists VNC / Console (for terminal) or possibly Serial at some later point.

The page where you add/remove VNC/Serial and the like should still be on the edit page for bhyve settings. Does that make more sense? It seems cleaner to me than forcing the user to yet another page before they can simple launch VNC/Terminal.

#11 Updated by Vaibhav Chauhan about 2 years ago

I will have to talk to team to see if we can implement this split button or not as I am not able to see if split button is supported by angular material design yet.

I think we can implement similar functionality using a select button, if making split button takes considerable amount of work or if it's not possible at all.

#12 Updated by Vaibhav Chauhan about 2 years ago

we will be using in exsiting material menu design, https://material.angular.io/components/menu/overview ty Erin for finding this much simpler approach.

#13 Updated by Warren Block about 2 years ago

That looks like it will work fine, and would work for the run button, too (with start/stop/restart).

I don't think it is necessary to dynamically show which connection types are supported. It would be nice, but there is no easy way to find out which VM supports which. For example, even if we know that a VM supports SSH, it might not have started sshd yet when the user clicks. So just show a static list. We know VNC is supported, at least on some VMs (UEFI), so maybe that protocol entry can be dynamic. For Serial Console and SSH, just show them, and we can caution in the docs that they will only work if the VM environment supports them and has something running to make the connection work.

#14 Updated by Erin Clark about 2 years ago

  • Assignee changed from Erin Clark to Vaibhav Chauhan

#15 Updated by Vaibhav Chauhan about 2 years ago

  • Status changed from Not Started to In Progress

#16 Updated by Vaibhav Chauhan about 2 years ago

so what it looks like I we will have this issue where we are able to connect to serial console for second time console ONLY after we kill the existing serial connection.

cu -l /dev/nmdm49B
[root@freenas-vb ~]# cu -l /dev/nmdm49B
all ports busy
[root@freenas-vb ~]# ps aux | grep /dev/nmdm49
[root@freenas-vb ~]# ps aux | grep nmdm49
[root@freenas-vb ~]# ps aux | grep nmdm
[root@freenas-vb ~]# ps aux | grep cu
root       35249   0.0  0.0    6304   2220 22  I+   14:09      0:00.00 cu -l /d
root       35250   0.0  0.0    6304   2216 22  I+   14:09      0:00.00 cu -l /d
root       35817   0.0  0.0    6696   2572 23  S+   14:24      0:00.00 grep cu
[root@freenas-vb ~]# kill -9 35249
[root@freenas-vb ~]# kill -9 35250;



=====REFRESH vm screen=====

[root@freenas-vb ~]# cu -l /dev/nmdm49B
Stale lock on nmdm49B PID=35249... overriding.
Connected

======HIT=RETURNkey===

[rancher@rancher ~]$
[rancher@rancher ~]$

=====REFRESH vm screen=====

cu -l /dev/nmdm49B
[root@freenas-vb ~]# cu -l /dev/nmdm49B
all ports busy
[root@freenas-vb ~]# ps aux | grep cu
root       35861   0.0  0.0    6304   2220 24  I+   14:25      0:00.00 cu -l /d
root       35862   0.0  0.0    6304   2216 24  I+   14:25      0:00.00 cu -l /d
root       35900   0.0  0.0    6696   2572 25  S+   14:27      0:00.00 grep cu
[root@freenas-vb ~]# kill -9 35861;kill -9 35862
[root@freenas-vb ~]#

=====REFRESH vm screen=====

cu -l /dev/nmdm49B
[root@freenas-vb ~]# cu -l /dev/nmdm49B
Stale lock on nmdm49B PID=35861... overriding.
Connected

======HIT=RETURNkey===
[rancher@rancher ~]$

#17 Updated by Vaibhav Chauhan about 2 years ago

#18 Updated by Vaibhav Chauhan about 2 years ago

  • Related to deleted (Feature #30777: re-attach serial console device)

#19 Updated by Vaibhav Chauhan about 2 years ago

#20 Updated by Erin Clark about 2 years ago

  • Target version changed from 11.2-RC2 to 11.2-BETA1

#21 Updated by Dru Lavigne about 2 years ago

  • Status changed from In Progress to Blocked
  • Reason for Blocked set to Dependent on a related task to be completed

#22 Updated by Dru Lavigne about 2 years ago

  • Blocked by Bug #30870: Ensure shell is killed on connection close added

#24 Updated by Vaibhav Chauhan about 2 years ago

  • Assignee changed from Vaibhav Chauhan to Erin Clark

please test this changed in tomorrow's nightlies.

#25 Updated by Dru Lavigne about 2 years ago

  • Status changed from Blocked to Not Started
  • Needs Merging changed from Yes to No

#26 Updated by Dru Lavigne about 2 years ago

  • Status changed from Not Started to In Progress

#27 Updated by Dru Lavigne about 2 years ago

  • Target version changed from 11.2-BETA1 to Master - FreeNAS Nightlies

#28 Updated by Dru Lavigne about 2 years ago

  • Assignee changed from Erin Clark to Vaibhav Chauhan

Notes that this can't be marked done until the blocker is completed.

#29 Updated by Vaibhav Chauhan about 2 years ago

  • Blocked by deleted (Feature #30777: re-attach serial console device)

#30 Updated by Vaibhav Chauhan about 2 years ago

  • Status changed from In Progress to Done

#31 Updated by Dru Lavigne about 2 years ago

#32 Updated by Dru Lavigne almost 2 years ago

  • Has duplicate Feature #23799: [VM] Add a way to connect to console port via web. added

Also available in: Atom PDF