- Add create_sandbox() override to _ContainerBaseHandler raising
NotImplementedError, matching CloudResourceHandler pattern (issue #836)
- Add project_access() override to _ContainerBaseHandler raising
NotImplementedError, consistent with all other stub methods
- Rename @then("the import should succeed without errors") step to
@then("the container handler module import should succeed without errors")
to resolve AmbiguousStep collision with tdd_a2a_sdk_dependency_steps.py
- Update container_handler.feature to use renamed step
- Apply ruff format to container.py
ISSUES CLOSED: #2907
Implements the missing cleveragents.resource.handlers.container module
that is referenced by all seven container infrastructure resource types
registered in _resource_registry_container.py.
Previously, any attempt to use container-runtime, container-image,
container-mount, container-exec-env, container-port, container-volume,
or container-network resources raised HandlerResolutionError with
ModuleNotFoundError at runtime.
Changes:
- Add src/cleveragents/resource/handlers/container.py with five handler
classes: ContainerRuntimeHandler, ContainerImageHandler,
ContainerChildHandler (shared by mount/exec-env/port), ContainerVolumeHandler,
ContainerNetworkHandler
- All handlers extend _ContainerBaseHandler which extends BaseResourceHandler
and satisfies the ResourceHandler protocol
- resolve() raises NotImplementedError (container sandbox provisioning
is pending, mirrors CloudResourceHandler pattern)
- content_hash() returns identity hash based on resource type + location
- All CRUD and lifecycle stubs raise NotImplementedError
- Update handlers/__init__.py to export the five new handler classes
- Add features/container_handler.feature with 72 BDD scenarios covering
module importability, protocol conformance, handler resolution, type
labels, CRUD stubs, lifecycle stubs, and registry integration
- Add features/steps/container_handler_steps.py with step definitions
All nox sessions pass: lint, typecheck, unit_tests (72/72 scenarios).
ISSUES CLOSED: #2907