def __get_project_version__(self): """ If a project version already exists, return it's project_version_id If a project version does NOT exist, create it and return it's project_version_id If none of the above succeeds, log the reason(s) and return None :return: """ api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False) try: response = api.get_all_project_versions() # api should support a search expression here. alas... if response.success: for project_version in response.data['data']: if project_version['project']['name'] == self.application_name: if project_version['name'] == self.fortify_version: # we have a matching project version Logger.app.debug("Found existing project version {0}".format(project_version['id'])) return project_version['id'] # Didn't find a matching project version, verify that our project exists for project_version in response.data['data']: if project_version['project']['name'] == self.application_name: # Our project exsits, so create a new version return self.__create_project_version__() # Let upload_scan know that our project doesn't exist return -2 elif "401" in response.message: # Avoid printing error for invalid token. Return -1 to reauth return -1 else: Logger.app.critical("Failed to get project version. {0}".format(response.message)) except Exception as e: Logger.app.critical("Exception trying to get project version. {0}".format(e.message)) return None
def application_version_list(self): api = FortifyApi(host=self.host, token=self.token, verify_ssl=False) response = api.get_all_project_versions() data = response.data['data'] for version in data: print("{},{},{}".format(version['id'], version['project']['name'], version['name']).encode( 'utf-8', errors='ignore').decode())
def find_version_id(self, version_name): api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False) response = api.get_all_project_versions() if response.success: for version in response.data['data']: if version['project']['name'] == self.application_name: if version['name'] == version_name: return version['id'] return False
def list_application_versions(self, application): api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False) response = api.get_all_project_versions() if response.success: Logger.console.info("{0:^8} {1:30} {2:30}".format('ID', 'Application', 'Version')) Logger.console.info("{0:8} {1:30} {2:30}".format('-' * 8, '-' * 30, '-' * 30)) for version in response.data['data']: if version['project']['name'] == application: Logger.console.info( "{0:8} {1:30} {2:30}".format(version['id'], version['project']['name'], version['name'])) elif not response.success and "401" in response.message: return response.response_code return None
def get_application_and_versions(self): api = FortifyApi(host=self.host, token=self.token, verify_ssl=False) response = api.get_all_project_versions() return response.data['data']