{"record":{"id":"bf923f88a7d328d6","repo":"pulumi/pulumi","slug":"list-is-not-implemented-by-the-provider","errorCode":null,"errorMessage":"List is not implemented by the provider","messagePattern":"List is not implemented by the provider","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"warning","filePath":"sdk/python/lib/pulumi/provider/experimental/server.py","lineNumber":662,"sourceCode":"    async def Read(self, request, context):\n        resp = await self._provider.read(\n            provider.ReadRequest(\n                request.urn,\n                request.id,\n                PropertyValue.unmarshal_map(request.properties),\n                PropertyValue.unmarshal_map(request.inputs),\n            )\n        )\n        return proto.ReadResponse(\n            id=resp.resource_id,\n            properties=PropertyValue.marshal_map(resp.properties),\n            inputs=PropertyValue.marshal_map(resp.inputs),\n        )\n\n    async def List(self, request, context):\n        context.set_code(grpc.StatusCode.UNIMPLEMENTED)\n        context.set_details(\"List is not implemented by the provider\")\n        raise NotImplementedError(\"List is not implemented by the provider\")\n\n\ndef main(args: list[str], version: str, provider: provider.Provider) -> None:\n    \"\"\"For use as the `main` in programs that wrap a custom Provider\n    implementation into a Pulumi-compatible gRPC server.\n\n    :param provider: an instance of a Provider subclass\n\n    :args: command line arguments such as os.argv[1:]\n\n    \"\"\"\n\n    argp = argparse.ArgumentParser(description=\"Pulumi provider plugin (gRPC server)\")\n    argp.add_argument(\"engine\", help=\"Pulumi engine address\")\n    argp.add_argument(\"--logflow\", action=\"store_true\", help=\"Currently ignored\")\n    argp.add_argument(\"--logtostderr\", action=\"store_true\", help=\"Currently ignored\")\n\n    known_args, _ = argp.parse_known_args()","sourceCodeStart":644,"sourceCodeEnd":680,"githubUrl":"https://github.com/pulumi/pulumi/blob/793f7b2e160db4321fb7fb6b0607461e01cb251e/sdk/python/lib/pulumi/provider/experimental/server.py#L644-L680","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"# probe capability before depending on List\ntry:\n    stub.List(proto.ListRequest(), timeout=5)\n    list_supported = True\nexcept grpc.RpcError as e:\n    list_supported = e.code() != grpc.StatusCode.UNIMPLEMENTED","typeGuard":"def supports_list(e: grpc.RpcError) -> bool:\n    return e.code() == grpc.StatusCode.UNIMPLEMENTED and 'List is not implemented' in e.details()","tryCatchPattern":"try:\n    resp = stub.List(request)\nexcept grpc.RpcError as e:\n    if e.code() == grpc.StatusCode.UNIMPLEMENTED:\n        log.warning(\"provider does not support List; skipping enumeration\")\n    else:\n        raise","preventionTips":["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"],"tags":["python","grpc","provider","unimplemented"],"backgroundTag":"grpc-unimplemented-method","analyzedSha":"793f7b2e160db4321fb7fb6b0607461e01cb251e","analyzedAt":"2026-08-31T09:36:43.099Z","schemaVersion":2},"datasetVersion":"2026-08-31T14:17:45.589Z"}