3
3
4
4
@author: gsnyder
5
5
6
- Find and delete older project-versions
6
+ Find and delete older project-versions, unless their phase is equal to RELEASED or ARCHIVED
7
7
'''
8
8
import argparse
9
9
import logging
10
10
import sys
11
11
12
12
from blackduck .HubRestApi import HubInstance
13
13
14
- parser = argparse .ArgumentParser ("Find and delete older project-versions" )
14
+ parser = argparse .ArgumentParser ("Find and delete older project-versions unless they are marked as RELEASED or ARCHIVED " )
15
15
parser .add_argument ("project_name" )
16
16
parser .add_argument ("num_versions_to_keep" ,
17
17
type = int ,
18
- help = "Give the number of (newest) versions to keep. Any versions above this number will be deleted." )
19
- parser .add_argument ("--preserve_scans" ,
20
- action = 'store_true' ,
21
- help = 'Set this option to preserve the scans associated with the versions being deleted. Default is False, so we will cleanup the scans as well' )
18
+ help = "Give the number of (newest, Non-RELEASED) versions to keep." )
22
19
23
20
args = parser .parse_args ()
24
21
25
- logging .basicConfig (format = '%(asctime)s:%(levelname)s:%(message)s' , stream = sys .stdout , level = logging .DEBUG )
22
+ logging .basicConfig (format = '%(asctime)s:%(levelname)s:%(module)s: %(message)s' , stream = sys .stderr , level = logging .DEBUG )
23
+ logging .getLogger ("requests" ).setLevel (logging .WARNING )
24
+ logging .getLogger ("urllib3" ).setLevel (logging .WARNING )
25
+ logging .getLogger ("blackduck.HubRestApi" ).setLevel (logging .WARNING )
26
26
27
27
hub = HubInstance ()
28
28
31
31
if project :
32
32
versions = hub .get_project_versions (project , limit = 9999 )
33
33
sorted_versions = sorted (versions ['items' ], key = lambda i : i ['createdAt' ])
34
- logging .debug ("Found and sorted {} versions for project {}" .format (
35
- len (sorted_versions ), args .project_name ))
36
- if len (sorted_versions ) > args .num_versions_to_keep :
37
- versions_to_delete = sorted_versions [:- args .num_versions_to_keep ]
34
+
35
+ # un_released_versions = list(filter(lambda v: v['phase'] not in ['RELEASED'], sorted_versions))
36
+ # logging.debug(f"Found {len(un_released_versions)} versions which are not in phase RELEASED of which we will keep only {args.num_versions_to_keep}")
37
+
38
+ un_released_versions = list (filter (lambda v : v ['phase' ] not in ['RELEASED' , 'ARCHIVED' ], sorted_versions ))
39
+ logging .debug (f"Found { len (un_released_versions )} versions which are not in phase RELEASED or ARCHIVED of which we will keep only { args .num_versions_to_keep } " )
40
+
41
+ if len (un_released_versions ) > args .num_versions_to_keep :
42
+ versions_to_delete = un_released_versions [:- args .num_versions_to_keep ]
38
43
39
44
version_names_being_deleted = [v ['versionName' ] for v in versions_to_delete ]
40
- logging .debug ("Deleting versions {}" .format (version_names_being_deleted ))
45
+ logging .info ("Deleting (the oldest) non-RELEASED versions: {}" .format (version_names_being_deleted ))
41
46
42
47
for version_to_delete in versions_to_delete :
43
48
hub .delete_project_version_by_name (args .project_name , version_to_delete ['versionName' ])
44
49
logging .info ("Deleted version {}" .format (version_to_delete ['versionName' ]))
45
50
else :
46
- logging .debug ("Found {} versions which is not greater than the number to keep {}" .format (
47
- len (sorted_versions ), args .num_versions_to_keep ))
51
+ logging .info ("Found {} (non-RELEASED) versions which is not greater than the number to keep {}" .format (
52
+ len (un_released_versions ), args .num_versions_to_keep ))
48
53
else :
49
54
logging .debug ("No project found with the name {}" .format (args .project_name ))
0 commit comments