diff options
| author | Ruben Pollan <meskio@sindominio.net> | 2014-10-02 18:22:30 -0500 | 
|---|---|---|
| committer | Ivan Alejandro <ivanalejandro0@gmail.com> | 2014-10-28 15:30:49 -0300 | 
| commit | 5d3e34a1d71c52a62bc8ce386d93d5dd3221d57c (patch) | |
| tree | a5c88a8e58536b5432f506c64ceeb49a972d165f | |
| parent | 7cb332c84eaef651cb614b2e2b9a49d6ff05ac42 (diff) | |
Handle removals on the updater repo
| -rw-r--r-- | changes/bug_6146_handle_removals_release | 1 | ||||
| -rwxr-xr-x | pkg/tuf/release.py | 23 | 
2 files changed, 23 insertions, 1 deletions
| diff --git a/changes/bug_6146_handle_removals_release b/changes/bug_6146_handle_removals_release new file mode 100644 index 00000000..6fe67d62 --- /dev/null +++ b/changes/bug_6146_handle_removals_release @@ -0,0 +1 @@ +- Make pkg/tuf/release.py handle removals in the repo 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() | 
