pulumi/pulumi · warning · NotImplementedError
List is not implemented by the provider
Error message
List is not implemented by the provider
What it means
The List RPC on the experimental provider server is deliberately unimplemented: it sets the gRPC status to UNIMPLEMENTED, sets that detail message, and raises NotImplementedError. Pulumi calls List only when it needs to enumerate resources from a provider, and the experimental dynamic-provider framework does not support it. The error tells you the provider you are talking to cannot list resources.
Source
Thrown at sdk/python/lib/pulumi/provider/experimental/server.py:662
async def Read(self, request, context):
resp = await self._provider.read(
provider.ReadRequest(
request.urn,
request.id,
PropertyValue.unmarshal_map(request.properties),
PropertyValue.unmarshal_map(request.inputs),
)
)
return proto.ReadResponse(
id=resp.resource_id,
properties=PropertyValue.marshal_map(resp.properties),
inputs=PropertyValue.marshal_map(resp.inputs),
)
async def List(self, request, context):
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
context.set_details("List is not implemented by the provider")
raise NotImplementedError("List is not implemented by the provider")
def main(args: list[str], version: str, provider: provider.Provider) -> None:
"""For use as the `main` in programs that wrap a custom Provider
implementation into a Pulumi-compatible gRPC server.
:param provider: an instance of a Provider subclass
:args: command line arguments such as os.argv[1:]
"""
argp = argparse.ArgumentParser(description="Pulumi provider plugin (gRPC server)")
argp.add_argument("engine", help="Pulumi engine address")
argp.add_argument("--logflow", action="store_true", help="Currently ignored")
argp.add_argument("--logtostderr", action="store_true", help="Currently ignored")
known_args, _ = argp.parse_known_args()View on GitHub (pinned to 793f7b2e16)
Solutions
- If List is not needed for your workflow, avoid commands/flows that enumerate provider resources, or ignore this UNIMPLEMENTED result if your tooling tolerates it
- Upgrade the pulumi Python SDK so the experimental server implements (or properly negotiates) the List capability if a newer version adds support
- If you need List, migrate the provider to the non-experimental provider framework or implement the capability in a wrapper server
- File/check an issue on pulumi for List support in the experimental provider server
Defensive patterns
Strategy: fallback
Validate before calling
# probe capability before depending on List
try:
stub.List(proto.ListRequest(), timeout=5)
list_supported = True
except grpc.RpcError as e:
list_supported = e.code() != grpc.StatusCode.UNIMPLEMENTED Type guard
def supports_list(e: grpc.RpcError) -> bool:
return e.code() == grpc.StatusCode.UNIMPLEMENTED and 'List is not implemented' in e.details() Try / catch
try:
resp = stub.List(request)
except grpc.RpcError as e:
if e.code() == grpc.StatusCode.UNIMPLEMENTED:
log.warning("provider does not support List; skipping enumeration")
else:
raise Prevention
- Don't use enumeration-dependent commands against experimental dynamic providers
- Pin compatible engine and Python SDK versions
- Feature-probe List before relying on it
- Migrate critical providers off the experimental framework
When it happens
Trigger: The Pulumi engine (or another client) invokes the List RPC against a provider served by the experimental server — e.g. operations that enumerate provider resources such as pulumi refresh with certain resource types, import/bulk-operations flows, or manual gRPC calls to List.
Common situations: Using an experimental dynamic provider with CLI commands or features that probe the List capability; running newer engine versions against older experimental SDK code where the engine newly calls List.
Related errors
- List is not implemented by the provider
- ParameterizeRequest must contain either args or value
- {str(e)}: {pretty_stack}
- {str(e)}:\n{pretty_stack}
- load provider: %w
AI-assisted analysis of pulumi/pulumi@793f7b2e16 (2026-08-31).
Data as JSON: /api/errors/bf923f88a7d328d6.
Report an issue: GitHub.