github.com/ferranbt/nomad@v0.9.3-0.20190607002617-85c449b7667c/plugins/serve.go (about) 1 package plugins 2 3 import ( 4 "fmt" 5 6 log "github.com/hashicorp/go-hclog" 7 "github.com/hashicorp/nomad/plugins/device" 8 "github.com/hashicorp/nomad/plugins/drivers" 9 ) 10 11 // PluginFactory returns a new plugin instance 12 type PluginFactory func(log log.Logger) interface{} 13 14 // Serve is used to serve a new Nomad plugin 15 func Serve(f PluginFactory) { 16 logger := log.New(&log.LoggerOptions{ 17 Level: log.Trace, 18 JSONFormat: true, 19 }) 20 21 plugin := f(logger) 22 switch p := plugin.(type) { 23 case device.DevicePlugin: 24 device.Serve(p, logger) 25 case drivers.DriverPlugin: 26 drivers.Serve(p, logger) 27 default: 28 fmt.Println("Unsupported plugin type") 29 } 30 }