%define name plcapi
-%define version 5.3
-%define taglevel 11
+%define version 7.0
+%define taglevel 0
%define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
# requirement to mod_python or mod_wsgi: deferred to myplc
Requires: httpd mod_ssl
-Requires: Django
+# f29 does not come with an rpm for that; use pip instead
+# Requires: Django
Requires: postgresql >= 8.2, postgresql-server >= 8.2
# We use set everywhere
-Requires: python >= 2.7
-Requires: postgresql-python
-Requires: python-psycopg2
-Requires: python-pycurl
+Requires: python3
+Requires: python3-postgresql
+Requires: python3-psycopg2
+Requires: python3-pycurl
# used in GPG.py as a replacement to PyXML's Canonicalize
-Requires: python-lxml
-# Fedora had support for SOAPpy up to fedora20
-# https://lists.fedoraproject.org/pipermail/devel/2014-June/199730.html
-# https://lists.fedoraproject.org/pipermail/devel/2014-June/200379.html
-%if ("%{distro}" == "Fedora" && %{distrorelease} <= 20) || ("%{distro}" != "Fedora")
-Requires: SOAPpy
-%endif
-#Requires: python-simplejson
+Requires: python3-lxml
# for the RebootNodeWithPCU method
Requires: pcucontrol >= 1.0-6
-# for OMF integration
-Requires: pyaspects >= 0.4
-Requires: python-twisted-words
-Requires: python-twisted-web
-# ldap
-Requires: python-ldap
# for memcache
-Requires: memcached python-memcached
-### avoid having yum complain about updates, as stuff is moving around
-# plc.d/api
-Conflicts: MyPLC <= 4.3
-# xmlrpc
-Requires: php-xmlrpc
-
-# We use psycopg2
-#
-# but we don't need to rebuild it as we depend on distro's packages - baris
-# BuildRequires: postgresql-devel
+Requires: memcached python3-memcached
+
+####################
+# obsolete
+####################
+# standard xmlrpc.so that ships with PHP does not marshal NULL
+# prior to May 2017 we used to ship our own brew of xmlrpc but
+# that does not build anymore on f25
+# So bottom line is:
+# * don't use fedora's php-xmlrpc (no support for marshalling NULL)
+# * don't use our own that is way too old
+# * instead - thank you Ciro - we pull it as a git subtree from
+# https://github.com/gggeek/phpxmlrpc.git
+# that stuff requires the following though
+Requires: php-xml
+####################
-### # Standard xmlrpc.so that ships with PHP does not marshal NULL
-### # for building the wsdl interface we used to require PyXML
-### # but this has gone with f20 so turning this off for now
-### BuildRequires: php-devel
-### #BuildRequires: python-simplejson
-### Obsoletes: php-xmlrpc
-### Provides: php-xmlrpc
# PostgreSQL and SOAPpy are necessary to run the API server, but not
# plcsh. Since the only supported method of running the server is via
# python-pycurl and python-psycopg2 avail. from fedora 5
# we used to ship our own version of psycopg2 and pycurl, for fedora4
# starting with 4.3, support for these two modules is taken out
-#
-# Build __init__.py metafiles and PHP API.
+#
+# Build __init__.py metafiles and PHP API.
%{__make} %{?_smp_mflags}
-%{__make} -C wsdl
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/%{_bindir}
ln -s %{_datadir}/plc_api/plcsh $RPM_BUILD_ROOT/%{_bindir}/plcsh
-### mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/php.d
-### cat > $RPM_BUILD_ROOT/%{_sysconfdir}/php.d/xmlrpc.ini <<EOF
-### ; Enable xmlrpc extension module
-### extension=xmlrpc.so
-### EOF
-
# Install initscripts
echo "* Installing initscripts"
find plc.d | cpio -p -d -u ${RPM_BUILD_ROOT}/etc/
cp db-config.d/* ${RPM_BUILD_ROOT}/etc/planetlab/db-config.d
chmod 444 ${RPM_BUILD_ROOT}/etc/planetlab/db-config.d/*
-# Install wsdl
-echo "* Installing wsdl"
-install -D -m 644 wsdl/plcapi.wsdl $RPM_BUILD_ROOT/var/www/html/wsdl/plcapi.wsdl
-
## Thierry - June 2013 - omfv6 does not require xmpp pubsub nodes management any more
## Install omf_slicemgr.py
#install -D -m 755 omf/omf_slicemgr.py $RPM_BUILD_ROOT/usr/bin/omf_slicemgr.py
#install -D -m 755 omf/reset_xmpp_pubsub_nodes.py $RPM_BUILD_ROOT/usr/bin/reset_xmpp_pubsub_nodes.py
#mkdir -p $RPM_BUILD_ROOT/var/log/omf
-# Install ratelimit log
+# Create log file for plcapi
mkdir -p $RPM_BUILD_ROOT/var/log
+touch $RPM_BUILD_ROOT/var/log/plcapi.log
+chown apache:apache $RPM_BUILD_ROOT/var/log/plcapi.log
+
+# Install ratelimit log
touch $RPM_BUILD_ROOT/var/log/plc_api_ratelimit.log
chown apache:apache $RPM_BUILD_ROOT/var/log/plc_api_ratelimit.log
#%dir /var/log/omf/
%{_datadir}/plc_api/*
%{_bindir}/plcsh
-### %{php_extension_dir}/xmlrpc.so
-### %{_sysconfdir}/php.d/xmlrpc.ini
%config (noreplace) %{_datadir}/plc_api/PLC/Accessors/Accessors_site.py
/etc/plc.d
/etc/planetlab/db-config.d
-/var/www/html/wsdl/plcapi.wsdl
#/usr/bin/omf_slicemgr.py*
#/usr/bin/reset_xmpp_pubsub_nodes.py*
+/var/log/plcapi.log
/var/log/plc_api_ratelimit.log
%changelog
+* Mon Jan 07 2019 Thierry Parmentelat <thierry.parmentelat@inria.fr> - plcapi-7.0-0
+- based on python3, runs on f27 and f29
+- removed dependency to aspects, and so to rate limits
+- remove dependency to the Django rpm that is no longer available in f29
+- remove deps to python-twisted
+- use systemctl rather than service to manage postgresql
+
+* Wed May 16 2018 Thierry <Parmentelat> - plcapi-5.4-1
+- define accessor for site tag disabled_registration (used in plewww-5.2-9)
+- set disable_existing_loggers = False in logging config, that otherwise voids sfa logs
+
+* Sun Jul 16 2017 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.4-0
+- embed phpxmlrpc as a git subtree from github (OK with fedora24 and 25, probably sooner too)
+- logs in /var/log/plcapi.log
+- context managers for most open files
+
* Wed Feb 08 2017 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-11
- mostly issued for the R2lab deployment
- *** major
* Fri May 09 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-7
- no more doc packaged outside of myplc-docs - doc/ cleaned up
-- enhancements in doc on filters
+- enhancements in doc on filters
- bootcd-aware GetBootMedium merged from onelab
* Thu May 08 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-6
- checkpoint while the new myplc-docs package is underway
- bugfix: GetSlivers & conf files
-- doc: removed target files
+- doc: removed target files
* Wed Apr 23 2008 Stephen Soltesz <soltesz@cs.princeton.edu> - PLCAPI-4.2-5
- Removed conditions on the persons, site, and nodes indexes. previsouly only
- the non-deleted fields were index, resulting in massivly slow queries.
--
+-
* Wed Mar 26 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-3 PLCAPI-4.2-4
- plcsh: better handling of options when running as a shell script
- tweaks for accepted args in GetPCUTypes and BootNotifyOwners
* Thu Feb 14 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-2 PLCAPI-4.2-3
-- GetBootMedium support for build.sh full options, incl. serial & console_spec
+- GetBootMedium support for build.sh full options, incl. serial & console_spec
- GetBootMedium simpler, cleaner and safer use of tmpdirs in (dated from bootcustom.sh)
* Fri Feb 01 2008 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - PLCAPI-4.2-1 PLCAPI-4.2-2
- plcsh adds its own path to sys.path
- fix so GetNodes can be called from a Node
-* Fri Oct 27 2006 Mark Huang <mlhuang@CS.Princeton.EDU> -
+* Fri Oct 27 2006 Mark Huang <mlhuang@CS.Princeton.EDU> -
- Initial build.
%define module_current_branch 4.3