From bcafd4eb55fc3f149980048db8c3b9d524ba8da1 Mon Sep 17 00:00:00 2001 From: Erik Grafendorfer Date: Mon, 4 May 2026 12:31:27 +0200 Subject: [PATCH 1/2] Fixed 500 error because am_instance defaulted to non_api_instance --- src/attackmate_api_server/routers/playbooks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/attackmate_api_server/routers/playbooks.py b/src/attackmate_api_server/routers/playbooks.py index a825384..791cc0d 100644 --- a/src/attackmate_api_server/routers/playbooks.py +++ b/src/attackmate_api_server/routers/playbooks.py @@ -71,7 +71,7 @@ async def execute_playbook_from_yaml( raise ValueError('Received empty or invalid playbook YAML content.') playbook = Playbook.model_validate(playbook_dict) logger.info(f'Creating transient AttackMate instance, ID: {instance_id}') - am_instance = AttackMate(playbook=playbook, config=attackmate_config, varstore=None) + am_instance = AttackMate(playbook=playbook, config=attackmate_config, varstore=None,is_api_instance=True) return_code = await am_instance.main() final_state = varstore_to_state_model(am_instance.varstore) logger.info(f'Transient playbook execution finished. Return code: {return_code}') From fdcbc94d4eb91671ddcfadd74a23204a841d6150 Mon Sep 17 00:00:00 2001 From: Erik Grafendorfer Date: Mon, 11 May 2026 15:50:31 +0200 Subject: [PATCH 2/2] Changed repo for attackmate in pyproject.toml, made sure attackmate_config is not read too early upon playbook execution --- pyproject.toml | 2 +- src/attackmate_api_server/routers/playbooks.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 50dd7a4..38d393e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ dependencies = [ "python-dotenv", "pytest-asyncio", "pytest", - "attackmate @ git+https://github.com/thorinaboenke/attackmate.git@_api_refactor", + "attackmate @ git+https://github.com/ait-testbed/attackmate.git@development", "pytest-asyncio", "mypy>=1.19.1", "pydantic-settings>=2.13.1", diff --git a/src/attackmate_api_server/routers/playbooks.py b/src/attackmate_api_server/routers/playbooks.py index 791cc0d..90d8757 100644 --- a/src/attackmate_api_server/routers/playbooks.py +++ b/src/attackmate_api_server/routers/playbooks.py @@ -10,7 +10,7 @@ from attackmate_api_server.schemas import PlaybookResponseModel from attackmate_api_server.utils import varstore_to_state_model from attackmate_api_server.log_utils import instance_logging -from attackmate_api_server.state import attackmate_config +from attackmate_api_server.state import get_attackmate_config from attackmate_api_server.config import settings router = APIRouter(prefix='/playbooks', tags=['Playbooks']) @@ -71,7 +71,9 @@ async def execute_playbook_from_yaml( raise ValueError('Received empty or invalid playbook YAML content.') playbook = Playbook.model_validate(playbook_dict) logger.info(f'Creating transient AttackMate instance, ID: {instance_id}') - am_instance = AttackMate(playbook=playbook, config=attackmate_config, varstore=None,is_api_instance=True) + am_config = get_attackmate_config() + am_instance = AttackMate(playbook=playbook, config=am_config, + varstore=None, is_api_instance=True) return_code = await am_instance.main() final_state = varstore_to_state_model(am_instance.varstore) logger.info(f'Transient playbook execution finished. Return code: {return_code}')