Skip to content

Commit 1025e42

Browse files
admacdonald1Eric Lei
authored andcommitted
Risk Report .csv generator
1 parent 142c493 commit 1025e42

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

examples/generate_risk_report.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import argparse
2+
from blackduck.HubRestApi import HubInstance
3+
import json
4+
import pandas as pd
5+
import time
6+
7+
parser = argparse.ArgumentParser("A program to create consolidated Source report for sub projects")
8+
parser.add_argument("project_name")
9+
parser.add_argument("version_name")
10+
11+
args = parser.parse_args()
12+
hub = HubInstance()
13+
14+
15+
project = hub.get_project_by_name(args.project_name)
16+
version = hub.get_version_by_name(project, args.version_name)
17+
bom_components = hub.get_version_components(version)
18+
timestamp = time.strftime('%m_%d_%Y_%H_%M')
19+
projname = args.project_name
20+
projversion = args.version_name
21+
file_out = (args.project_name + '-' + args.version_name + '-risk-report-' + timestamp + '.csv')
22+
23+
compnamelist = []
24+
compversionlist = []
25+
licensenameslist = []
26+
critsecrisklist = []
27+
highsecrisklist = []
28+
medsecrisklist = []
29+
lowsecrisklist = []
30+
opriskvaluelist = []
31+
32+
33+
34+
if project:
35+
if version:
36+
for bom_components in bom_components['items']:
37+
all_risk_profile_info = list()
38+
licenses = bom_components['licenses']
39+
securityRiskProfile = bom_components['securityRiskProfile']
40+
operationalRiskProfile = bom_components['operationalRiskProfile']
41+
compname = bom_components['componentName']
42+
compnamelist.append(compname)
43+
compversion = bom_components['componentVersionName']
44+
compversionlist.append(compversion)
45+
opriskvalue= ''
46+
for l in licenses:
47+
if l['licenseDisplay'] == 'licenseDisplay':
48+
pass
49+
licensename = l.get('licenseDisplay')
50+
licensenameslist.append(licensename)
51+
52+
lowsecrisk = securityRiskProfile['counts'][1]['count']
53+
lowsecrisklist.append(lowsecrisk)
54+
medsecrisk = securityRiskProfile['counts'][2]['count']
55+
medsecrisklist.append(medsecrisk)
56+
highsecrisk = securityRiskProfile['counts'][3]['count']
57+
highsecrisklist.append(highsecrisk)
58+
critsecrisk = securityRiskProfile['counts'][4]['count']
59+
critsecrisklist.append(critsecrisk)
60+
61+
nooprisk = operationalRiskProfile['counts'][1]['count']
62+
lowoprisk = operationalRiskProfile['counts'][2]['count']
63+
medoprisk = operationalRiskProfile['counts'][3]['count']
64+
highoprisk = operationalRiskProfile['counts'][4]['count']
65+
critoprisk = operationalRiskProfile['counts'][5]['count']
66+
if critoprisk == 1:
67+
opriskvalue = 'critical'
68+
elif highoprisk == 1:
69+
opriskvalue = 'high'
70+
elif medoprisk == 1:
71+
opriskvalue = 'medium'
72+
elif lowoprisk == 1:
73+
opriskvalue = 'low'
74+
else:
75+
opriskvalue = 'none'
76+
opriskvaluelist.append(opriskvalue)
77+
78+
print(opriskvaluelist)
79+
df = pd.DataFrame({'Component': compnamelist,
80+
'Version': compversionlist,
81+
'License(s)': licensenameslist,
82+
'Critical Security Risk': critsecrisklist,
83+
'High Security Risk': highsecrisklist,
84+
'Medium Security Risk': medsecrisklist,
85+
'Low Security Risk': lowsecrisklist,
86+
'Operational Risk': opriskvaluelist})
87+
print(df)
88+
df.to_csv(file_out, encoding='utf-8', index=False)
89+
90+

0 commit comments

Comments
 (0)