On 05/13/2010 11:12 AM, Darryl L. Pierce wrote:
HAL has been deprecated, and this patch removes all HAL specific calls
from the configuration scripts.

HAL is still present in the Python scripts, but will be removed in a
different patch.

Signed-off-by: Darryl L. Pierce<[email protected]>
---
  ChangeLog                       |    3 +
  configure.ac                    |    2 -
  ovirt-node.spec.in              |    1 -
  scripts/ovirt-config-networking |   18 ++++----
  scripts/ovirt-config-storage    |   99 ++++++++++++++-------------------------
  5 files changed, 48 insertions(+), 75 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 49d57ad..b57763a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,9 @@
  CHANGELOG
  =========

+Version 1.9.3:
+ * Removed HAL dependencies from the firstboot scripts.
+
  Version 1.9.2:
   * Fixed the autoconf setup to cover more prerequisites.

diff --git a/configure.ac b/configure.ac
index abe97cc..18cf789 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,9 +10,7 @@ fi

  # TODO need a way to check for python-setuptools

-AC_CHECK_LIB(dbus-1, main, , AC_MSG_ERROR([Cannot find DBus development 
libraries.]))
  AC_CHECK_LIB(virt, main, , AC_MSG_ERROR([Cannot find libvirt development 
libraries.]))
-AC_CHECK_LIB(hal, main, , AC_MSG_ERROR([Cannot find HAL development 
libraries.]))
  AC_CHECK_LIB(python2.6, main, , AC_MSG_ERROR([Cannot find python development 
libraries.]))

  AC_CONFIG_HEADERS([config.h])
diff --git a/ovirt-node.spec.in b/ovirt-node.spec.in
index 28d8719..45de24c 100644
--- a/ovirt-node.spec.in
+++ b/ovirt-node.spec.in
@@ -17,7 +17,6 @@ URL:            http://www.ovirt.org/
  Requires(post):  /sbin/chkconfig
  Requires(preun): /sbin/chkconfig
  BuildRequires:  libvirt-devel>= 0.5.1
-BuildRequires:  dbus-devel hal-devel
  BuildRequires:  python-devel
  BuildRequires:  python-setuptools
  Requires:       libvirt>= 0.6.3
