From 1a812dfe45616abe8b3500820cafa2deceff0e89 Mon Sep 17 00:00:00 2001 From: Eric Schultz Date: Thu, 25 Jan 2018 10:28:28 -0600 Subject: [PATCH] vm manager: consolidate logic to determine vm icon url + fix vm icon display for custom icons --- plugins/dynamix.vm.manager/VMMachines.page | 15 ++------------- plugins/dynamix.vm.manager/VMedit.php | 15 ++------------- .../dynamix.vm.manager/classes/libvirt.php | 19 +++++++++++++++++++ plugins/dynamix/DashboardApps.page | 12 +----------- 4 files changed, 24 insertions(+), 37 deletions(-) diff --git a/plugins/dynamix.vm.manager/VMMachines.page b/plugins/dynamix.vm.manager/VMMachines.page index b3fb54d9d..fe802650a 100644 --- a/plugins/dynamix.vm.manager/VMMachines.page +++ b/plugins/dynamix.vm.manager/VMMachines.page @@ -214,17 +214,7 @@ if ($action) { $contextMenus[] = sprintf("addVMContext('%s', '%s', '%s', '%s', '%s', '%s');", addslashes($name), addslashes($uuid), addslashes($template), $state, addslashes($vnc), addslashes($log)); - // fallback icon for users that created VMs before metadata support was added - $vmicon = '/plugins/dynamix.vm.manager/templates/images/' . ($lv->domain_get_clock_offset($res) == 'localtime' ? 'windows.png' : 'linux.png'); - - $vmtemplateicon = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@icon'); - if (!empty($vmtemplateicon)) { - if (file_exists($vmtemplateicon)) { - $vmicon = $vmtemplateicon; - } elseif (file_exists("$docroot/plugins/dynamix.vm.manager/templates/images/".$vmtemplateicon)) { - $vmicon = "/plugins/dynamix.vm.manager/templates/images/".$vmtemplateicon; - } - } + $vmicon = $lv->domain_get_icon_url($res); //Domain information echo " @@ -246,8 +236,7 @@ if ($action) { // Log file if (!empty($log)) { - echo ""; + echo ""; } else { echo ""; } diff --git a/plugins/dynamix.vm.manager/VMedit.php b/plugins/dynamix.vm.manager/VMedit.php index 63995a214..7ea861cb4 100644 --- a/plugins/dynamix.vm.manager/VMedit.php +++ b/plugins/dynamix.vm.manager/VMedit.php @@ -38,22 +38,11 @@ if (!empty($_GET['uuid'])) { return; } - $strIcon = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@icon'); - - if (!empty($strIcon)) { - if (is_file($strIcon)) { - $strIconURL = $strIcon; - } elseif (is_file("$docroot/plugins/dynamix.vm.manager/templates/images/" . $strIcon)) { - $strIconURL = '/plugins/dynamix.vm.manager/templates/images/' . $strIcon; - } - } else { - $strIcon = ($lv->domain_get_clock_offset($res) == 'localtime' ? 'windows.png' : 'linux.png'); - $strIconURL = '/plugins/dynamix.vm.manager/templates/images/' . $strIcon; - } + $strIconURL = $lv->domain_get_icon_url($res); $arrLoad = [ 'name' => $lv->domain_get_name($res), - 'icon' => $strIcon, + 'icon' => basename($strIconURL), 'autostart' => $lv->domain_get_autostart($res), 'form' => $arrAllTemplates[$strSelectedTemplate]['form'] ]; diff --git a/plugins/dynamix.vm.manager/classes/libvirt.php b/plugins/dynamix.vm.manager/classes/libvirt.php index e72366ab4..f0b4b668c 100644 --- a/plugins/dynamix.vm.manager/classes/libvirt.php +++ b/plugins/dynamix.vm.manager/classes/libvirt.php @@ -1244,6 +1244,25 @@ return ($tmp) ? $tmp : $this->_set_last_error(); } + function domain_get_icon_url($domain) { + global $docroot; + + $strIcon = $this->_get_single_xpath_result($domain, '//domain/metadata/*[local-name()=\'vmtemplate\']/@icon'); + if (empty($strIcon)) { + $strIcon = ($this->domain_get_clock_offset($domain) == 'localtime' ? 'windows.png' : 'linux.png'); + } + + if (is_file($strIcon)) { + return $strIcon; + } elseif (is_file("$docroot/plugins/dynamix.vm.manager/templates/images/" . $strIcon)) { + return '/plugins/dynamix.vm.manager/templates/images/' . $strIcon; + } elseif (is_file("$docroot/boot/config/plugins/dynamix.vm.manager/templates/images/" . $strIcon)) { + return '/boot/config/plugins/dynamix.vm.manager/templates/images/' . $strIcon; + } + + return '/plugins/dynamix.vm.manager/templates/images/default.png'; + } + function domain_change_xml($domain, $xml) { $dom = $this->get_domain_object($domain); diff --git a/plugins/dynamix/DashboardApps.page b/plugins/dynamix/DashboardApps.page index efde9e69b..379376092 100644 --- a/plugins/dynamix/DashboardApps.page +++ b/plugins/dynamix/DashboardApps.page @@ -142,17 +142,7 @@ foreach ($allVMs as $name) { $contextMenus[] = sprintf("addVMContext('%s', '%s', '%s', '%s', '%s', '%s');", addslashes($name), addslashes($uuid), addslashes($template), $state, addslashes($vnc), addslashes($log)); - // fallback icon for users that created VMs before metadata support was added - $vmicon = '/plugins/dynamix.vm.manager/templates/images/' . ($lv->domain_get_clock_offset($res) == 'localtime' ? 'windows.png' : 'linux.png'); - - $vmtemplateicon = $lv->_get_single_xpath_result($res, '//domain/metadata/*[local-name()=\'vmtemplate\']/@icon'); - if (!empty($vmtemplateicon)) { - if (file_exists($vmtemplateicon)) { - $vmicon = $vmtemplateicon; - } elseif (file_exists("$docroot/plugins/dynamix.vm.manager/templates/images/" . $vmtemplateicon)) { - $vmicon = '/plugins/dynamix.vm.manager/templates/images/' . $vmtemplateicon; - } - } + $vmicon = $lv->domain_get_icon_url($res); print "