from glob import glob
from time import sleep
from certmaster import certmaster as certmaster
-from func.overlord.client import Client
-from func.CommonErrors import Func_Client_Exception
-import func.jobthing as jobthing
+
+func_import_failure = None
+try:
+ from func.overlord.client import Client
+ from func.CommonErrors import Func_Client_Exception
+ import func.jobthing as jobthing
+except ImportError, e:
+ func_import_failure = str(e)
def syncable(cert_list):
"""
results = []
for f in files:
hostname = os.path.basename(f).replace('.' + cm.cfg.cert_extension, '')
+ dirname = os.path.dirname(f)
digest = checksum(f)
- results.append([hostname, digest])
+ results.append([hostname, digest, dirname])
return results
def checksum(f):
for cert in local:
if cert not in peers:
cert_name = '%s.%s' % (cert[0], cm.cfg.cert_extension)
- full_path = os.path.join(cm.cfg.certroot, cert_name)
+ full_path = os.path.join(cert[2], cert_name)
fd = open(full_path)
certblob = fd.read()
fd.close()
if not cm.cfg.sync_certs and not forced:
sys.exit(0)
+ # Don't complain about func not being available until you actually want it
+ if func_import_failure != None:
+ print >> sys.stderr, "errors importing func: %s" % func_import_failure
+ sys.exit(1)
+
certs = glob(os.path.join(cm.cfg.certroot,
'*.%s' % cm.cfg.cert_extension))
hosts = syncable(certs)