app-admin/logstash-bin: retain user installed plugins (Bug #622602)
authorTomas Mozes <hydrapolic@gmail.com>
Wed, 16 Aug 2017 08:39:45 +0000 (10:39 +0200)
committerMichał Górny <mgorny@gentoo.org>
Wed, 16 Aug 2017 14:23:59 +0000 (16:23 +0200)
Closes: https://github.com/gentoo/gentoo/pull/5098
Package-Manager: Portage-2.3.7, Repoman-2.3.2

app-admin/logstash-bin/files/logstash-plugin.eselect [new file with mode: 0644]
app-admin/logstash-bin/logstash-bin-5.4.3-r1.ebuild [moved from app-admin/logstash-bin/logstash-bin-5.4.3.ebuild with 72% similarity]

diff --git a/app-admin/logstash-bin/files/logstash-plugin.eselect b/app-admin/logstash-bin/files/logstash-plugin.eselect
new file mode 100644 (file)
index 0000000..2967830
--- /dev/null
@@ -0,0 +1,85 @@
+# -*-eselect-*-  vim: ft=eselect
+# Copyright 2005-2017 Gentoo Foundation
+# Distributed under the terms of the GNU GPL version 2 or later
+
+DESCRIPTION="Manage user installed plugins of logstash"
+MAINTAINER="hydrapolic@gmail.com"
+
+PLUGINS="/var/lib/logstash/plugins-list.txt"
+LS_INSTALL_DIR="/opt/logstash"
+
+ls_plugin_wrapper() {
+  JARS_SKIP=true "${LS_INSTALL_DIR}/bin/logstash-plugin" "${1}" "${2}" || die
+}
+
+### install action
+describe_install() {
+  echo "Install plugin"
+}
+
+describe_install_parameters() {
+  echo "<plugin>"
+}
+
+do_install() {
+  [[ ${#} -lt 1 ]] && die "Please specify at least one plugin"
+
+  local plugin
+  for plugin; do
+    ls_plugin_wrapper install "${plugin}"
+    echo "${plugin}" >> "${PLUGINS}" || die
+  done
+
+  sort -u "${PLUGINS}" > "${PLUGINS}.tmp" || die
+  mv "${PLUGINS}.tmp" "${PLUGINS}" || die
+}
+
+### list action
+describe_list() {
+  echo "List user installed plugins"
+}
+
+do_list() {
+  if [[ -f "${PLUGINS}" ]]; then
+    write_list_start "Installed plugins:"
+
+    local plugin
+    while read -r plugin; do
+      write_kv_list_entry "${plugin}"
+    done < "${PLUGINS}"
+  fi
+}
+
+### reinstall action
+describe_reinstall() {
+  echo "Reinstall plugins"
+}
+
+do_reinstall() {
+  if [[ -f "${PLUGINS}" ]]; then
+    local plugin
+    while read -r plugin; do
+      ls_plugin_wrapper install "${plugin}"
+    done < "${PLUGINS}"
+  fi
+}
+
+### uninstall action
+describe_uninstall() {
+  echo "Uninstall plugin"
+}
+
+describe_uninstall_parameters() {
+  echo "<plugin>"
+}
+
+do_uninstall() {
+  if [[ -f "${PLUGINS}" ]]; then
+    local plugin
+    for plugin; do
+      grep "^${plugin}\$" "${PLUGINS}" || write_warning_msg "Plugin ${plugin} not recorded"
+      sed -i "/^${plugin}\$/d" "${PLUGINS}" || die
+      ls_plugin_wrapper remove "${plugin}"
+    done
+  fi
+}
similarity index 72%
rename from app-admin/logstash-bin/logstash-bin-5.4.3.ebuild
rename to app-admin/logstash-bin/logstash-bin-5.4.3-r1.ebuild
index f5c4d8c2e292a33fedc88832022d7150f3f95359..f8c948c748cfa7691169926788f1b7b3b3594010 100644 (file)
@@ -31,6 +31,7 @@ pkg_setup() {
 
 src_install() {
        keepdir /etc/"${MY_PN}"/{conf.d,patterns,plugins}
+       keepdir "/var/lib/${MY_PN}"
        keepdir "/var/log/${MY_PN}"
 
        insinto "/usr/share/${MY_PN}"
@@ -45,15 +46,27 @@ src_install() {
 
        newconfd "${FILESDIR}/${MY_PN}.confd" "${MY_PN}"
        newinitd "${FILESDIR}/${MY_PN}.initd" "${MY_PN}"
+
+       insinto /usr/share/eselect/modules
+       doins "${FILESDIR}"/logstash-plugin.eselect
 }
 
 pkg_postinst() {
        ewarn "The default user changed from root to ${MY_PN}. If you wish to run as root (for"
        ewarn "example to read local logs), be sure to change LS_USER and LS_GROUP in"
        ewarn "${EROOT%/}/etc/conf.d/${MY_PN}"
+       ewarn
+       ewarn "Self installed plugins are removed during Logstash upgrades (Bug #622602)"
+       ewarn "Install the plugins via eselect module that will automatically re-install"
+       ewarn "all self installed plugins after Logstash upgrades."
+       einfo
+       einfo "Installing plugins:"
+       einfo "eselect logstash-plugin install logstash-output-gelf"
        einfo
-       einfo "Installing plugins: (bug #601294)"
-       einfo "DEBUG=1 JARS_SKIP='true' bin/logstash-plugin install logstash-output-gelf"
+
+       einfo "Reinstalling self installed plugins (installed via eselect module):"
+       eselect logstash-plugin reinstall
+
        einfo
        einfo "Sample configuration:"
        einfo "${EROOT%/}/usr/share/${MY_PN}"