%define name plcapi
-%define version 5.2
-%define taglevel 7
+%define version 5.4
+%define taglevel 1
%define release %{taglevel}%{?pldistro:.%{pldistro}}%{?date:.%{date}}
Provides: PLCAPI
Obsoletes: PLCAPI
-# We use set everywhere
-Requires: python >= 2.4
-Requires: postgresql >= 8.2, postgresql-server >= 8.2
-Requires: postgresql-python
-Requires: python-psycopg2
-Requires: python-pycurl
-Requires: httpd
# requirement to mod_python or mod_wsgi: deferred to myplc
-Requires: mod_ssl
-Requires: SOAPpy
-Requires: python-simplejson
+Requires: httpd mod_ssl
+# 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: python3
+Requires: python3-postgresql
+Requires: python3-psycopg2
+Requires: python3-pycurl
+# used in GPG.py as a replacement to PyXML's Canonicalize
+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: python-memcached
-Requires: memcached
-Requires: Django
-### avoid having yum complain about updates, as stuff is moving around
-# plc.d/api
-Conflicts: MyPLC <= 4.3
-
-# 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
-BuildRequires: php-devel PyXML 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
%clean
rm -rf $RPM_BUILD_ROOT
-%define php_extension_dir %(php-config --extension-dir)
+###%define php_extension_dir %(php-config --extension-dir)
%files
%defattr(-,root,root,-)
#%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
+* 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
+- * dots allowed in login_base and slice name
+- * new lease filter 'day'
+- *** minor
+- * more explicit message in case of overlapping resas
+- * bugfix: escaping unicode in xml
+- * GetLeases allowed to anonymous callers
+- *** miscell
+- * use plain json library
+
+* Sun Jul 10 2016 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-10
+- GetBootMedium with systemd-debug option : add kernel arg systemd.log_target=console
+
+* Fri Jun 26 2015 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-9
+- new bootstate 'upgrade' is like reinstall but leaves slices intact
+
+* Fri Apr 24 2015 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-8
+- GetBootMedium now keeps logs of created bootCD's in /var/tmp/bootmedium
+
+* Fri Apr 03 2015 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-7
+- reviewed logging strategy, no more direct print but use log instead
+
+* Wed Feb 18 2015 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-6
+- extensions for the ipv6 feature
+- DeleteSliceTag can be run with the 'node' auth
+- xmlrpc-epi-php.c has has a tweak for f21/php-5.6
+- also SOAPpy is not present in f21 anymore, so drop that dep. with f>=21
+
+* Tue Aug 19 2014 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-5
+- allow GetSlices to filter on tags as well
+
+* Tue Aug 19 2014 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-4
+- enable filtering on tags (like hrn) with GetPersons and GetSites
+
+* Mon Jun 02 2014 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-3
+- provide more context in messages from AddPersonToSlice and DeletePersonFromSlice
+
+* Fri Mar 21 2014 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-2
+- don't use PyXML that is deprecated in f20, use lxml instead
+- higher max size for login_base (32 vs 20) and slice name (64 vs 32)
+
+* Tue Dec 10 2013 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.3-1
+- create accessor 'hrn' for site as well
+- create accessors 'sfa_created' for site/slice/person
+- AddSite() and AddSlice() set respectively Site HRN and Slice HRN.
+- UpdatePerson() updates Person HRN according to updated email.
+- UpdateSite() updates Site HRN according to updated login_base.
+- Fix AddPersonToSite().
+- GetPeerData() ignores Sites/Slices/Persons that have tag sfa_created=='True'
+- RefreshPeer() manages Site*Person and Person*Role relationships.
+
+* Thu Oct 10 2013 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.2-10
+- provide a slicename_to_hrn function
+
+* Fri Sep 20 2013 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.2-9
+- add an hrn accessor for slice so the SFA code can keep track of the federation-wide name of the slice
+
+* Wed Aug 28 2013 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.2-8
+- fix for wsgi-based deployments, each thread has its own api()
+
* Fri Jun 28 2013 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - plcapi-5.2-7
- also cleanup omf-slicemgr initscript
* 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