Skip to content

Commit

Permalink
snapcraft/hooks: Add ovn-conf interface hooks
Browse files Browse the repository at this point in the history
Signed-off-by: Max Asnaashari <[email protected]>
  • Loading branch information
masnax committed Nov 30, 2023
1 parent dd708ad commit 9f46799
Show file tree
Hide file tree
Showing 2 changed files with 121 additions and 0 deletions.
51 changes: 51 additions & 0 deletions snapcraft/hooks/connect-plug-ovn-conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
#!/bin/sh
set -eu

# Re-exec outside of apparmor confinement
if [ -d /sys/kernel/security/apparmor ]; then
label="$(cat /proc/self/attr/current 2>/dev/null)"
if [ "$label" != "unconfined" ] && [ -n "${label##*(unconfined)}" ]; then
exec aa-exec -p unconfined -- "$0" "$@"
fi
fi

# Utility functions
get_bool() {
value=$(echo "${1:-}" | tr '[:upper:]' '[:lower:]')

# See if it's true
for yes in "true" "1" "yes" "on"; do
if [ "${value}" = "${yes}" ]; then
echo "true"
return
fi
done

# See if it's false
for no in "false" "0" "no" "off"; do
if [ "${value}" = "${no}" ]; then
echo "false"
return
fi
done

# Invalid value (or not set)
return
}

# Only create symlinks if /etc has been generated by daemon.start.
if [ -e "/etc/.lxd_generated" ]; then
ovn_builtin=$(get_bool "$(snapctl get ovn.builtin)")

if ! [ "${ovn_builtin:-"false"}" = "true" ]; then
mkdir /etc/ovn
ln -snf "${SNAP_DATA}/microovn/data/pki/client-cert.pem" /etc/ovn/cert_host
ln -snf "${SNAP_DATA}/microovn/data/pki/client-privkey.pem" /etc/ovn/key_host
ln -snf "${SNAP_DATA}/microovn/data/pki/cacert.pem" /etc/ovn/ovn-central.crt
fi

openvswitch_builtin=$(get_bool "$(snapctl get openvswitch.builtin)")
if ! [ "${openvswitch_builtin:-"false"}" = "true" ]; then
ln -snf "${SNAP_DATA}/microovn/run/switch" /run/openvswitch
fi
fi
70 changes: 70 additions & 0 deletions snapcraft/hooks/disconnect-plug-ovn-conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#!/bin/sh
set -eu

# Re-exec outside of apparmor confinement
if [ -d /sys/kernel/security/apparmor ]; then
label="$(cat /proc/self/attr/current 2>/dev/null)"
if [ "$label" != "unconfined" ] && [ -n "${label##*(unconfined)}" ]; then
exec aa-exec -p unconfined -- "$0" "$@"
fi
fi

# Utility functions
get_bool() {
value=$(echo "${1:-}" | tr '[:upper:]' '[:lower:]')

# See if it's true
for yes in "true" "1" "yes" "on"; do
if [ "${value}" = "${yes}" ]; then
echo "true"
return
fi
done

# See if it's false
for no in "false" "0" "no" "off"; do
if [ "${value}" = "${no}" ]; then
echo "false"
return
fi
done

# Invalid value (or not set)
return
}

# Only create symlinks if /etc has been generated by daemon.start.
if [ -e "/etc/.lxd_generated" ]; then
ovn_builtin=$(get_bool "$(snapctl get ovn.builtin)")
if [ "${ovn_builtin:-"false"}" = "true" ]; then
mkdir -p "${SNAP_COMMON}/ovn"
ln -s "${SNAP_COMMON}/ovn" /etc/ovn
else
ln -s /var/lib/snapd/hostfs/etc/ovn /etc/ovn
fi

openvswitch_builtin=$(get_bool "$(snapctl get openvswitch.builtin)")
if [ "${openvswitch_builtin:-"false"}" = "true" ]; then
echo "=> Starting Open vSwitch"
export OVS_RUNDIR="${SNAP_COMMON}/openvswitch/run/"
(
set -e
export OVS_LOGDIR="${SNAP_COMMON}/openvswitch/logs/"
export OVS_DBDIR="${SNAP_COMMON}/openvswitch/db/"
export OVS_SYSCONFDIR="${SNAP_COMMON}/openvswitch/conf/"
export OVS_PKGDATADIR="${SNAP}/share/openvswitch/"
export OVS_BINDIR="${SNAP}/bin/"
export OVS_SBINDIR="${SNAP}/bin/"

mkdir -p "${OVS_SYSCONFDIR}/openvswitch"
(
# Close socket activation fd
exec 3<&- || true

"${SNAP}/share/openvswitch/scripts/ovs-ctl" start --system-id=random
)
)
else
ln -s /var/lib/snapd/hostfs/run/openvswitch /run/openvswitch
fi
fi

0 comments on commit 9f46799

Please sign in to comment.