|
26 | 26 |
|
27 | 27 | from pprint import pprint
|
28 | 28 | from blackduck import Client
|
29 |
| -from collections import defaultdict |
30 | 29 |
|
31 |
| -def getlicensesfromprojectversion(subproject): |
32 |
| - subprojecturl=subproject['_meta']['href'] |
33 |
| - x = subprojecturl.split("/") |
| 30 | +def getprojects(project_name): |
| 31 | + params = { |
| 32 | + 'q': [f"name:{project_name}"] |
| 33 | + } |
| 34 | + projects = [p for p in bd.get_resource('projects', params=params) if p['name'] == project_name] |
| 35 | + return projects |
| 36 | + |
| 37 | +def getversions(project, version_name): |
| 38 | + params = { |
| 39 | + 'q': [f"versionName:{version_name}"] |
| 40 | + } |
| 41 | + versions = [v for v in bd.get_resource('versions', project, params=params) if v['versionName'] == version_name] |
| 42 | + return versions |
| 43 | + |
| 44 | +def returnsubprojecturl(x): |
| 45 | + xurl=x['_meta']['href'] |
| 46 | + x = xurl.split("/") |
34 | 47 | del x[5]
|
35 | 48 | del x[5]
|
36 | 49 | del x[5]
|
37 | 50 | del x[5]
|
38 |
| - subprojecturl = "/".join(x) |
| 51 | + xurl = "/".join(x) |
| 52 | + return xurl |
| 53 | + |
| 54 | +def getsubprojects(version): |
| 55 | + subcomponents = [ subcomponents for subcomponents in bd.get_resource('components',version) if subcomponents['componentType'] == "SUB_PROJECT" ] |
| 56 | + return subcomponents |
| 57 | + |
| 58 | +def checkforsubprojects(subproject): |
| 59 | + subprojecturl = returnsubprojecturl(subproject) |
| 60 | + version = bd.session.get(subprojecturl).json() |
| 61 | + subcomponents = [ subcomponents for subcomponents in bd.get_resource('components',version) if subcomponents['componentType'] == "SUB_PROJECT" ] |
| 62 | + if len(subcomponents)>0: |
| 63 | + check = True |
| 64 | + else: |
| 65 | + check= False |
| 66 | + return check |
| 67 | + |
| 68 | +def getlicensesfromprojectversion(subproject): |
| 69 | + subprojecturl = returnsubprojecturl(subproject) |
39 | 70 | version = bd.session.get(subprojecturl).json()
|
40 | 71 | components = bd.get_resource('components',version)
|
41 | 72 | licenselist = []
|
@@ -66,30 +97,24 @@ def main():
|
66 | 97 | bd = Client(base_url=args.base_url, token=access_token, verify=args.no_verify, timeout=60.0, retries=4)
|
67 | 98 | process_project_version(args.project_name, args.version_name, args)
|
68 | 99 |
|
| 100 | +def process_children(children): |
| 101 | + sys.exit() |
| 102 | + |
69 | 103 | def process_project_version(project_name, version_name, args):
|
70 | 104 | #Validating only 1 Project
|
71 |
| - params = { |
72 |
| - 'q': [f"name:{args.project_name}"] |
73 |
| - } |
74 |
| - projects = [p for p in bd.get_resource('projects', params=params) if p['name'] == args.project_name] |
| 105 | + projects = getprojects(args.project_name) |
75 | 106 | assert len(projects) == 1, f"There should be one, and only one project named {args.project_name}. We found {len(projects)}"
|
76 | 107 | project = projects[0]
|
77 | 108 |
|
78 | 109 | #Validates only 1 Version
|
79 |
| - params = { |
80 |
| - 'q': [f"versionName:{args.version_name}"] |
81 |
| - } |
82 |
| - versions = [v for v in bd.get_resource('versions', project, params=params) if v['versionName'] == args.version_name] |
| 110 | + versions = getversions(project, args.version_name) |
83 | 111 | assert len(versions) == 1, f"There should be one, and only one version named {args.version_name}. We found {len(versions)}"
|
84 | 112 | version = versions[0]
|
85 | 113 |
|
86 | 114 | #Return only sub-projects, not components
|
87 |
| - components = [ |
88 |
| - c for c in bd.get_resource('components',version) if c['componentType'] == "SUB_PROJECT" |
89 |
| - ] |
| 115 | + components = getsubprojects(version) |
90 | 116 |
|
91 | 117 | for subproject in components:
|
92 |
| - |
93 | 118 | url = subproject['_meta']['href']
|
94 | 119 | subprojectlicenses = getlicensesfromprojectversion(subproject)
|
95 | 120 | licenseblock = [
|
|
0 commit comments