save only fails sometimes

This commit is contained in:
meejah 2020-11-23 17:36:39 -07:00
parent 72f2e25f86
commit 1e1aad8cc8
2 changed files with 13 additions and 6 deletions

View File

@ -144,7 +144,7 @@ def remove(ctx, name):
fp.child('{}.cert.{}'.format(name, cert_count)).remove() fp.child('{}.cert.{}'.format(name, cert_count)).remove()
cert_count += 1 cert_count += 1
save_grid_manager(fp, ctx.obj.grid_manager) save_grid_manager(fp, ctx.obj.grid_manager, create=False)
@grid_manager.command() @grid_manager.command()
@ -177,10 +177,10 @@ def sign(ctx, name, expiry_days):
sign a new certificate sign a new certificate
""" """
fp = _config_path_from_option(ctx.parent.params["config"]) fp = _config_path_from_option(ctx.parent.params["config"])
expiry_seconds = int(expiry_days) * 86400 expiry = timedelta(days=expiry_days)
try: try:
certificate = ctx.obj.grid_manager.sign(name, expiry_seconds) certificate = ctx.obj.grid_manager.sign(name, expiry)
except KeyError: except KeyError:
raise click.ClickException( raise click.ClickException(
"No storage-server called '{}' exists".format(name) "No storage-server called '{}' exists".format(name)

View File

@ -252,7 +252,7 @@ class _GridManager(object):
return data return data
def save_grid_manager(file_path, grid_manager): def save_grid_manager(file_path, grid_manager, create=True):
""" """
Writes a Grid Manager configuration. Writes a Grid Manager configuration.
@ -260,6 +260,9 @@ def save_grid_manager(file_path, grid_manager):
(if None, stdout is used) (if None, stdout is used)
:param grid_manager: a _GridManager instance :param grid_manager: a _GridManager instance
:param bool create: if True (the default) we are creating a new
grid-manager and will fail if the directory already exists.
""" """
data = json.dumps( data = json.dumps(
grid_manager.marshal(), grid_manager.marshal(),
@ -269,8 +272,12 @@ def save_grid_manager(file_path, grid_manager):
if file_path is None: if file_path is None:
print("{}\n".format(data)) print("{}\n".format(data))
else: else:
try:
file_path.makedirs() file_path.makedirs()
file_path.chmod(0o700) file_path.chmod(0o700)
except OSError:
if create:
raise
with file_path.child("config.json").open("w") as f: with file_path.child("config.json").open("w") as f:
f.write("{}\n".format(data)) f.write("{}\n".format(data))