This commit is contained in:
2025-04-02 13:53:11 +02:00
parent e49bcbc634
commit b2d816983b
2 changed files with 33 additions and 3 deletions

View File

@ -1 +1,3 @@
regex==2024.11.6 regex==2024.11.6
loguru==0.7.3

View File

@ -1,5 +1,6 @@
import os import os
from loguru import logger from loguru import logger
import argparse
import defectdojo_api import defectdojo_api
from defectdojo_api.rest import ApiException as DefectDojoApiException 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") 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( defectdojo_configuration = defectdojo_api.Configuration(
host = DEFECTDOJO_URL host = DEFECTDOJO_URL
@ -49,13 +75,14 @@ dependencytrack_configuration.api_key['ApiKeyAuth'] = DTRACK_TOKEN
with defectdojo_api.ApiClient(defectdojo_configuration) as defectdojo_api_client: with defectdojo_api.ApiClient(defectdojo_configuration) as defectdojo_api_client:
print("Create product in DefectDojo") print("Create product in DefectDojo")
productName = f"{projectName}:{projectVersion}"
product_response = \ product_response = \
executeApiCall( executeApiCall(
defectdojo_api_client, defectdojo_api_client,
defectdojo_api.ProductsApi, defectdojo_api.ProductsApi,
defectdojo_api.ProductsApi.products_create, defectdojo_api.ProductsApi.products_create,
defectdojo_api.ProductRequest, 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") print("Create engagement in DefectDojo")
start_time = datetime.date.today() start_time = datetime.date.today()
end_time = start_time + relativedelta(years=10) end_time = start_time + relativedelta(years=10)
engagementName = f"{productName} DTrack Link"
engagement_response = \ engagement_response = \
executeApiCall( executeApiCall(
defectdojo_api_client, defectdojo_api_client,
defectdojo_api.EngagementsApi, defectdojo_api.EngagementsApi,
defectdojo_api.EngagementsApi.engagements_create, defectdojo_api.EngagementsApi.engagements_create,
defectdojo_api.EngagementRequest, 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,
dependencytrack_api.ProjectApi.create_project, dependencytrack_api.ProjectApi.create_project,
dependencytrack_api.Project, dependencytrack_api.Project,
{ 'name': "Test Project", 'uuid': "", 'last_bom_import': 0 }, { 'name': projectName, 'version': projectVersion, 'classifier': projectClassifier, 'uuid': "", 'last_bom_import': 0 },
[] []
) )