diff options
Diffstat (limited to 'meta-openpower/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh')
-rw-r--r-- | meta-openpower/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/meta-openpower/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh b/meta-openpower/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh new file mode 100644 index 000000000..541523760 --- /dev/null +++ b/meta-openpower/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh @@ -0,0 +1,46 @@ +#!/bin/sh -eu + +show_error() { + echo "$@" >&2 +} + +sync_hostname() { + MAPPER_IFACE='xyz.openbmc_project.ObjectMapper' + MAPPER_PATH='/xyz/openbmc_project/object_mapper' + INVENTORY_PATH='/xyz/openbmc_project/inventory' + BMC_ITEM_IFACE='xyz.openbmc_project.Inventory.Item.Bmc' + + BMC_ITEM_PATH=$(busctl --no-pager --verbose call \ + ${MAPPER_IFACE} \ + ${MAPPER_PATH} \ + ${MAPPER_IFACE} \ + GetSubTree sias \ + ${INVENTORY_PATH} 0 1 ${BMC_ITEM_IFACE} \ + 2>/dev/null | grep ${INVENTORY_PATH} || true) + + # ' STRING "/xyz/openbmc_project/inventory/system/chassis/bmc";' + BMC_ITEM_PATH=${BMC_ITEM_PATH#*\"} + BMC_ITEM_PATH=${BMC_ITEM_PATH%\"*} + + BMC_ITEM_SERVICE=$(mapper get-service \ + ${BMC_ITEM_PATH} 2>/dev/null || true) + + if [[ -z "${BMC_ITEM_SERVICE}" ]]; then + echo "No BMC item found in the Inventory. Is VPD EEPROM empty?" >&2 + return + fi + + BMC_SN=$(busctl get-property ${BMC_ITEM_SERVICE} \ + ${BMC_ITEM_PATH} \ + ${BMC_ITEM_IFACE} SerialNumber) + # 's "002B0DH1000"' + BMC_SN=${BMC_SN#*\"} + BMC_SN=${BMC_SN%\"*} + + hostnamectl set-hostname {MACHINE}-${BMC_SN} +} + +[ "$(hostname)" = "{MACHINE}" ] && sync_hostname + +systemctl disable first-boot-set-hostname.service + |