diff --git a/elements/ironic-agent/package-installs.yaml b/elements/ironic-agent/package-installs.yaml index e97444df..71994e33 100644 --- a/elements/ironic-agent/package-installs.yaml +++ b/elements/ironic-agent/package-installs.yaml @@ -1,6 +1,12 @@ tgt: curl: +# dmidecode does not exist for ppc* arches so add includes for non ppc dmidecode: + arch: x86_64 +dmidecode: + arch: i386 +dmidecode: + arch: amd64 ipmitool: qemu-utils: gcc: diff --git a/elements/ironic-discoverd-ramdisk/init.d/80-ironic-discoverd-ramdisk b/elements/ironic-discoverd-ramdisk/init.d/80-ironic-discoverd-ramdisk index 2e98d181..4d70c724 100644 --- a/elements/ironic-discoverd-ramdisk/init.d/80-ironic-discoverd-ramdisk +++ b/elements/ironic-discoverd-ramdisk/init.d/80-ironic-discoverd-ramdisk @@ -44,11 +44,22 @@ CPU_ARCH=$(lscpu | grep Architecture | awk '{ print $2 }') update ".cpu_arch = \"$CPU_ARCH\"" RAM=0 -for i in $(dmidecode --type memory | grep Size | awk '{ print $2; }' | grep -E '[0-9]+'); -do - RAM=$(( RAM + $i )); -done -update ".memory_mb = $RAM" +if hash dmidecode 2>/dev/null; then + for i in $(dmidecode --type memory | grep Size | awk '{ print $2; }' | grep -E '[0-9]+'); + do + RAM=$(( RAM + $i )); + done +elif hash lshw 2>/dev/null; then + # dmidecode does not exist for ppc, but lshw should (for both) + MEMORY=$(lshw -c memory -short -quiet | grep -i 'system memory' | awk '{ print $3; }') + if [[ "${MEMORY}" =~ GiB$ ]]; then + RAMGB=${MEMORY::-3} + RAM=$(( RAMGB * 1024 )); + elif [[ "${MEMORY}" =~ MiB$ ]]; then + RAM=${MEMORY::-3} + fi +fi +[ ${RAM} -gt 0 ] && update ".memory_mb = $RAM" CPUS=$(cat /proc/cpuinfo | grep processor | wc -l) update ".cpus = $CPUS" diff --git a/elements/ironic-discoverd-ramdisk/package-installs.yaml b/elements/ironic-discoverd-ramdisk/package-installs.yaml index 4e475c02..824cb2f0 100644 --- a/elements/ironic-discoverd-ramdisk/package-installs.yaml +++ b/elements/ironic-discoverd-ramdisk/package-installs.yaml @@ -1,5 +1,12 @@ curl: +# dmidecode does not exist for ppc* arches so add includes for non ppc dmidecode: + arch: x86_64 +dmidecode: + arch: i386 +dmidecode: + arch: amd64 ipmitool: jq: +lshw: util-linux: