From 2b96b121a98a500fbc194dc1392f329ace086520 Mon Sep 17 00:00:00 2001 From: John Vanryn Date: Wed, 24 Jul 2019 13:09:29 -0400 Subject: [PATCH 1/4] Adding in example to report on project violations. --- examples/get_project_violations.py | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 examples/get_project_violations.py diff --git a/examples/get_project_violations.py b/examples/get_project_violations.py new file mode 100644 index 00000000..93845e84 --- /dev/null +++ b/examples/get_project_violations.py @@ -0,0 +1,32 @@ +''' +Created on Nov 14, 2018 + +@author: gsnyder + +Print a project given its name + +''' + +from blackduck.HubRestApi import HubInstance + +import argparse +import json + +parser = argparse.ArgumentParser(description='Use this to check the status of a given version for a given project. If no version is given then it will return the status of the highest version.') + +parser.add_argument("--limit") +parser.add_argument("project_name") +parser.add_argument("--version", default="empty", help="If provided, will result in if that version passed policy check") + +args = parser.parse_args() + +hub = HubInstance() + +status=hub.get_project_violation_status(args.project_name, args.version) +print(status) +if(status == "IN_VIOLATION"): + exit(0) +elif(status == "NOT_IN_VIOLATION"): + exit(0) +else: + exit(0) From 481371bcc814194ac8e43427331e0af1d91d7bf7 Mon Sep 17 00:00:00 2001 From: John Vanryn Date: Wed, 24 Jul 2019 13:10:29 -0400 Subject: [PATCH 2/4] Adding in example to report on project violations. fix a typo in purge. --- .gitignore | 2 ++ blackduck/HubRestApi.py | 27 +++++++++++++++++++++++++++ examples/get_project.py | 4 ++-- examples/purge.py | 4 ++-- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 894a44cc..d7d910e7 100644 --- a/.gitignore +++ b/.gitignore @@ -102,3 +102,5 @@ venv.bak/ # mypy .mypy_cache/ +/.idea/ +/examples/.restconfig.json diff --git a/blackduck/HubRestApi.py b/blackduck/HubRestApi.py index 67586e95..01724dc9 100644 --- a/blackduck/HubRestApi.py +++ b/blackduck/HubRestApi.py @@ -745,6 +745,7 @@ def get_projects(self, limit=100, parameters={}): url = self._get_projects_url() + self._get_parameter_string(parameters) headers['Accept'] = 'application/vnd.blackducksoftware.project-detail-4+json' response = requests.get(url, headers=headers, verify = not self.config['insecure']) + ## @SMELL need to gracfully handle not finding the project jsondata = response.json() return jsondata @@ -1240,6 +1241,32 @@ def get_project_info(self, project_name, link_name): else: return {} # nada + def get_project_violation_status(self, project_name, version): + + project = self.get_project_by_name(project_name) + if (project is None): + print ("Project " + project_name + " not found") + return ("NO_PROJECT") + + link = self.get_link(project, "versions") + if link: + response = self.execute_get(link) + if response.status_code == 200: + versions_list = json.loads(response.text) + for version_item in versions_list['items']: + print("Got version in file "+version_item['versionName']) + if version == 'empty': + version = version_item['versionName'] + if version_item['versionName'] == version: + print("Found " + version) + return version_item['policyStatus'] + else: + return ("VERSION_NOT_SCANNED") + else: + return ("SERVER_NOT_RETURNED_200") + else: + return {} # nada + def get_project_roles(self): all_project_roles = self.get_roles(parameters={"filter":"scope:project"}) return all_project_roles['items'] diff --git a/examples/get_project.py b/examples/get_project.py index e81df058..6c712256 100644 --- a/examples/get_project.py +++ b/examples/get_project.py @@ -34,7 +34,7 @@ project = hub.get_project_by_name(args.project_name) -print(json.dumps(project)) +print(json.dumps(project, indent=4, sort_keys=True)) if args.link: - print(json.dumps(hub.get_project_info(args.project_name, args.link))) \ No newline at end of file + print(json.dumps(hub.get_project_info(args.project_name, args.link), indent=4)) \ No newline at end of file diff --git a/examples/purge.py b/examples/purge.py index 39300e1e..b8a93305 100644 --- a/examples/purge.py +++ b/examples/purge.py @@ -26,13 +26,13 @@ if len(versionlist) == 1: continue for index in range(len(versionlist) - 1): - print ("index is ".format(index)) + print ("index is ", format(index)) va = versionlist[index] components = hub.get_version_components(va) codelocations = hub.get_version_codelocations(va) # hub.execute_delete(va['_meta']['href']) print ("version {} has {} codelocations".format(va['versionName'], codelocations['totalCount'])) - if codelocations > 0: + if codelocations['totalCount'] > 0: for codelocation in codelocations['items']: print (codelocation['_meta']['href']) locationid = codelocation['_meta']['href'].split("/")[5] From 42b30324b1d5554b02aff2336bca4c61ec9c05aa Mon Sep 17 00:00:00 2001 From: John Vanryn Date: Wed, 12 Feb 2020 14:34:32 -0500 Subject: [PATCH 3/4] Updates as per review --- blackduck/HubRestApi.py | 6 +++--- examples/purge.py | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/blackduck/HubRestApi.py b/blackduck/HubRestApi.py index 3db84220..04bd4c70 100644 --- a/blackduck/HubRestApi.py +++ b/blackduck/HubRestApi.py @@ -1171,7 +1171,7 @@ def get_project_violation_status(self, project_name, version): project = self.get_project_by_name(project_name) if (project is None): - print ("Project " + project_name + " not found") + logging.debug("Project " + project_name + " not found") return ("NO_PROJECT") link = self.get_link(project, "versions") @@ -1180,11 +1180,11 @@ def get_project_violation_status(self, project_name, version): if response.status_code == 200: versions_list = json.loads(response.text) for version_item in versions_list['items']: - print("Got version in file "+version_item['versionName']) + logging.debug("Got version in file "+version_item['versionName']) if version == 'empty': version = version_item['versionName'] if version_item['versionName'] == version: - print("Found " + version) + logging.debug("Found " + version) return version_item['policyStatus'] else: return ("VERSION_NOT_SCANNED") diff --git a/examples/purge.py b/examples/purge.py index b8a93305..cc147d1e 100644 --- a/examples/purge.py +++ b/examples/purge.py @@ -19,21 +19,21 @@ print ("total projects found: %s" % projects['totalCount']) for project in projects['items']: - print (project['name']) + print(project['name']) versions = hub.get_project_versions(project) - print ("\t versions found %s" % versions['totalCount']) + print("\t versions found %s" % versions['totalCount']) versionlist = versions['items'] if len(versionlist) == 1: continue for index in range(len(versionlist) - 1): - print ("index is ", format(index)) + print("index is ".format(index)) va = versionlist[index] components = hub.get_version_components(va) codelocations = hub.get_version_codelocations(va) # hub.execute_delete(va['_meta']['href']) - print ("version {} has {} codelocations".format(va['versionName'], codelocations['totalCount'])) + print("version {} has {} codelocations".format(va['versionName'], codelocations['totalCount'])) if codelocations['totalCount'] > 0: - for codelocation in codelocations['items']: + for codelocation in codelocations.get['items',[]]: print (codelocation['_meta']['href']) locationid = codelocation['_meta']['href'].split("/")[5] print (locationid) From bda7092942b7acd8a3020490a0a55f725fc5c698 Mon Sep 17 00:00:00 2001 From: John Vanryn Date: Thu, 13 Feb 2020 08:43:29 -0500 Subject: [PATCH 4/4] revert change --- examples/purge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/purge.py b/examples/purge.py index cc147d1e..f5d01990 100644 --- a/examples/purge.py +++ b/examples/purge.py @@ -33,7 +33,7 @@ # hub.execute_delete(va['_meta']['href']) print("version {} has {} codelocations".format(va['versionName'], codelocations['totalCount'])) if codelocations['totalCount'] > 0: - for codelocation in codelocations.get['items',[]]: + for codelocation in codelocations['items']: print (codelocation['_meta']['href']) locationid = codelocation['_meta']['href'].split("/")[5] print (locationid)