net-misc/exabgp-4.2.7-r1: revbump, add init script, logrotate, etc
authorPatrick McLean <patrick.mclean@sony.com>
Wed, 20 May 2020 01:02:50 +0000 (18:02 -0700)
committerPatrick McLean <chutzpah@gentoo.org>
Wed, 20 May 2020 01:06:09 +0000 (18:06 -0700)
Copyright: Sony Interactive Entertainment Inc.
Package-Manager: Portage-2.3.99, Repoman-2.3.22
Signed-off-by: Patrick McLean <chutzpah@gentoo.org>
net-misc/exabgp/exabgp-4.2.7-r1.ebuild [moved from net-misc/exabgp/exabgp-4.2.7.ebuild with 69% similarity]
net-misc/exabgp/files/exabgp-4.2.7-paths.patch
net-misc/exabgp/files/exabgp.confd [new file with mode: 0644]
net-misc/exabgp/files/exabgp.initd [new file with mode: 0644]
net-misc/exabgp/files/exabgp.logrotate [new file with mode: 0644]
net-misc/exabgp/files/exabgp.tmpfiles [new file with mode: 0644]

similarity index 69%
rename from net-misc/exabgp/exabgp-4.2.7.ebuild
rename to net-misc/exabgp/exabgp-4.2.7-r1.ebuild
index a5eec248b4f84aee55010f27d57a9bc564e3bd55..8714af508f91465dce727bc86ec5508ea3b09c4c 100644 (file)
@@ -4,7 +4,7 @@
 EAPI=7
 PYTHON_COMPAT=( python3_{6,7,8} )
 DISTUTILS_USE_SETUPTOOLS=rdepend
-inherit distutils-r1
+inherit tmpfiles systemd distutils-r1
 
 DESCRIPTION="The BGP swiss army knife of networking"
 HOMEPAGE="https://github.com/Exa-Networks/exabgp"
@@ -35,3 +35,18 @@ python_test() {
        ./qa/bin/parsing || die "tests fail with ${EPYTHON}"
        nosetests -v ./qa/tests/*_test.py || die "tests fail with ${EPYTHON}"
 }
+
+python_install_all() {
+       distutils-r1_python_install_all
+
+       newinitd "${FILESDIR}/${PN}.initd" ${PN}
+       newconfd "${FILESDIR}/${PN}.confd" ${PN}
+
+       newtmpfiles "${FILESDIR}/exabgp.tmpfiles" ${PN}.conf
+       systemd_dounit etc/systemd/*
+
+       insinto /etc/logrotate.d
+       newins "${FILESDIR}/${PN}.logrotate" ${PN}
+
+       keepdir /etc/exabgp
+}
index 57f3a50748d48cbad716dca18a9b4ac6903729ab..0744a00d6939f130f04e14d423adce8fc406dd90 100644 (file)
@@ -3,11 +3,11 @@ index 58d47087..a4266d05 100644
 --- a/setup.py
 +++ b/setup.py
 @@ -31,7 +31,7 @@ def filesOf(directory):
+
+
  data_files = [
 -    ('etc/exabgp/examples', filesOf('etc/exabgp')),
-+    ('/etc/exabgp/examples', filesOf('etc/exabgp')),
++    ('share/exabgp/examples', filesOf('etc/exabgp')),
  ]
+
  if platform.system() != 'NetBSD':
diff --git a/net-misc/exabgp/files/exabgp.confd b/net-misc/exabgp/files/exabgp.confd
new file mode 100644 (file)
index 0000000..2586be1
--- /dev/null
@@ -0,0 +1,10 @@
+# /etc/conf.d/exabgp
+
+# arguments to pass to exabgp
+#EXABGP_ARGS="/etc/exabgp/exabgp.conf"
+
+# user to run exabgp as
+#EXABGP_USER=exabgp
+
+# group to run exabgp as
+#EXABGP_GROUP=exabgp
diff --git a/net-misc/exabgp/files/exabgp.initd b/net-misc/exabgp/files/exabgp.initd
new file mode 100644 (file)
index 0000000..e220108
--- /dev/null
@@ -0,0 +1,59 @@
+#!/sbin/openrc-run
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# default arguments
+: "${EXABGP_ARGS:=--env=/etc/${RC_SVCNAME}/exabgp.env /etc/${RC_SVCNAME}/exabgp.conf}"
+
+command="capsh"
+command_args="
+       --uid=${EXABGP_USER:-exabgp}
+       --gid=${EXABGP_GROUP:-exabgp}
+       --caps='cap_net_admin+epi cap_setuid+ep-i cap_setgid+ep-i'
+       -- -c \"/usr/bin/exabgp ${EXABGP_ARGS}\""
+command_background="yes"
+pidfile="/run/exabgp/${RC_SVCNAME}.pid"
+start_stop_daemon_args="
+       --stdout /var/log/${RC_SVCNAME}/exabgp.log
+       --stderr /var/log/${RC_SVCNAME}/exabgp.log"
+extra_started_commands="routes sessions"
+extra_commands="checkconfig"
+
+depend() {
+       need net
+}
+
+start_pre() {
+       checkpath -q -d -m 0755 -o "${EXABGP_USER}:${EXABGP_GROUP}" \
+               /run/exabgp || return
+
+       checkpath -q -p -m 0600 -o "${EXABGP_USER}:${EXABGP_GROUP}" \
+               /run/exabgp/${RC_SVCNAME}.{in,out} || return
+
+       checkconfig || return
+}
+
+stop_pre() {
+       # don't restart if the configuration is bad
+       if [ "${RC_CMD}" = restart ]; then
+               checkconfig || return
+       fi
+}
+
+checkconfig() {
+       ebegin "Checking configuration for ${RC_SVCNAME}"
+       exabgp -t ${EXABGP_ARGS}
+       eend ${?} "Invalid configuration"
+}
+
+sessions() {
+       ebegin "Querying sessions"
+       exabgpcli --env /etc/${RC_SVCNAME}/exabgp.env show neighbor summary
+       eend ${?} "exabgpcli failed"
+}
+
+routes() {
+       ebegin "Querying routes"
+       exabgpcli --env /etc/${RC_SVCNAME}/exabgp.env show adj-rib out
+       eend ${?} "exabgpcli failed"
+}
diff --git a/net-misc/exabgp/files/exabgp.logrotate b/net-misc/exabgp/files/exabgp.logrotate
new file mode 100644 (file)
index 0000000..0616196
--- /dev/null
@@ -0,0 +1,5 @@
+/var/log/exabgp/*.log {
+       missingok
+       compress
+       copytruncate
+}
diff --git a/net-misc/exabgp/files/exabgp.tmpfiles b/net-misc/exabgp/files/exabgp.tmpfiles
new file mode 100644 (file)
index 0000000..7415d34
--- /dev/null
@@ -0,0 +1,3 @@
+f      /run/exabgp             0755    exabgp  exabgp  -       -
+p      /run/exabgp.in  0600    exabgp  exabgp  -       -
+p      /run/exabgp.out 0600    exabgp  exabgp  -       -