Skip to content

Commit 276f8cd

Browse files
author
Glenn Snyder
committed
adding example showing how to set the usage on BOM components (in a given project-version)
1 parent 109ce35 commit 276f8cd

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

examples/set_usage.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env python
2+
3+
import argparse
4+
import json
5+
import logging
6+
import sys
7+
8+
from blackduck.HubRestApi import HubInstance, object_id
9+
10+
usages = [
11+
'DYNAMICALLY_LINKED',
12+
'SOURCE_CODE',
13+
'STATICALLY_LINKED',
14+
'SEPARATE_WORK',
15+
'MERELY_AGGREGATED',
16+
'IMPLEMENTATION_OF_STANDARD',
17+
'PREREQUISITE',
18+
'DEV_TOOL_EXCLUDED'
19+
]
20+
parser = argparse.ArgumentParser("Set the Usage for all BOM components in a project version to the specified usage")
21+
parser.add_argument("project")
22+
parser.add_argument("version")
23+
parser.add_argument("new_usage", choices=usages)
24+
25+
args = parser.parse_args()
26+
27+
28+
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s', stream=sys.stderr, level=logging.DEBUG)
29+
logging.getLogger("requests").setLevel(logging.WARNING)
30+
logging.getLogger("urllib3").setLevel(logging.WARNING)
31+
logging.getLogger("blackduck").setLevel(logging.WARNING)
32+
33+
hub = HubInstance()
34+
35+
version = hub.get_project_version_by_name(args.project, args.version)
36+
37+
if version:
38+
components_url = hub.get_link(version, "components") + "?limit=9999"
39+
components = hub.execute_get(components_url).json().get('items', [])
40+
logging.debug(f"Found {len(components)} components in {args.project}-{args.version}")
41+
for component in components:
42+
component_url = component['_meta']['href']
43+
component['usages'] = [args.new_usage]
44+
result = hub.execute_put(component_url, data=component)
45+
# import pdb; pdb.set_trace()
46+
if result.status_code == 200:
47+
logging.info(f"Set usage for {component['componentName']}-{component.get('componentVersionName', '?')} to {args.new_usage}")
48+
else:
49+
logging.warning(f"Failed to set usage for {component['componentName']}-{component.get('componentVersionName', '?')} to {args.new_usage}. Status code was {result.status_code}")
50+
else:
51+
logging.error(f"Did not find the project-version: {args.project}-{args.version}")

0 commit comments

Comments
 (0)