Skip to content

Commit 91b45b6

Browse files
authored
Merge pull request #91 from tanaysethi/Tanay
Create generate_confidence_score.py
2 parents a9a3828 + 489fa8e commit 91b45b6

File tree

3 files changed

+103
-1
lines changed

3 files changed

+103
-1
lines changed

blackduck/HubRestApi.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1677,4 +1677,9 @@ def execute_post(self, url, data, custom_headers={}):
16771677
response = requests.post(url, headers=headers, data=json_data, verify = not self.config['insecure'])
16781678
return response
16791679

1680-
1680+
def get_matched_components(self, version_obj, limit=9999):
1681+
url = "{}/matched-files".format(version_obj['_meta']['href'])
1682+
param_string = self._get_parameter_string({'limit': limit})
1683+
url = "{}{}".format(url, param_string)
1684+
response = self.execute_get(url)
1685+
return response.json()

examples/generate_confidence_score.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
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
9+
10+
parser = argparse.ArgumentParser("Generate Confidence Score Report")
11+
parser.add_argument("project_name")
12+
parser.add_argument("version")
13+
14+
args = parser.parse_args()
15+
16+
17+
hub = HubInstance()
18+
19+
project = hub.get_project_by_name(args.project_name)
20+
version = hub.get_version_by_name(project, args.version)
21+
22+
result = hub.get_matched_components(version)
23+
print(json.dumps(result))
24+
25+
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)