hashicorp/nomad · error
CreateNetwork RPC not supported by driver
Error message
CreateNetwork RPC not supported by driver
What it means
CreateNetwork on the driver plugin server requires the underlying driver to implement the DriverNetworkManager interface. If the driver does not, the RPC is unsupported and this error is returned to the caller.
Source
Thrown at plugins/drivers/server.go:418
TaskName: event.TaskName,
Timestamp: pbTimestamp,
Message: event.Message,
Annotations: event.Annotations,
}
if err = srv.Send(pbEvent); err == io.EOF {
break
} else if err != nil {
return err
}
}
return nil
}
func (b *driverPluginServer) CreateNetwork(ctx context.Context, req *proto.CreateNetworkRequest) (*proto.CreateNetworkResponse, error) {
nm, ok := b.impl.(DriverNetworkManager)
if !ok {
return nil, fmt.Errorf("CreateNetwork RPC not supported by driver")
}
spec, created, err := nm.CreateNetwork(req.GetAllocId(), networkCreateRequestFromProto(req))
if err != nil {
return nil, err
}
return &proto.CreateNetworkResponse{
IsolationSpec: NetworkIsolationSpecToProto(spec),
Created: created,
}, nil
}
func (b *driverPluginServer) DestroyNetwork(ctx context.Context, req *proto.DestroyNetworkRequest) (*proto.DestroyNetworkResponse, error) {
nm, ok := b.impl.(DriverNetworkManager)
if !ok {
return nil, fmt.Errorf("DestroyNetwork RPC not supported by driver")
}View on GitHub (pinned to 482b49bf1a)
Solutions
- Use a driver that implements DriverNetworkManager (e.g. exec/qemu/docker variants with network support).
- Upgrade the driver plugin to a version implementing DriverNetworkManager.
- Remove network isolation requirements (network stanza / isolation features) from the task when using this driver.
Example fix
// before
func (d *MyDriver) TaskStart(...) error { ... } // no network manager
// after
func (d *MyDriver) CreateNetwork(allocID string, spec *drivers.NetworkIsolationSpec) (string, bool, error) {
return d.net.CreateNetwork(allocID, spec)
} Defensive patterns
Strategy: type-guard
Validate before calling
// Verify the driver supports network management before requesting isolation
if _, ok := drv.(drivers.DriverNetworkManager); !ok {
return errors.New("driver cannot create networks; remove network isolation requirements")
} Type guard
func supportsNetworkManager(d interface{}) bool {
_, ok := d.(drivers.DriverNetworkManager)
return ok
} Try / catch
_, err := client.CreateNetwork(ctx, req)
if err != nil && err.Error() == "CreateNetwork RPC not supported by driver" {
// fall back to host networking or fail scheduling with a clear message
} Prevention
- Pair network-isolation task requirements only with netns-capable drivers.
- Upgrade plugins before enabling network features in task groups.
- Probe driver capabilities at registration time and record them.
- Keep create/destroy network usage on the same driver type.
When it happens
Trigger: Calling CreateNetwork (e.g. via Nomad's network isolation hooks / bridge or netns setup) against a driver plugin that does not implement DriverNetworkManager.
Common situations: Task drivers without network namespace support being scheduled with network isolation requirements; older plugin binaries lacking the network manager capability; misconfigured task group requesting CNI/netns features with an incompatible driver.
Related errors
- DestroyNetwork RPC not supported by driver
- driver does not support exec
- plugin is shut down
- could not validate task driver capabilities: %v
- failed to start plugin: %v
AI-assisted analysis of hashicorp/nomad@482b49bf1a (2026-09-04).
Data as JSON: /api/errors/8ff4c7b00262433a.
Report an issue: GitHub.