[FEATURE] Add keep_versions to remove older versions after set threshold
This commit is contained in:
parent
18061966d7
commit
9152671b1c
38
out
38
out
@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
#pylint: disable=invalid-name
|
||||||
'''
|
'''
|
||||||
aptly-resource out
|
aptly-resource out
|
||||||
|
|
||||||
@ -14,9 +15,11 @@ import json
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import functools
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
from aptly_api import Client
|
from aptly_api import Client
|
||||||
from aptly_api.base import AptlyAPIException
|
from aptly_api.base import AptlyAPIException
|
||||||
|
import semver
|
||||||
|
|
||||||
BLOCK_SIZE = 65536
|
BLOCK_SIZE = 65536
|
||||||
|
|
||||||
@ -83,6 +86,41 @@ aptly.publish.update(
|
|||||||
force_overwrite = True
|
force_overwrite = True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if 'keep_versions' in config['source'] \
|
||||||
|
and config['source']['keep_versions'] > 0:
|
||||||
|
packages_delete = aptly.repos.search_packages(
|
||||||
|
'datentonne',
|
||||||
|
config['source']['package'] + ' (<= ' + archive_filename_parts[1] + ')'
|
||||||
|
)
|
||||||
|
|
||||||
|
versions_delete = []
|
||||||
|
for package in packages_delete:
|
||||||
|
package_data = package.key.split(' ')
|
||||||
|
versions_delete.append({
|
||||||
|
'version': package_data[2],
|
||||||
|
'key': package.key,
|
||||||
|
})
|
||||||
|
|
||||||
|
def compare_func(a, b):
|
||||||
|
return semver.compare(a['version'], b['version'])
|
||||||
|
|
||||||
|
versions_delete.sort(key=functools.cmp_to_key(compare_func))
|
||||||
|
versions_delete.reverse()
|
||||||
|
|
||||||
|
for i, package in enumerate(versions_delete):
|
||||||
|
if i >= config['source']['keep_versions']:
|
||||||
|
aptly.repos.delete_packages_by_key(
|
||||||
|
config['source']['repo'],
|
||||||
|
package['key'],
|
||||||
|
)
|
||||||
|
|
||||||
|
aptly.publish.update(
|
||||||
|
prefix = config['source']['repo'],
|
||||||
|
distribution = config['source']['distribution'],
|
||||||
|
force_overwrite = True
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
print(json.dumps({
|
print(json.dumps({
|
||||||
'version': {'version': archive_filename_parts[1]},
|
'version': {'version': archive_filename_parts[1]},
|
||||||
'metadata': [
|
'metadata': [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user