Clean up server-side images.
This commit is contained in:
@@ -21,6 +21,12 @@ parser.add_argument(
|
|||||||
dest='image_dir',
|
dest='image_dir',
|
||||||
action='store',
|
action='store',
|
||||||
required=True)
|
required=True)
|
||||||
|
parser.add_argument(
|
||||||
|
'--max-images',
|
||||||
|
dest='max_images',
|
||||||
|
action='store',
|
||||||
|
type=int,
|
||||||
|
default=0)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--old-manifest',
|
'--old-manifest',
|
||||||
dest='old_manifest',
|
dest='old_manifest',
|
||||||
@@ -76,10 +82,21 @@ class ManifestBuilder(object):
|
|||||||
ret['images'].sort(key=lambda x: x['timestamp'], reverse=True)
|
ret['images'].sort(key=lambda x: x['timestamp'], reverse=True)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def DeleteOldImages(self, manifest, max_images):
|
||||||
|
if not max_images:
|
||||||
|
return
|
||||||
|
for image in manifest['images'][max_images:]:
|
||||||
|
filename = '%d.iso' % image['timestamp']
|
||||||
|
print('Deleting old image:', filename, file=sys.stderr)
|
||||||
|
path = os.path.join(self._image_dir, filename)
|
||||||
|
os.unlink(path)
|
||||||
|
manifest['images'] = manifest['images'][:max_images]
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
builder = ManifestBuilder(FLAGS.image_dir, FLAGS.old_manifest)
|
builder = ManifestBuilder(FLAGS.image_dir, FLAGS.old_manifest)
|
||||||
manifest = builder.BuildManifest()
|
manifest = builder.BuildManifest()
|
||||||
|
builder.DeleteOldImages(manifest, FLAGS.max_images)
|
||||||
json.dump(manifest, sys.stdout, sort_keys=True, indent=4)
|
json.dump(manifest, sys.stdout, sort_keys=True, indent=4)
|
||||||
sys.stdout.write('\n')
|
sys.stdout.write('\n')
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,12 @@ parser.add_argument(
|
|||||||
dest='key',
|
dest='key',
|
||||||
action='store',
|
action='store',
|
||||||
required=True)
|
required=True)
|
||||||
|
parser.add_argument(
|
||||||
|
'--max-images',
|
||||||
|
dest='max_images',
|
||||||
|
action='store',
|
||||||
|
type=int,
|
||||||
|
default=0)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--other-cert',
|
'--other-cert',
|
||||||
dest='other_certs',
|
dest='other_certs',
|
||||||
@@ -54,6 +60,7 @@ def main():
|
|||||||
'--default-rollout', str(FLAGS.default_rollout),
|
'--default-rollout', str(FLAGS.default_rollout),
|
||||||
'--image-dir', FLAGS.image_dir,
|
'--image-dir', FLAGS.image_dir,
|
||||||
'--old-manifest', unsigned_manifest,
|
'--old-manifest', unsigned_manifest,
|
||||||
|
'--max-images', str(FLAGS.max_images),
|
||||||
stdout=fh)
|
stdout=fh)
|
||||||
os.rename(fh.name, unsigned_manifest)
|
os.rename(fh.name, unsigned_manifest)
|
||||||
except:
|
except:
|
||||||
|
|||||||
Reference in New Issue
Block a user