Skip to content

Commit d0c5311

Browse files
author
Glenn Snyder
committed
updating to exclude RELEASED, or ARCHIVED, versions
1 parent 717cf5f commit d0c5311

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

examples/find_and_delete_older_versions.py

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,26 @@
33
44
@author: gsnyder
55
6-
Find and delete older project-versions
6+
Find and delete older project-versions, unless their phase is equal to RELEASED or ARCHIVED
77
'''
88
import argparse
99
import logging
1010
import sys
1111

1212
from blackduck.HubRestApi import HubInstance
1313

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")
1515
parser.add_argument("project_name")
1616
parser.add_argument("num_versions_to_keep",
1717
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.")
2219

2320
args = parser.parse_args()
2421

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)
2626

2727
hub = HubInstance()
2828

@@ -31,19 +31,24 @@
3131
if project:
3232
versions = hub.get_project_versions(project, limit=9999)
3333
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]
3843

3944
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))
4146

4247
for version_to_delete in versions_to_delete:
4348
hub.delete_project_version_by_name(args.project_name, version_to_delete['versionName'])
4449
logging.info("Deleted version {}".format(version_to_delete['versionName']))
4550
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))
4853
else:
4954
logging.debug("No project found with the name {}".format(args.project_name))

0 commit comments

Comments
 (0)