Summary:        Highly reliable distributed coordination
Name:           zookeeper
Version:        3.4.10
Release:        6%{?dist}
URL:            http://zookeeper.apache.org/
License:        Apache License, Version 2.0
Group:          Applications/System
Vendor:         VMware, Inc.
Distribution:   Photon
Source:         http://mirrors.ocf.berkeley.edu/apache/zookeeper/zookeeper-3.4.9/%{name}-%{version}.tar.gz
%define sha1 zookeeper=eb2145498c5f7a0d23650d3e0102318363206fba
Source1:        zookeeper.service
Source2:        zkEnv.sh
Patch0:	        zookeeper-3.4.8-server.patch
BuildRequires:  systemd
Requires:       systemd
Requires:       openjre8
Requires(pre):  /usr/sbin/useradd /usr/sbin/groupadd
Requires(postun):/usr/sbin/userdel /usr/sbin/groupdel
%description
ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds of services are used in some form or another by distributed applications. Each time they are implemented there is a lot of work that goes into fixing the bugs and race conditions that are inevitable. Because of the difficulty of implementing these kinds of services, applications initially usually skimp on them ,which make them brittle in the presence of change and difficult to manage. Even when done correctly, different implementations of these services lead to management complexity when the applications are deployed.

%prep
%setup -q
%patch0 -p1

%install
mkdir -p %{buildroot}%{_prefix}
mkdir -p %{buildroot}%{_bindir}
mkdir -p %{buildroot}%{_libdir}/java/zookeeper
mkdir -p %{buildroot}%{_libdir}/zookeeper
mkdir -p %{buildroot}%{_var}/log/zookeeper
mkdir -p %{buildroot}%{_sysconfdir}/zookeeper
mkdir -p %{buildroot}/sbin
mkdir -p %{buildroot}%{_prefix}/share/zookeeper/templates/conf
mkdir -p %{buildroot}%{_var}/zookeeper

