Cluster demo support updates 69/24569/2
authorScott Murray <scott.murray@konsulko.com>
Mon, 25 May 2020 17:14:16 +0000 (17:14 +0000)
committerScott Murray <scott.murray@konsulko.com>
Tue, 26 May 2020 14:36:11 +0000 (14:36 +0000)
Changes include:
- Rework cluster-demo-network-config recipe to have the installed
  service file be a template, allowing the recipe to potentially
  change the target network device easily. A new variable
  AGL_CLUSTER_NET_DEVICE has been added to do so, with a default
  value of eth1. The interface configuration has been moved to a
  helper shell script, cluster-demo-network-conf.sh, with some
  additional logic added to update the interface blacklist in the
  connman configuration. This makes things more generic and allows
  setting up the cluster demo on boards other than H3+KF.
- Update agl-cluster-demo-support feature dependency with new
  agl-weston-remoting feature that replaces agl-gstrecorder.

Bug-AGL: SPEC-3395

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I9109b8e7782112d5504866f67e6bb5953c79d4a8

recipes-config/cluster-demo-network-config/cluster-demo-network-config_1.0.bb
recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.service [deleted file]
recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.sh [new file with mode: 0644]
recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf@.service [new file with mode: 0644]
templates/feature/agl-cluster-demo-support/included.dep

index a5386b4..ab725c0 100644 (file)
@@ -5,19 +5,29 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda
 
 inherit systemd allarch
 
-SRC_URI = "file://cluster-demo-network-conf.service"
+SRC_URI = "file://cluster-demo-network-conf@.service \
+           file://cluster-demo-network-conf.sh \
+"
+
+# Network device for dedicated connection to cluster
+AGL_CLUSTER_NET_DEVICE ?= "eth1"
 
 do_configure[noexec] = "1"
 do_compile[noexec] = "1"
 
 do_install() {
-    # Install cluster demo network configuration service unit
+    # Install helper script
+    install -d ${D}${sbindir}
+    install -m 0755 ${WORKDIR}/cluster-demo-network-conf.sh ${D}${sbindir}/
+
+    # Install service unit
     install -d ${D}${systemd_system_unitdir}
-    install -m 0644 ${WORKDIR}/cluster-demo-network-conf.service ${D}${systemd_system_unitdir}
+    install -m 0644 ${WORKDIR}/cluster-demo-network-conf@.service ${D}${systemd_system_unitdir}/
 
     # Add symlink to network.target.wants
     install -d ${D}${sysconfdir}/systemd/system/network.target.wants
-    ln -s ${systemd_system_unitdir}/cluster-demo-network-conf.service ${D}${sysconfdir}/systemd/system/network.target.wants/
+    ln -s ${systemd_system_unitdir}/cluster-demo-network-conf@.service \
+        ${D}${sysconfdir}/systemd/system/network.target.wants/cluster-demo-network-conf@${AGL_CLUSTER_NET_DEVICE}.service
 }
 
 FILES_${PN} += "${systemd_system_unitdir}"
diff --git a/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.service b/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.service
deleted file mode 100644 (file)
index 1a6e2d8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=Configure dedicated link for cluster demo network
-After=sys-subsystem-net-devices-eth1.device
-Requires=sys-subsystem-net-devices-eth1.device
-Before=network.target
-
-[Service]
-# Note that this is done as opposed to using connman as configuring an
-# interface on a second network separate from the rest of the interfaces
-# is non-trivial in connman and needs further investigation.
-ExecStart=/sbin/ifconfig eth1 192.168.20.93
-Type=oneshot
-
-[Install]
-WantedBy=network.target
diff --git a/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.sh b/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.sh
new file mode 100644 (file)
index 0000000..3f53817
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+CONNMAN_CONF=/etc/connman/main.conf
+CLUSTER_ADDRESS=192.168.20.93
+
+if [ -z "$1" ]; then
+    echo "Usage: $0 <network device>"
+    exit 1
+fi
+
+# Need to blacklist given device with connman if it isn't already,
+# otherwise connman will over-ride address configuration.
+if ! grep '^NetworkInterfaceBlacklist=' ${CONNMAN_CONF} | grep -q $1; then
+    sed -i "s/^\(NetworkInterfaceBlacklist=.*\)/\1,$1/" ${CONNMAN_CONF}
+fi
+
+/sbin/ifconfig $1 ${CLUSTER_ADDRESS}
diff --git a/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf@.service b/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf@.service
new file mode 100644 (file)
index 0000000..5fc29b7
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=Configure dedicated link for cluster demo network
+After=sys-subsystem-net-devices-%i.device
+Requires=sys-subsystem-net-devices-%i.device
+Before=network.target
+
+[Service]
+ExecStart=/usr/sbin/cluster-demo-network-conf.sh %i
+Type=oneshot
+
+[Install]
+WantedBy=network.target