From b83de510d5e50285805b557866b94c5be3dd2a3f Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Mon, 25 May 2020 17:14:16 +0000 Subject: [PATCH] Cluster demo support updates 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 Change-Id: I9109b8e7782112d5504866f67e6bb5953c79d4a8 --- .../cluster-demo-network-config_1.0.bb | 18 ++++++++++++++---- .../files/cluster-demo-network-conf.service | 15 --------------- .../files/cluster-demo-network-conf.sh | 17 +++++++++++++++++ .../files/cluster-demo-network-conf@.service | 12 ++++++++++++ .../feature/agl-cluster-demo-support/included.dep | 2 +- 5 files changed, 44 insertions(+), 20 deletions(-) delete mode 100644 recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.service create mode 100644 recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.sh create mode 100644 recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf@.service diff --git a/recipes-config/cluster-demo-network-config/cluster-demo-network-config_1.0.bb b/recipes-config/cluster-demo-network-config/cluster-demo-network-config_1.0.bb index a5386b409..ab725c056 100644 --- a/recipes-config/cluster-demo-network-config/cluster-demo-network-config_1.0.bb +++ b/recipes-config/cluster-demo-network-config/cluster-demo-network-config_1.0.bb @@ -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 index 1a6e2d8b7..000000000 --- a/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.service +++ /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 index 000000000..3f538175f --- /dev/null +++ b/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf.sh @@ -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 " + 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 index 000000000..5fc29b7a0 --- /dev/null +++ b/recipes-config/cluster-demo-network-config/files/cluster-demo-network-conf@.service @@ -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 diff --git a/templates/feature/agl-cluster-demo-support/included.dep b/templates/feature/agl-cluster-demo-support/included.dep index 17ef3ba98..1e9b35fbf 100644 --- a/templates/feature/agl-cluster-demo-support/included.dep +++ b/templates/feature/agl-cluster-demo-support/included.dep @@ -1 +1 @@ -agl-gstrecorder +agl-weston-remoting -- 2.16.6