diff --git a/scripts/ovirt-config-networking b/scripts/ovirt-config-networking
index 4d412ac..1cfc2db 100755
--- a/scripts/ovirt-config-networking
+++ b/scripts/ovirt-config-networking
@@ -460,16 +460,16 @@ set ${ntproot}/keys /etc/ntp/keys\n\
  function setup_menu
  {
      NICS=""
-    udi_list=$(hal-find-by-capability --capability net.80203)
-    if [ -n "$udi_list" ]; then
-        for d in $udi_list; do
-           if [[ ! "$(hal-get-property --udi $d --key net.physical_device)" =~ 
computer ]]; then
-               NICS="$NICS $(hal-get-property --udi "$d" --key net.interface)"
-           fi
-        done
-    fi
+    nics=$(ls -bd /sys/class/net/*)
+    for nic in $nics; do
+        nic=$(basename $nic)
+        address=$(systool -c net -d $nic -A address | awk '/address\ += 
"(.*)"/ { print $3; }')
+        if [[ ! "$address" =~ '00:00:00:00' ]]; then
+            NICS="$NICS $nic"
+        fi
+    done

-    # Add virtio NICs that were possibly not detected by hal
+    # Add virtio NICs that were possibly not detected by other means
      NICS="$(ifconfig -a | awk '/Ethernet/ {print $1}'|xargs)"
      NICS=$(echo $NICS | tr ' ' '\n' | sort -u | xargs)

diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage
index ce9707c..5b2c1e9 100755
--- a/scripts/ovirt-config-storage
+++ b/scripts/ovirt-config-storage
@@ -111,41 +111,11 @@ get_drive_size()
      local drive="$1"
      local space_var="$2"

-    local size=
-    local udi=$(hal-find-by-property --key block.device --string "$drive")
-    # if more than one UDI was found then iterate over them to find the base 
device
-    if [[ "${udi}" =~ \$  ]]; then
-        udi=$(echo "$udi" | sed 's/\$/ /g')
-        for found in ${udi}; do
-            if [[ "false" == $(hal-get-property --udi "$found" --key 
block.is_volume) ]]; then
-                udi="$found"
-                break
-            fi
-        done
-    fi
-    if [ -z "$udi" ]; then
-        # If hal didn't find the device, it could be a virtio block device
-        # or a multipath device
-        # In this case, use sfdisk -s to get the size
-        size=$(sfdisk -s "$drive" 2>/dev/null)
-        if [ -z "$size" ]; then
-            size=0
-        fi
-        size=$(echo "scale=0; $size * 1024" | bc -l)
-    else
-        size=$(hal-get-property --udi "$udi" --key storage.size)
-        if [[ "${size}" == "0" ]]; then
-            # disk is probably hot-swappable, use different HAL key
-            # but first check that it is removeable media and that  media is 
present
-            if [[ "true" == "$(hal-get-property --udi "$udi" --key 
storage.removable.media_available)" ]]; then
-                size=$(hal-get-property --udi "$udi" --key 
storage.removable.media_size)
-            fi
-        fi
-    fi
+    local size=$(sfdisk -s $drive)
+    size=$(echo "scale=0; $size / 1024" | bc -l)

-    size=$(echo "scale=0; $size / (1024 * 1024)" | bc -l)
      echo "$drive ($size MB)"
-    test -z "$udi" || echo "Disk Identifier: $(basename "$udi")"
+    echo "Disk Identifier: $drive"
      if [ -n "$space_var" ]; then
          eval $space_var="$size"
      fi
@@ -210,8 +180,10 @@ check_partition_sizes()
              printf "\n"
              printf "There appears to already be an installation on another 
device:\n"
              for device in $devices; do
-                udi=$(hal-find-by-property --key block.device --string $device)
-                printf "\t$device ($(basename "$udi"))\n"
+                local uuid
+
+                get_uuid $device uuid
+                printf "\t$device ${uuid}\n"
              done
              printf "We cannot proceed until either device is removed from the 
system\n"
              printf "or until the HostVG volume group is removed.\n"
@@ -260,40 +232,19 @@ manual_input()
  # Sample output: /dev/sda
  get_dev_name()
  {
-    local udi_list=$(hal-find-by-capability --capability storage)
      local byid_list=$(find /dev/disk/by-id -mindepth 1 -not -name '*-part*' 
2>/dev/null)
-    if test -z "$udi_list" -a -z "$byid_list"; then
-        warn "ERROR: no usable storage devices detected"
-        return 1
-    fi
+    local devices=""

-    local d devices sizes
-    for d in $udi_list; do
-        local drive_type=$(hal-get-property --udi "$d" --key 
storage.drive_type)
-        test "X$drive_type" = Xdisk || continue
-        local block_dev=$(hal-get-property --udi "$d" --key block.device)
-        # Must start with a '/'.
-        case "$block_dev" in
-            *' '*)
-                # we use space as separator
-                warn "block device name '$block_dev' contains space; skipping";
-                continue;;
-            /*) ;;
-            *) warn "block device name $block_dev doesn't start with '/';" \
-                " skipping"; continue;;
-        esac
-        test -z "$devices" \
-&&  devices="$block_dev" \
-            || devices="$devices $block_dev"
+    for drive in $(ls -db /sys/block/[hsv]d*); do
+        drive="/dev/$(basename $drive)"
+        test -z "$devices"&&  devices="$drive" || devices="$devices $drive"
      done
+
      d=""
      for d in $byid_list; do
          devices="$devices $(readlink -f "$d")";
      done

-    # FIXME: workaround for detecting virtio block devices
-    devices="$devices $(ls /dev/vd? 2>  /dev/null | xargs)"
-
      # FIXME: workaround for detecting cciss devices
      for dev in $(ls /dev/cciss 2>/dev/null); do
          if [[ ! "$dev" =~ p[0-9]+\$ ]]; then
@@ -518,6 +469,26 @@ EOF
      return ${is_negative-0}
  }

+# Retrieves the UUID for the specified device.
+# $1 - the device
+# $2 - the variable to be set
+get_uuid()
+{
+    local device=${1-}
+    local envvar=${2-}
+    local rootname
+
+    if [[ "$device" =~ "^.*[0-9]?$" ]]; then
+        rootname="${device:0:${#device}-1}"
+    fi
+    local uuid=$(
+        udevadm info --path=/sys/block/$rootname/$device --query=property |
+        awk '/ID_FS_UUID=/ { match($0, "ID_FS_UUID=(.*)", data); print  
data[1]; }'
+    )
+
+    eval $envvar="$uuid"
+}
+
  #Check for an existing HostVG on any device on the system.
  # Return 0 if then is a HostVG found, unless only one found is on $1
  # Return 1 if no HostVG found or only found on $1
@@ -537,10 +508,12 @@ check_existing_hostvg()
          printf "\n"
          printf "There appears to already be an installation on another 
device:\n"
          for device in $devices; do
+            local uuid
+
              get_multipath_devices ${device%p[0-9]} sd_dev
              sd_dev=$(echo "$sd_dev" | awk '{print $1}')
-            udi=$(hal-find-by-property --key block.device --string 
/dev/${sd_dev})
-            printf "\t$device ($(basename "$udi"))\n"
+            get_uuid $sd_dev uuid
+            printf "\t$device ($uuid)\n"
          done
          printf "The installation cannot proceed until the device is removed\n"
          printf "from the system of the HostVG volume group is removed.\n"
ACK, only issue was the dm-X devices showing up in the device list

_______________________________________________
Ovirt-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/ovirt-devel

Reply via email to