diff options
author | asmithakarun <asmithkr@in.ibm.com> | 2019-06-26 10:04:53 +0300 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2019-08-28 15:07:55 +0300 |
commit | 173965e73ed4d3712aa5eec2c688d2b8e25a98c5 (patch) | |
tree | 0ea07b154268bf362297eb9f9b7a9cee84b3a3b4 /meta-openpower | |
parent | adb0b75f0ff8e9510d6e38e5bbb5148b08c48d48 (diff) | |
download | openbmc-173965e73ed4d3712aa5eec2c688d2b8e25a98c5.tar.xz |
meta-openpower: avahi: Append MAC address to the hostname
The idea of this commit is to handle situations where the
serial number is not written into bmc-vpd. In such cases,
the MAC address will be appended with the hostname to make
the hostname unique.
Tested By:
1. When BMC Serial Number is present:
Output:
root@witherspoon-YL10UF78A0H4:~# hostname
witherspoon-YL10UF78A0H4
2. In the absence of BMC Serial Number, MAC Address is appended:
Output:
root@witherspoon:/# hostname
witherspoon
After enabling first-boot-set-hostname.service and reboot,
root@witherspoon-70e284143365:/# hostname
witherspoon-70e284143365
3. When Inventory interface is not found:
Output:
Exits with error: "No Ethernet interface found in the Inventory. Unique hostname not set!"
Hostname will not be set. It remains the same.
(From meta-openpower rev: d9e4700f7a09894fdd17b2fe97e51cf88135c585)
Signed-off-by: asmithakarun <asmithkr@in.ibm.com>
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Change-Id: Ia753e9797ee1627bf3ddd2edbb7ceed81fccad12
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Diffstat (limited to 'meta-openpower')
-rw-r--r-- | meta-openpower/recipes-phosphor/network/first-boot-set-hostname/first-boot-set-hostname.sh | 56 |
1 files changed, 45 insertions, 11 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 index 42a85b873..401dd9de8 100644 --- 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 @@ -12,9 +12,10 @@ 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' INV_ASSET_IFACE='xyz.openbmc_project.Inventory.Decorator.Asset' - + BMC_SN='' BMC_ITEM_PATH=$(busctl --no-pager --verbose call \ ${MAPPER_IFACE} \ ${MAPPER_PATH} \ @@ -30,21 +31,54 @@ sync_hostname() { BMC_ITEM_SERVICE=$(mapper get-service \ ${BMC_ITEM_PATH} 2>/dev/null || true) - if [[ -z "${BMC_ITEM_SERVICE}" ]]; then + if [[ -n "${BMC_ITEM_SERVICE}" ]]; then + BMC_SN=$(busctl get-property ${BMC_ITEM_SERVICE} \ + ${BMC_ITEM_PATH} \ + ${INV_ASSET_IFACE} SerialNumber) + # 's "002B0DH1000"' + BMC_SN=${BMC_SN#*\"} + BMC_SN=${BMC_SN%\"*} + else show_error "No BMC item found in the Inventory. Is VPD EEPROM empty?" - return fi - BMC_SN=$(busctl get-property ${BMC_ITEM_SERVICE} \ - ${BMC_ITEM_PATH} \ - ${INV_ASSET_IFACE} SerialNumber) - # 's "002B0DH1000"' - BMC_SN=${BMC_SN#*\"} - BMC_SN=${BMC_SN%\"*} + if [[ -z "${BMC_SN}" ]] ; then + show_error "BMC Serial Number empty! Setting Hostname as 'hostname + mac address' " + + NETWORK_ITEM_IFACE='xyz.openbmc_project.Inventory.Item.NetworkInterface' + NETWORK_ITEM_PATH=$(busctl --no-pager --verbose call \ + ${MAPPER_IFACE} \ + ${MAPPER_PATH} \ + ${MAPPER_IFACE} \ + GetSubTree sias \ + ${INVENTORY_PATH} 0 1 ${NETWORK_ITEM_IFACE} \ + 2>/dev/null | grep ${INVENTORY_PATH} || true) + + NETWORK_ITEM_PATH=${NETWORK_ITEM_PATH#*\"} + NETWORK_ITEM_PATH=${NETWORK_ITEM_PATH%\"*} + + NETWORK_ITEM_OBJ=$(mapper get-service ${NETWORK_ITEM_PATH} 2>/dev/null || true) + + if [[ -z "${NETWORK_ITEM_OBJ}" ]]; then + show_error 'No Ethernet interface found in the Inventory. Unique hostname not set!' + exit 1 + fi + + MAC_ADDR=$(busctl get-property ${NETWORK_ITEM_OBJ} \ + ${NETWORK_ITEM_PATH} \ + ${NETWORK_ITEM_IFACE} MACAddress) + + # 's "54:52:01:02:03:04"' + MAC_ADDR=${MAC_ADDR#*\"} + MAC_ADDR=${MAC_ADDR%\"*} + + hostnamectl set-hostname $(hostname)-${MAC_ADDR} + else + hostnamectl set-hostname $(hostname)-${BMC_SN} + fi - hostnamectl set-hostname {MACHINE}-${BMC_SN} } -[ "$(hostname)" = "{MACHINE}" ] && sync_hostname +sync_hostname systemctl disable first-boot-set-hostname.service |