def list_versions(self): api = FortifyApi(self.ssc_server, token=self.token, verify_ssl=False) response = api.get_project_versions() if response.success: Logger.console.info("{0:^5} {1:30}".format('ID', 'Name')) Logger.console.info("{0:5} {1:30}".format('-' * 5, '-' * 30)) for version in response.data['data']: Logger.console.info("{0:^5} {1:30}".format( version['id'], version['name'])) elif not response.success and "401" in response.message: return response.response_code return None
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_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