github.com/yasker/longhorn-engine@v0.0.0-20160621014712-6ed6cfca0729/frontend/rest/frontend.go (about) 1 package rest 2 3 import ( 4 "net/http" 5 "os" 6 7 "github.com/Sirupsen/logrus" 8 "github.com/gorilla/handlers" 9 "github.com/rancher/longhorn/types" 10 ) 11 12 var ( 13 log = logrus.WithFields(logrus.Fields{"pkg": "rest-frontend"}) 14 ) 15 16 type Device struct { 17 Name string 18 Size int64 19 SectorSize int64 20 backend types.ReaderWriterAt 21 } 22 23 func New() types.Frontend { 24 return &Device{} 25 } 26 27 func (d *Device) Activate(name string, size, sectorSize int64, rw types.ReaderWriterAt) error { 28 d.Name = name 29 d.backend = rw 30 d.Size = size 31 d.SectorSize = sectorSize 32 33 if err := d.start(); err != nil { 34 return err 35 } 36 37 return nil 38 } 39 40 func (d *Device) Shutdown() error { 41 return d.stop() 42 } 43 44 func (d *Device) start() error { 45 listen := "localhost:9414" 46 server := NewServer(d) 47 router := http.Handler(NewRouter(server)) 48 router = handlers.LoggingHandler(os.Stdout, router) 49 router = handlers.ProxyHeaders(router) 50 51 log.Infof("Rest Frontend listening on %s", listen) 52 53 go func() { 54 http.ListenAndServe(listen, router) 55 }() 56 return nil 57 } 58 59 func (d *Device) stop() error { 60 return nil 61 }