cp zookeeper-%{version}.jar %{buildroot}%{_libdir}/java/zookeeper
cp src/packages/update-zookeeper-env.sh %{buildroot}/sbin/update-zookeeper-env.sh
cp src/packages/templates/conf/zookeeper-env.sh %{buildroot}%{_prefix}/share/zookeeper/templates/conf
cp conf/zoo_sample.cfg %{buildroot}%{_prefix}/share/zookeeper/templates/conf/zoo.cfg
chmod 0755 %{buildroot}/sbin/*

mv bin/* %{buildroot}%{_bindir}
mv lib/*.jar %{buildroot}%{_libdir}/java/zookeeper
mv lib/* %{buildroot}%{_libdir}/zookeeper
mv conf/zoo_sample.cfg %{buildroot}%{_sysconfdir}/zookeeper/zoo.cfg
mv conf/* %{buildroot}%{_sysconfdir}/zookeeper
pushd ..
rm -rf %{buildroot}/%{name}-%{version}
popd

mkdir -p %{buildroot}/lib/systemd/system
cp %{SOURCE1} %{buildroot}/lib/systemd/system/zookeeper.service
cp %{SOURCE2} %{buildroot}%{_bindir}/zkEnv.sh

install -vdm755 %{buildroot}/lib/systemd/system-preset
echo "disable zookeeper.service" > %{buildroot}/lib/systemd/system-preset/50-zookeeper.preset

%pre
getent group hadoop >/dev/null || /usr/sbin/groupadd -r hadoop
getent passwd zookeeper >/dev/null || /usr/sbin/useradd --comment "ZooKeeper" --shell /bin/bash -M -r --groups hadoop --home %{_prefix}/share/zookeeper zookeeper

%post
if [ $1 -eq 1 ] ; then
    # Initial installation
    # Enabled by default per "runs once then goes away" exception
    bash %{_prefix}/sbin/update-zookeeper-env.sh \
       --prefix=%{_prefix} \
       --conf-dir=%{_sysconfdir}/zookeeper \
       --log-dir=%{_var}/log/zookeeper \
       --pid-dir=%{_var}/run/zookeeper \
       --var-dir=%{_var}/zookeeper
fi
%{_sbindir}/ldconfig
%systemd_post zookeeper.service
 
%preun
if [ $1 -eq 0 ] ; then
bash %{_prefix}/sbin/update-zookeeper-env.sh \
       --prefix=%{_prefix} \
       --conf-dir=%{_sysconfdir}/zookeeper \
       --log-dir=%{_var}/log/zookeeper \
       --pid-dir=%{_var}/run/zookeeper \
       --var-dir=%{_var}/zookeeper \
       --uninstall
fi
%systemd_preun zookeeper.service

%postun
%systemd_postun_with_restart zookeeper.service
if [ $1 -eq 0 ] ; then
    /usr/sbin/userdel zookeeper
    /usr/sbin/groupdel hadoop
fi
/sbin/ldconfig

%files
%defattr(-,root,root)
%attr(0755,zookeeper,hadoop) %{_var}/log/zookeeper
%attr(0775,zookeeper,hadoop) /sbin/update-zookeeper-env.sh
%config(noreplace) %{_sysconfdir}/zookeeper/*
/lib/systemd/system/zookeeper.service
/lib/systemd/system-preset/50-zookeeper.preset
%{_prefix}

%changelog
*   Mon Sep 25 2017 Alexey Makhalov <amakhalov@vmware.com> 3.4.10-6
-   Remove shadow from requires and use explicit tools for post actions
*   Mon Sep 25 2017 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 3.4.10-5
-   Removed the java-export.sh script reference.
*   Thu Jun 01 2017 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 3.4.10-4
-   Renamed openjdk to openjdk8.
*   Wed May 31 2017 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 3.4.10-3
-   Provide preset to disable service by default
*   Wed May 24 2017 Xiaolin Li <xiaolinl@vmware.com> 3.4.10-2
-   Used RuntimeDirectory to create folder /var/run/zookeeper.
*   Wed Apr 05 2017 Xiaolin Li <xiaolinl@vmware.com> 3.4.10-1
-   Updated to version 3.4.10.
*   Mon Nov 28 2016 Vinay Kulkarni <kulkarniv@vmware.com> 3.4.9-1
-   Upgrade to 3.4.9 to address CVE-2016-5017
*   Tue May 24 2016 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 3.4.8-4
-   GA - Bump release of all rpms
*   Mon May 2 2016 Divya Thaluru <dthaluru@vmware.com>  3.4.8-3
-   Fixing spec file to handle rpm upgrade scenario correctly
*   Thu Apr 28 2016 Divya Thaluru <dthaluru@vmware.com>  3.4.8-2
-   Added logic to set classpath
*   Wed Feb 24 2016 Kumar Kaushik <kaushikk@vmware.com>  3.4.8-1
-   Updating version.
*   Fri Feb 05 2016 Anish Swaminathan <anishs@vmware.com>  3.4.6-8
-   Edit pre install script.
*   Tue Jan 12 2016 Anish Swaminathan <anishs@vmware.com>  3.4.6-7
-   Remove init.d file.
*   Thu Dec 10 2015 Xiaolin Li <xiaolinl@vmware.com>  3.4.6-6
-   Add systemd to Requires and BuildRequires.
*   Wed Nov 18 2015 Xiaolin Li <xiaolinl@vmware.com> 3.4.6-5
-   Add zookeeper to systemd service.
*   Tue Nov 10 2015 Mahmoud Bassiouny<mbassiouny@vmware.com> 3.4.6-4
-   Fix conflicts between zookeeper and chkconfig
*   Wed Sep 16 2015 Harish Udaiya Kumar<hudaiyakumar@vmware.com> 3.4.6-3
-   Udating the dependency after repackaging the openjdk, fixed post scripts
*   Wed Aug 05 2015 Kumar Kaushik <kaushikk@vmware.com> 3.4.6-2
-   Adding ldconfig in post section.
*   Thu Jun 11 2015 Harish Udaiya Kumar <hudaiyakumar@vmware.com> 3.4.6-1
-   Initial build. First version	Initial build. First version