diff options
Diffstat (limited to 'meta-openpower/recipes-phosphor/network')
4 files changed, 71 insertions, 16 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..62284d16b 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 +systemctl --no-reload disable first-boot-set-hostname.service diff --git a/meta-openpower/recipes-phosphor/network/first-boot-set-hostname_1.0.bb b/meta-openpower/recipes-phosphor/network/first-boot-set-hostname_1.0.bb index 7f71e7c01..f3f7d34cf 100644 --- a/meta-openpower/recipes-phosphor/network/first-boot-set-hostname_1.0.bb +++ b/meta-openpower/recipes-phosphor/network/first-boot-set-hostname_1.0.bb @@ -2,7 +2,7 @@ SUMMARY = "Init BMC Hostname" DESCRIPTION = "Setup BMC Unique hostname" PR = "r1" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${OPENPOWERBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" inherit allarch systemd diff --git a/meta-openpower/recipes-phosphor/network/first-boot-set-mac/first-boot-set-mac.sh b/meta-openpower/recipes-phosphor/network/first-boot-set-mac/first-boot-set-mac.sh index 9668ed5f1..da1b305d4 100755 --- a/meta-openpower/recipes-phosphor/network/first-boot-set-mac/first-boot-set-mac.sh +++ b/meta-openpower/recipes-phosphor/network/first-boot-set-mac/first-boot-set-mac.sh @@ -15,13 +15,34 @@ sync_mac() { INVENTORY_PATH='/xyz/openbmc_project/inventory' NETWORK_ITEM_IFACE='xyz.openbmc_project.Inventory.Item.NetworkInterface' - NETWORK_ITEM_PATH=$(busctl --no-pager --verbose call \ + # Get the NETWORK ITEM count + NETWORK_ITEM_PATH_COUNT=$(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} | wc -l || true) + + if [ $NETWORK_ITEM_PATH_COUNT -gt 1 ]; then + # If there are more than 2 NETOWRK ITEM and path must contain $1 + # for finding the right NETWORK ITEM + 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} | grep $1 || true) + else + 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) + fi # ' STRING "/xyz/openbmc_project/inventory/system/chassis/ethernet";' NETWORK_ITEM_PATH=${NETWORK_ITEM_PATH#*\"} @@ -58,4 +79,4 @@ fi sync_mac $1 -systemctl disable first-boot-set-mac@${1}.service +systemctl --no-reload disable first-boot-set-mac@${1}.service diff --git a/meta-openpower/recipes-phosphor/network/first-boot-set-mac_1.0.bb b/meta-openpower/recipes-phosphor/network/first-boot-set-mac_1.0.bb index 1a1ee97dc..f67ddd464 100644 --- a/meta-openpower/recipes-phosphor/network/first-boot-set-mac_1.0.bb +++ b/meta-openpower/recipes-phosphor/network/first-boot-set-mac_1.0.bb @@ -2,7 +2,7 @@ SUMMARY = "Init BMC MAC address" DESCRIPTION = "Setup BMC MAC address read from VPD" PR = "r1" LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://${OPENPOWERBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" inherit allarch systemd |