diff --git a/snippets/requirements.txt b/snippets/requirements.txt index b65648b..1d61f74 100644 --- a/snippets/requirements.txt +++ b/snippets/requirements.txt @@ -1 +1,3 @@ regex==2024.11.6 +loguru==0.7.3 + diff --git a/snippets/test03.py b/snippets/test03.py index 5042065..1b6ecac 100644 --- a/snippets/test03.py +++ b/snippets/test03.py @@ -1,5 +1,6 @@ import os from loguru import logger +import argparse import defectdojo_api from defectdojo_api.rest import ApiException as DefectDojoApiException @@ -34,6 +35,31 @@ except KeyError as e: raise Exception(f"Env variable {e} is shall be set") +parser = argparse.ArgumentParser(description='snippet/test03') +parser.add_argument('--name', '-n', + help='Project Name', + required=True) +parser.add_argument('--version', '-v', + help='Project Version', + required=True) +parser.add_argument('--description', '-d', + help='Project Description', + required=True) +parser.add_argument('--type', '-t', + help='Product Type from DefectDojo', + type=int, + required=True) +parser.add_argument('--classifier', '-c', + help='Project Classifier from DependencyTrack', + choices=['APPLICATION', 'FRAMEWORK', 'LIBRARY', 'CONTAINER', 'OPERATING_SYSTEM', 'DEVICE', 'FIRMWARE', 'FILE', 'PLATFORM', 'DEVICE_DRIVER', 'MACHINE_LEARNING_MODEL', 'DATA'], + required=True) +args = parser.parse_args() +projectName = args.name +projectVersion = args.version +projectDescription = args.description +productType = args.type +projectClassifier = args.classifier + defectdojo_configuration = defectdojo_api.Configuration( host = DEFECTDOJO_URL @@ -49,13 +75,14 @@ dependencytrack_configuration.api_key['ApiKeyAuth'] = DTRACK_TOKEN with defectdojo_api.ApiClient(defectdojo_configuration) as defectdojo_api_client: print("Create product in DefectDojo") + productName = f"{projectName}:{projectVersion}" product_response = \ executeApiCall( defectdojo_api_client, defectdojo_api.ProductsApi, defectdojo_api.ProductsApi.products_create, defectdojo_api.ProductRequest, - { 'name': "Test Product", 'description': "Just a product to test the API", 'prod_type': 1 }, + { 'name': productName, 'description': projectDescription, 'prod_type': productType }, [] ) @@ -65,13 +92,14 @@ with defectdojo_api.ApiClient(defectdojo_configuration) as defectdojo_api_client print("Create engagement in DefectDojo") start_time = datetime.date.today() end_time = start_time + relativedelta(years=10) + engagementName = f"{productName} DTrack Link" engagement_response = \ executeApiCall( defectdojo_api_client, defectdojo_api.EngagementsApi, defectdojo_api.EngagementsApi.engagements_create, defectdojo_api.EngagementRequest, - { 'name': "Test Engagement 01", 'target_start': start_time, 'target_end': end_time, 'status': 'In Progress', 'product': product_id }, + { 'name': engagementName, 'target_start': start_time, 'target_end': end_time, 'status': 'In Progress', 'product': product_id }, [] ) @@ -85,7 +113,7 @@ with dependencytrack_api.ApiClient(dependencytrack_configuration) as dependencyt dependencytrack_api.ProjectApi, dependencytrack_api.ProjectApi.create_project, dependencytrack_api.Project, - { 'name': "Test Project", 'uuid': "", 'last_bom_import': 0 }, + { 'name': projectName, 'version': projectVersion, 'classifier': projectClassifier, 'uuid': "", 'last_bom_import': 0 }, [] )