Skip to content

Commit 4e47a79

Browse files
author
Tanay Sethi
committed
Create get_bom_component_origin_info_Updated.py
ForBOM Component Info added Home Page URL and saving data in a CSV report Enhancement to get_bom_component_origin_info.py
1 parent db372a8 commit 4e47a79

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#!/usr/bin/env python
2+
3+
import argparse
4+
import json
5+
import csv
6+
import logging
7+
import sys
8+
9+
from blackduck.HubRestApi import HubInstance
10+
11+
12+
parser = argparse.ArgumentParser("Retreive BOM component license information for the given project and version")
13+
parser.add_argument("project_name")
14+
parser.add_argument("version")
15+
16+
args = parser.parse_args()
17+
18+
19+
hub = HubInstance()
20+
21+
project = hub.get_project_by_name(args.project_name)
22+
version = hub.get_version_by_name(project, args.version)
23+
24+
bom_components = hub.get_version_components(version)
25+
26+
all_origins = dict()
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+
32+
all_origin_info = {}
33+
components_info = [["Component Name", "Component Version" ,"Homepage", "Approval Status", "Component ID", "Component Version ID", "License"]]
34+
35+
for bom_component in bom_components['items']:
36+
component_url = bom_component['component']
37+
response = hub.execute_get(component_url)
38+
39+
# Component details include the home page url and additional home pages
40+
logging.debug("Retrieving component home page info for {}:{}".format(
41+
bom_component.get("componentName"), bom_component.get("componentVersionName")))
42+
component_details = None
43+
if response.status_code == 200:
44+
component_details = response.json()
45+
46+
for origin in bom_component.get('origins', []):
47+
logging.debug("Retrieving origin details for origin {}".format(origin['name']))
48+
origin_url = hub.get_link(origin, 'origin')
49+
response = hub.execute_get(origin_url)
50+
origin_details = None
51+
if response.status_code == 200:
52+
origin_details = response.json()
53+
54+
all_origin_info.update({
55+
"{}:{}".format(bom_component['componentName'], bom_component['componentVersionName']): {
56+
"component_details": component_details,
57+
"component_home_page": component_details.get("url"),
58+
"additional_home_pages": component_details.get("additionalHomepages"),
59+
"origin_details": origin_details,
60+
}
61+
})
62+
#component_info = [bom_component['componentName'], bom_component['componentVersionName'], component_details.get("url"), component_details['approvalStatus'], bom_component['component'], bom_component['componentVersion'], origin_details['license']['licenseDisplay']]
63+
component_info = [bom_component.get("componentName"), bom_component.get("componentVersionName"), component_details.get("url"), bom_component.get("approvalStatus"), bom_component.get("component"), bom_component.get("componentVersion"), origin_details.get('license').get("licenseDisplay")]
64+
components_info.append(component_info)
65+
66+
mycsv = csv.writer(open(r'Report.csv', 'w'), lineterminator='\n')
67+
for row in components_info:
68+
if any(row):
69+
mycsv.writerow(row)
70+
print("Report.csv is successfully generated")
71+
#print(json.dumps(all_origin_info))
72+

0 commit comments

Comments
 (0)