mirror of
https://github.com/unraid/webgui.git
synced 2026-01-15 06:00:14 -06:00
Merge pull request #1541 from bergware/master
rc.libvirt: skip non-existing XML files
This commit is contained in:
@@ -86,7 +86,7 @@ function port_name($port) {
|
||||
return substr($port,-2)!='n1' ? $port : substr($port,0,-2);
|
||||
}
|
||||
function exceed($value, $limit, $top=100) {
|
||||
return $limit>0 ? ($value>$limit && $value<=$top) : false;
|
||||
return is_numeric($value) && $limit>0 ? ($value>$limit && $value<=$top) : false;
|
||||
}
|
||||
function ipaddr($ethX='eth0', $prot=4) {
|
||||
global $$ethX;
|
||||
|
||||
@@ -163,7 +163,7 @@ function device_status(&$disk, &$error, &$warning) {
|
||||
function device_temp(&$disk, &$red, &$orange) {
|
||||
global $display;
|
||||
$spin = strpos(_var($disk,'color'),'blink')===false;
|
||||
$temp = _var($disk,'temp','*');
|
||||
$temp = _var($disk,'temp');
|
||||
$dev = _var($disk,'device');
|
||||
$nvme = _var($disk,'transport')=='nvme';
|
||||
[$hotNVME,$maxNVME] = $nvme ? get_nvme_info($dev,'temp') : [-1,-1];
|
||||
@@ -171,12 +171,12 @@ function device_temp(&$disk, &$red, &$orange) {
|
||||
$max = _var($disk,'maxTemp',-1)>=0 ? $disk['maxTemp'] : ($maxNVME>=0 ? $maxNVME : (_var($disk,'rotational',1)==0 && $display['maxssd']>=0 ? $display['maxssd'] : $display['max']));
|
||||
$top = $display['top'] ?? 120;
|
||||
$color= 'green';
|
||||
if (exceed($temp,$max,$top)) {
|
||||
if (exceed($temp,$max,$top) || (is_numeric($temp) && $temp<0)) {
|
||||
$color = 'red'; $red++;
|
||||
} elseif (exceed($temp,$hot,$top)) {
|
||||
$color = 'orange'; $orange++;
|
||||
}
|
||||
return (($spin && $temp>0) ? "<span class='$color-text'>".my_temp($temp)."</span>" : "*").($nvme ? my_power($dev) : "");
|
||||
return ($spin ? "<span class='$color-text'>".my_temp($temp)."</span>" : "*").($nvme ? my_power($dev) : "");
|
||||
}
|
||||
function device_smart(&$disk, &$fail, &$smart) {
|
||||
global $numbers,$saved;
|
||||
@@ -192,7 +192,8 @@ function device_smart(&$disk, &$fail, &$smart) {
|
||||
$text = _('healthy');
|
||||
$color = 'green';
|
||||
$file = "state/smart/$name";
|
||||
if (file_exists("$file") && exec("grep -Pom1 '^SMART.*: \K[A-Z]+' ".escapeshellarg($file)." |tr -d '\n' 2>/dev/null", $ssa) && in_array("$ssa",$failed)) {
|
||||
$ssa = file_exists($file) ? exec("grep -Pom1 '^SMART.+: \K[A-Z]+' ".escapeshellarg($file)) : "";
|
||||
if (in_array($ssa,$failed)) {
|
||||
$title = _('SMART health-check failed')."\n"; $thumb = 'thumbs-o-down'; $color = 'red'; $text = 'fail'; $fail++;
|
||||
} else {
|
||||
if (empty($saved["smart"]["$named.ack"])) {
|
||||
|
||||
@@ -66,7 +66,10 @@
|
||||
# - added interface carrier check before assigning IP address (DHCP or static)
|
||||
# - added "status" command
|
||||
|
||||
# Bergware - modified for Unraid OS, October 2023
|
||||
# Adapted by Bergware for use in Unraid OS - December 2023
|
||||
# - added functions to remove leading zeros in IPv4 and IPv6 addresses
|
||||
|
||||
# Bergware - modified for Unraid OS, December 2023
|
||||
|
||||
###########
|
||||
# LOGGING #
|
||||
@@ -137,6 +140,19 @@ lo_down(){
|
||||
# INTERFACE FUNCTIONS #
|
||||
#######################
|
||||
|
||||
# function to remove leading zeros in IPv4 address
|
||||
unzero(){
|
||||
local M Q
|
||||
echo -n $(for Q in ${1//./ }; do printf "$M%x" "0x$Q"; M=.; done)
|
||||
}
|
||||
|
||||
# function to remove leading zeros in IPv6 address
|
||||
unzero6(){
|
||||
local A M Q
|
||||
A=${1/::/:-:}
|
||||
echo -n $(for Q in ${A//:/ }; do [[ $Q != - ]] && printf "$M%x" "0x$Q" || printf ":"; M=:; done)
|
||||
}
|
||||
|
||||
# function to get link mtu size
|
||||
get_mtu(){
|
||||
ip link show $1 | grep -Po 'mtu \K\d+'
|
||||
@@ -377,14 +393,14 @@ ipaddr_up(){
|
||||
[[ $j -eq 0 ]] && ADDR=${IPADDR[$i]} || ADDR=${IPADDR[$i,$j]}
|
||||
if [[ -n $ADDR ]]; then
|
||||
[[ $j -eq 0 ]] && MASK=${NETMASK[$i]} || MASK=${NETMASK[$i,$j]}
|
||||
[[ -n $MASK ]] && run ip -4 addr add $ADDR/$MASK dev $IFACE metric 1
|
||||
[[ -n $MASK ]] && run ip -4 addr add $(unzero $ADDR)/$MASK dev $IFACE metric 1
|
||||
fi
|
||||
fi
|
||||
if [[ $IP != ipv4 ]]; then
|
||||
[[ $j -eq 0 ]] && ADDR6=${IPADDR6[$i]} || ADDR6=${IPADDR6[$i,$j]}
|
||||
if [[ -n $ADDR6 ]]; then
|
||||
[[ $j -eq 0 ]] && MASK6=${NETMASK6[$i]} || MASK6=${NETMASK6[$i,$j]}
|
||||
[[ -n $MASK6 ]] && run ip -6 addr add $ADDR6/$MASK6 dev $IFACE metric 1
|
||||
[[ -n $MASK6 ]] && run ip -6 addr add $(unzero6 $ADDR6)/$MASK6 dev $IFACE metric 1
|
||||
[[ -n $PRIV6 && -d $CONF6/$IFACE ]] && echo 0 >$CONF6/$IFACE/use_tempaddr
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -181,14 +181,15 @@ libvirtd_start(){
|
||||
return 1
|
||||
fi
|
||||
# convert libvirt 1.3.1 w/ eric's hyperv vendor id patch to how libvirt does it in libvirt 1.3.3+
|
||||
sed -ri "s/<vendor id='none'\/>/<vendor_id state='on' value='none'\/>/g" /etc/libvirt/qemu/*.xml &>/dev/null
|
||||
sed -ri "s/<vendor id='none'\/>/<vendor_id state='on' value='none'\/>/g" /etc/libvirt/qemu/*.xml 2>/dev/null
|
||||
# remove <locked/> from xml because libvirt + virlogd + virlockd has an issue with locked
|
||||
sed -ri "/<locked\/>/d" /etc/libvirt/qemu/*.xml &>/dev/null
|
||||
sed -ri "/<locked\/>/d" /etc/libvirt/qemu/*.xml 2>/dev/null
|
||||
# Remove "<watchdog model='itco' action='reset'/>" if reverting from later release.
|
||||
. /etc/unraid-version
|
||||
[[ $(version $version) -le $(version "6.12") ]] && sed -ri "/<watchdog model='itco' action='reset'\/>/d" /etc/libvirt/qemu/*.xml &>/dev/null
|
||||
[[ $(version $version) -le $(version "6.12") ]] && sed -ri "/<watchdog model='itco' action='reset'\/>/d" /etc/libvirt/qemu/*.xml 2>/dev/null
|
||||
# update interface section((s) of VM configuration files
|
||||
for XML in /etc/libvirt/qemu/*.xml; do
|
||||
[[ -f "$XML" ]] || continue
|
||||
# get all interface sections
|
||||
ROW=($(grep -nhP '<interface type=' "$XML" | grep -Pom1 '^[0-9]+'))
|
||||
# get all source sections
|
||||
|
||||
Reference in New Issue
Block a user