diff --git a/server/build_manifest.py b/server/build_manifest.py index ce18c58..e79330c 100755 --- a/server/build_manifest.py +++ b/server/build_manifest.py @@ -21,6 +21,12 @@ parser.add_argument( dest='image_dir', action='store', required=True) +parser.add_argument( + '--max-images', + dest='max_images', + action='store', + type=int, + default=0) parser.add_argument( '--old-manifest', dest='old_manifest', @@ -76,10 +82,21 @@ class ManifestBuilder(object): ret['images'].sort(key=lambda x: x['timestamp'], reverse=True) 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(): builder = ManifestBuilder(FLAGS.image_dir, FLAGS.old_manifest) manifest = builder.BuildManifest() + builder.DeleteOldImages(manifest, FLAGS.max_images) json.dump(manifest, sys.stdout, sort_keys=True, indent=4) sys.stdout.write('\n') diff --git a/server/publish_manifest.py b/server/publish_manifest.py index 17c19db..8eee80b 100755 --- a/server/publish_manifest.py +++ b/server/publish_manifest.py @@ -29,6 +29,12 @@ parser.add_argument( dest='key', action='store', required=True) +parser.add_argument( + '--max-images', + dest='max_images', + action='store', + type=int, + default=0) parser.add_argument( '--other-cert', dest='other_certs', @@ -54,6 +60,7 @@ def main(): '--default-rollout', str(FLAGS.default_rollout), '--image-dir', FLAGS.image_dir, '--old-manifest', unsigned_manifest, + '--max-images', str(FLAGS.max_images), stdout=fh) os.rename(fh.name, unsigned_manifest) except: