[one-users] vnc port in onemc
Jeroen Nijhof
jeroen at nijhofnet.nl
Thu Feb 25 02:55:24 PST 2010
Hi Rogier,
It was one of my things I had to do.
I've to look into it, because onemc is now using the XMLRPC2 api to get
all the information from ONE.
Maybe I can get the current VNC port information from XMLRPC2 or I can
ask or make a patch myself in a way XMLRPC2 does.
Any ideas Ruben?
Thanks for your work so far..
Regards,
Jeroen Nijhof
Op 25/2/2010 schreef "Rogier Mars" <rogier at fortytwo.nl>:
>Hi,
>
>I've made some quick changes to ONEMC to show the VNC port in the
>interface. I've updated the template that onemc creates with a
>GRAPHICS section, enabling vnc on the quest.
>
>As a workaround until ONE can use the VMID in the graphics section, I
>use a virsh command to get the vncport. To get this working the
>webserver user should be allowed to execute the virsh command via
>sudo. Add the following to sudoers:
>apache ALL=(ALL) NOPASSWD: /usr/bin/virsh *
>
>Also I encountered some problems with the model section in the KVM
>template so I commented that out as well.
>
>Cheers,
>
>rogier
>
>ONE Management Console show VNC display
>
>--- onemc/include/onemc_funcs.php 2010-02-25 02:33:04.000000000 +0100
>+++ /var/www/html/onemc/include/onemc_funcs.php 2010-02-25
>02:30:51.000000000 +0100
>@@ -237,11 +237,12 @@
> if (valid('nbridge')) { if ($comma) { $template .= ",\n"; };
>$comma = TRUE; $template .= "BRIDGE = \"".$_GET['nbridge']."\" "; }
> if (valid('ntarget')) { if ($comma) { $template .= ",\n"; };
>$comma = TRUE; $template .= "TARGET = \"".$_GET['ntarget']."\" "; }
> if (valid('nscript')) { if ($comma) { $template .= ",\n"; };
>$comma = TRUE; $template .= "SCRIPT = \"".$_GET['nscript']."\" "; }
>- if (valid('nmodel')) { if ($comma) { $template .= ",\n"; };
>$comma = TRUE; $template .= "MODEL = \"".$_GET['nmodel']."\" "; }
>+ //if (valid('nmodel')) { if ($comma) { $template .= ",\n"; };
>$comma = TRUE; $template .= "MODEL = \"".$_GET['nmodel']."\" "; }
> $template .= "]\n";
>+ $template .= "GRAPHICS = [ type = \"vnc\",listen =
>\"0.0.0.0\"] ";
> $status = rpc2_request("one.vm.allocate",
>array($_SESSION['auth'], $template));
> if (isset($status['failed'])) {
>- print "<tr><td>Err: ".$status['failed']."</td><td></td></
>tr>\n";
>+ print "<tr><td>Err: ".$status['failed']." $template</
>td><td></td></tr>\n";
> }
> }
>
>@@ -344,9 +345,10 @@
> $vmpool_info = $vmpool_info['VM_POOL'];
> else
> $vmpool_info = array();
>-
>- print "<tr><td>Id</td><td>User</td><td>Name</td><td>VM State</
>td><td>LCM State</td><td>Cpu</td><td>Memory</td><td>Host</td><td>Time</
>td><td></td><td></td></tr>\n";
>+ print "<tr><td>Id</td><td>User</td><td>Name</td><td>VM State</
>td><td>LCM State</td><td>Cpu</td><td>Memory</td><td>Host</td><td>Time</
>td><td>VNC port</td><td></td><td></td></tr>\n";
> foreach ($vmpool_info as $vm) {
>+ $vnccommand = "sudo /usr/bin/virsh -c remote:///".$vm['HISTORY']
>['HOSTNAME'] ." vncdisplay one-" . $vm['ID'];
>+ $vncport = `$vnccommand`;
> $_vm_state = $vm_state[$vm['STATE']];
> $_lcm_state = $lcm_state[$vm['LCM_STATE']];
> $time = $vm['ETIME'] - $vm['STIME'];
>@@ -357,7 +359,7 @@
> $time = (int)$days."d ".(int)$hours.":".(int)
>$minutes.":".$seconds;
> print "<tr><td>".$vm['ID']."</td><td>".
>$vm['USERNAME']."</td><td>".$vm['NAME']."</td><td>".$_vm_state."</
>td><td>"
> .$_lcm_state."</td><td>".$vm['CPU']."</td><td>".
>$vm['MEMORY']."</td><td>".$vm['HISTORY']['HOSTNAME']."</td>"
>- ."<td>".$time."</td><td><a href=\"?details=".
>$vm['ID']."\">details</a> "
>+ ."<td>".$time."</td><td>$vncport</td><td><a href=\"?
>details=".$vm['ID']."\">details</a> "
> ."<a href=\"?log=".$vm['ID']."\">log</a></td>";
> print "<td><form method=\"GET\"><select name=\"action\">";
> if ($_vm_state == "pending") {
>
More information about the Users
mailing list