./sfa/importer/sfa-import-plc.py ./sfa/importer/sfa-nuke-plc.py ./sfa/server/sfa-start.py \
$(CLIENTS)
-sync:
+synccheck:
ifeq (,$(SSHURL))
- @echo "sync: You must define, either PLC, or PLCHOST & GUEST, on the command line"
+ @echo "*sync: You must define, either PLC, or PLCHOST & GUEST, on the command line"
@echo " e.g. make sync PLC=private.one-lab.org"
@echo " or make sync PLCHOST=testbox1.inria.fr GUEST=vplc03.inria.fr"
@exit 1
-else
+endif
+
+sync: synccheck
+$(RSYNC) --relative ./sfa/ $(SSHURL)/usr/lib\*/python2.\*/site-packages/
+$(RSYNC) ./tests/ $(SSHURL)/root/tests-sfa
+$(RSYNC) $(BINS) $(SSHURL)/usr/bin/
+$(RSYNC) ./config/default_config.xml $(SSHURL)/etc/sfa/
+$(RSYNC) ./sfa/storage/sfa.sql $(SSHURL)/usr/share/sfa/
$(SSHCOMMAND) exec service sfa restart
-endif
# 99% of the time this is enough
-fastsync:
+fastsync: synccheck
+$(RSYNC) --relative ./sfa/ $(SSHURL)/usr/lib\*/python2.\*/site-packages/
$(SSHCOMMAND) exec service sfa restart
-clientsync:
+clientsync: synccheck
+$(RSYNC) $(BINS) $(SSHURL)/usr/bin/
-ricasync:
+ricasync: synccheck
+$(RSYNC) --relative ./sfa/fd ./sfa/generic/fd.py ./sfa/rspecs/versions/federica.py $(SSHURL)/usr/lib\*/python2.\*/site-packages/
+ $(SSHCOMMAND) exec service sfa restart
-.PHONY: sync fastsync clientsync
+.PHONY: synccheck sync fastsync clientsync ricasync
##########
CLIENTLIBFILES= \
( egrep -v '^(PGDATA=|PGLOG=|PGPORT=)' $postgresql_sysconfig
echo "PGDATA=$PGDATA"
echo "PGLOG=/var/log/pgsql"
- echo "PGPORT=$PLC_DB_PORT"
+ echo "PGPORT=$SFA_DB_PORT"
) >> $tmp ; mv -f $tmp $postgresql_sysconfig
######## /var/lib/pgsql/data
# a minimal library for writing "lightweight" SFA clients
#
+# xxx todo
+# this library should probably check for the expiration date of the various
+# certificates and automatically retrieve fresh ones when expired
+
+import sys
import os,os.path
import sfa.util.sfalogging
return filename
except IOError:
raise
- except:
- self.logger.log_exc("Could not produce/retrieve %s"%filename)
- raise Exception, "Could not produce/retrieve %s"%filename
+ except :
+ error = sys.exc_info()[:2]
+ message="Could not produce/retrieve %s (%s -- %s)"%\
+ (filename,error[0],error[1])
+ self.logger.log_exc(message)
+ raise Exception, message
return wrapped
return wrap
logger.debug("searching in version cache %s"%self.url())
cached_version = VersionCache().get(self.url())
if cached_version is not None:
- logger.info("Retrieved version info from cache")
+ logger.info("Retrieved version info from cache %s"%self.url())
return cached_version
### otherwise let's do the hard work
# dummy to meet Sfi's expectations for its 'options' field
try:
client=Sfi(options)
client.read_config()
- key_file = client.get_key_file()
- cert_file = client.get_cert_file(key_file)
+ client.bootstrap()
+ key_file = client.private_key
+ cert_file = client.my_gid
logger.debug("using key %s & cert %s"%(key_file,cert_file))
url=self.url()
logger.info('issuing GetVersion at %s'%url)
class Sfi:
- required_options=['verbose', 'debug', 'registry', 'sm', 'auth', 'user']
+ # dirty hack to make this class usable from the outside
+ required_options=['verbose', 'debug', 'registry', 'sm', 'auth', 'user', 'user_private_key']
@staticmethod
def default_sfi_dir ():
elif version:
self.create(version)
else:
- raise InvalidRSpec("No RSpec or version sepcified. Must specify a valid rspec string or a valid version")
+ raise InvalidRSpec("No RSpec or version specified. Must specify a valid rspec string or a valid version")
def create(self, version=None):
"""
Create root element