summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorRuben Pollan <meskio@sindominio.net>2014-10-02 18:22:30 -0500
committerRuben Pollan <meskio@sindominio.net>2014-10-02 18:24:37 -0500
commita13070c7259fcd76ff3903c59470ae4c60fe780e (patch)
tree6ad966981685e86decdc3241fd6101580c1602af /pkg
parent93750f2371555ad0c769c62c1bd179e2b96c282c (diff)
Handle removals on the updater repo
Diffstat (limited to 'pkg')
-rwxr-xr-xpkg/tuf/release.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/pkg/tuf/release.py b/pkg/tuf/release.py
index c4abcd0d..0e1c989c 100755
--- a/pkg/tuf/release.py
+++ b/pkg/tuf/release.py
@@ -29,7 +29,6 @@ import sys
from tuf.repository_tool import load_repository
from tuf.repository_tool import import_rsa_privatekey_from_file
-from tuf.repository_tool import import_rsa_publickey_from_file
"""
Days until the expiration of targets.json and snapshot.json. After this ammount
@@ -102,6 +101,8 @@ class Targets(object):
recursive_walk=True,
followlinks=True)
+ self._remove_obsolete_targets(target_list)
+
for target in target_list:
octal_file_permissions = oct(os.stat(target).st_mode)[3:]
custom_file_permissions = {
@@ -109,6 +110,26 @@ class Targets(object):
}
self._repo.targets.add_target(target, custom_file_permissions)
+ def _remove_obsolete_targets(self, target_list):
+ """
+ Remove obsolete targets from TUF targets
+
+ :param target_list: list of targets on full path comming from TUF
+ get_filepaths_in_directory
+ :type target_list: list(str)
+ """
+ targets_path = os.path.join(self._repo_path, 'targets')
+ relative_path_list = map(lambda t: t.split("/targets")[1], target_list)
+ removed_targets = (set(self._repo.targets.target_files.keys())
+ - set(relative_path_list))
+
+ for target in removed_targets:
+ target_rel_path = target
+ if target[0] == '/':
+ target_rel_path = target[1:]
+ target_path = os.path.join(targets_path, target_rel_path)
+ self._repo.targets.remove_target(target_path)
+
if __name__ == "__main__":
main()