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  }