<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi,<div><br></div><div>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.&nbsp;</div><div><br></div><div>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:</div><div><div>apache &nbsp; &nbsp; ALL=(ALL) &nbsp; &nbsp; &nbsp; NOPASSWD: /usr/bin/virsh *</div><div><br></div></div><div>Also I encountered some problems with the model section in the KVM template so I commented that out as well.&nbsp;</div><div><br></div><div>Cheers,</div><div><br></div><div>rogier</div><div><br></div><div><a href="http://rogierm.redbee.nl/blog/2010/02/25/one-management-console-show-vnc-display/">ONE Management Console show VNC display</a></div><div><br></div><div><div>--- onemc/include/onemc_funcs.php<span class="Apple-tab-span" style="white-space:pre">        </span>2010-02-25 02:33:04.000000000 +0100</div><div>+++ /var/www/html/onemc/include/onemc_funcs.php<span class="Apple-tab-span" style="white-space:pre">        </span>2010-02-25 02:30:51.000000000 +0100</div><div>@@ -237,11 +237,12 @@</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if (valid('nbridge')) { if ($comma) { $template .= ",\n"; }; $comma = TRUE; $template .= "BRIDGE = \"".$_GET['nbridge']."\" "; }</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if (valid('ntarget')) { if ($comma) { $template .= ",\n"; }; $comma = TRUE; $template .= "TARGET = \"".$_GET['ntarget']."\" "; }</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if (valid('nscript')) { if ($comma) { $template .= ",\n"; }; $comma = TRUE; $template .= "SCRIPT = \"".$_GET['nscript']."\" "; }</div><div>- &nbsp; &nbsp; &nbsp; &nbsp;if (valid('nmodel')) { if ($comma) { $template .= ",\n"; }; $comma = TRUE; $template .= "MODEL = \"".$_GET['nmodel']."\" "; }</div><div>+ &nbsp; &nbsp; &nbsp; &nbsp;//if (valid('nmodel')) { if ($comma) { $template .= ",\n"; }; $comma = TRUE; $template .= "MODEL = \"".$_GET['nmodel']."\" "; }</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; $template .= "]\n";</div><div>+ &nbsp; &nbsp; &nbsp; &nbsp;$template .= "GRAPHICS = [ type = \"vnc\",listen &nbsp;= \"0.0.0.0\"] ";&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; $status = rpc2_request("one.vm.allocate", array($_SESSION['auth'], $template));</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; if (isset($status['failed'])) {</div><div>- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;print "&lt;tr&gt;&lt;td&gt;Err: ".$status['failed']."&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;\n";</div><div>+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;print "&lt;tr&gt;&lt;td&gt;Err: ".$status['failed']." $template&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;\n";</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp;&nbsp; &nbsp; }</div><div>&nbsp;</div><div>@@ -344,9 +345,10 @@</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $vmpool_info = $vmpool_info['VM_POOL'];</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; else</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $vmpool_info = array();</div><div>-</div><div>- &nbsp; &nbsp; &nbsp; &nbsp;print "&lt;tr&gt;&lt;td&gt;Id&lt;/td&gt;&lt;td&gt;User&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;VM State&lt;/td&gt;&lt;td&gt;LCM State&lt;/td&gt;&lt;td&gt;Cpu&lt;/td&gt;&lt;td&gt;Memory&lt;/td&gt;&lt;td&gt;Host&lt;/td&gt;&lt;td&gt;Time&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;\n";</div><div>+ &nbsp; &nbsp; &nbsp; &nbsp;print "&lt;tr&gt;&lt;td&gt;Id&lt;/td&gt;&lt;td&gt;User&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;VM State&lt;/td&gt;&lt;td&gt;LCM State&lt;/td&gt;&lt;td&gt;Cpu&lt;/td&gt;&lt;td&gt;Memory&lt;/td&gt;&lt;td&gt;Host&lt;/td&gt;&lt;td&gt;Time&lt;/td&gt;&lt;td&gt;VNC port&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;\n";</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; foreach ($vmpool_info as $vm) {</div><div>+<span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp; &nbsp;$vnccommand = "sudo /usr/bin/virsh -c remote:///".$vm['HISTORY']['HOSTNAME'] ." vncdisplay one-" . $vm['ID'];</div><div>+<span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp; &nbsp;$vncport = `$vnccommand`;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_vm_state = $vm_state[$vm['STATE']];</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $_lcm_state = $lcm_state[$vm['LCM_STATE']];</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $time = $vm['ETIME'] - $vm['STIME'];</div><div>@@ -357,7 +359,7 @@</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $time = (int)$days."d ".(int)$hours.":".(int)$minutes.":".$seconds;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "&lt;tr&gt;&lt;td&gt;".$vm['ID']."&lt;/td&gt;&lt;td&gt;".$vm['USERNAME']."&lt;/td&gt;&lt;td&gt;".$vm['NAME']."&lt;/td&gt;&lt;td&gt;".$_vm_state."&lt;/td&gt;&lt;td&gt;"</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .$_lcm_state."&lt;/td&gt;&lt;td&gt;".$vm['CPU']."&lt;/td&gt;&lt;td&gt;".$vm['MEMORY']."&lt;/td&gt;&lt;td&gt;".$vm['HISTORY']['HOSTNAME']."&lt;/td&gt;"</div><div>- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;."&lt;td&gt;".$time."&lt;/td&gt;&lt;td&gt;&lt;a href=\"?details=".$vm['ID']."\"&gt;details&lt;/a&gt; "</div><div>+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;."&lt;td&gt;".$time."&lt;/td&gt;&lt;td&gt;$vncport&lt;/td&gt;&lt;td&gt;&lt;a href=\"?details=".$vm['ID']."\"&gt;details&lt;/a&gt; "</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ."&lt;a href=\"?log=".$vm['ID']."\"&gt;log&lt;/a&gt;&lt;/td&gt;";</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print "&lt;td&gt;&lt;form method=\"GET\"&gt;&lt;select name=\"action\"&gt;";</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($_vm_state == "pending") {</div><div><br></div></div></body></html>