Skip to content

Commit

Permalink
Merge pull request #217 from masnax/ovn-interface
Browse files Browse the repository at this point in the history
MicroOVN content interface support
  • Loading branch information
tomponline authored Nov 30, 2023
2 parents 8fc5a94 + 9f46799 commit 7ecd767
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 2 deletions.
3 changes: 3 additions & 0 deletions snapcraft.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ plugs:
ceph-conf:
interface: content
target: "$SNAP_DATA/microceph"
ovn-conf:
interface: content
target: "$SNAP_DATA/microovn"

apps:
# Main commands
Expand Down
4 changes: 2 additions & 2 deletions snapcraft/commands/daemon.start
Original file line number Diff line number Diff line change
Expand Up @@ -298,8 +298,8 @@ echo "==> Setting up ceph configuration"
if [ "${ceph_builtin:-"false"}" = "true" ]; then
mkdir -p "${SNAP_COMMON}/ceph"
ln -s "${SNAP_COMMON}/ceph" /etc/ceph
elif [ -e "/var/snap/microceph" ]; then
ln -s /var/snap/microceph/current/conf/ /etc/ceph
elif [ -d "${SNAP_DATA}/microceph" ]; then
ln -snf "${SNAP_DATA}/microceph/conf/" /etc/ceph
else
ln -s /var/lib/snapd/hostfs/etc/ceph /etc/ceph
fi
Expand Down
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 7ecd767

Please sign in to comment.