From a344f5b34dcbc691c59cb0484fc163329498beef Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 3 Jun 2015 18:27:13 -0700 Subject: [PATCH] Misc changes before capturing proper video - Disable management UI command option - Remove featureflags option, filesystem and memory already support multipart - Print informative messages after starting minio server --- main.go | 38 ++++++++++++++--------------- pkg/api/api_generic_handlers.go | 2 +- pkg/api/api_router.go | 15 ++++-------- pkg/api/api_test.go | 5 ---- pkg/server/httpserver/httpserver.go | 30 ++++++++++++++++++++--- pkg/server/server.go | 18 +++++++------- 6 files changed, 61 insertions(+), 47 deletions(-) diff --git a/main.go b/main.go index 67f78054b..9ea66232f 100644 --- a/main.go +++ b/main.go @@ -28,7 +28,6 @@ import ( "github.com/dustin/go-humanize" "github.com/minio/cli" - "github.com/minio/minio/pkg/featureflags" "github.com/minio/minio/pkg/iodine" "github.com/minio/minio/pkg/server" "github.com/minio/minio/pkg/server/httpserver" @@ -113,15 +112,17 @@ EXAMPLES: var flags = []cli.Flag{ cli.StringFlag{ - Name: "api-address", + Name: "address", Value: ":9000", - Usage: "address for incoming API requests", - }, - cli.StringFlag{ - Name: "web-address", - Value: ":9001", - Usage: "address for incoming Management UI requests", + Usage: "ADDRESS:PORT for object storage access", }, + /* + cli.StringFlag{ + Name: "address-mgmt", + Value: ":9001", + Usage: "ADDRESS:PORT for management console access", + }, + */ cli.StringFlag{ Name: "cert", Hide: true, @@ -209,8 +210,8 @@ func runMemory(c *cli.Context) { Expiration: expiration, } apiServer := memoryDriver.GetStartServerFunc() - webServer := getWebServerConfigFunc(c) - servers := []server.StartServerFunc{apiServer, webServer} + // webServer := getWebServerConfigFunc(c) + servers := []server.StartServerFunc{apiServer} //, webServer} server.StartMinio(servers) } @@ -238,8 +239,8 @@ func runDonut(c *cli.Context) { Paths: paths, } apiServer := donutDriver.GetStartServerFunc() - webServer := getWebServerConfigFunc(c) - servers := []server.StartServerFunc{apiServer, webServer} + // webServer := getWebServerConfigFunc(c) + servers := []server.StartServerFunc{apiServer} //, webServer} server.StartMinio(servers) } @@ -253,8 +254,8 @@ func runFilesystem(c *cli.Context) { Path: c.Args()[0], } apiServer := fsDriver.GetStartServerFunc() - webServer := getWebServerConfigFunc(c) - servers := []server.StartServerFunc{apiServer, webServer} + // webServer := getWebServerConfigFunc(c) + servers := []server.StartServerFunc{apiServer} //, webServer} server.StartMinio(servers) } @@ -266,16 +267,17 @@ func getAPIServerConfig(c *cli.Context) httpserver.Config { } tls := (certFile != "" && keyFile != "") return httpserver.Config{ - Address: c.GlobalString("api-address"), + Address: c.GlobalString("address"), TLS: tls, CertFile: certFile, KeyFile: keyFile, } } +/* func getWebServerConfigFunc(c *cli.Context) server.StartServerFunc { config := httpserver.Config{ - Address: c.GlobalString("web-address"), + Address: c.GlobalString("address-mgmt"), TLS: false, CertFile: "", KeyFile: "", @@ -285,6 +287,7 @@ func getWebServerConfigFunc(c *cli.Context) server.StartServerFunc { } return webDrivers.GetStartServerFunc() } +*/ // Build date var BuildDate string @@ -328,9 +331,6 @@ func getSystemData() map[string]string { var Version = mustHashBinarySelf() func main() { - // enable features - featureflags.Enable(featureflags.MultipartPutObject) - // set up iodine iodine.SetGlobalState("minio.version", Version) iodine.SetGlobalState("minio.starttime", time.Now().Format(time.RFC3339)) diff --git a/pkg/api/api_generic_handlers.go b/pkg/api/api_generic_handlers.go index 4b2e224a3..49c5021c5 100644 --- a/pkg/api/api_generic_handlers.go +++ b/pkg/api/api_generic_handlers.go @@ -208,7 +208,7 @@ func (h validateAuthHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { // Ignore resources handler is wrapper handler used for API request resource validation // Since we do not support all the S3 queries, it is necessary for us to throw back a -// valid error message indicating such a feature to have been not implemented. +// valid error message indicating such a feature is not implemented. func ignoreResourcesHandler(h http.Handler) http.Handler { return resourceHandler{h} } diff --git a/pkg/api/api_router.go b/pkg/api/api_router.go index 3bfbf7aa0..941e24a2a 100644 --- a/pkg/api/api_router.go +++ b/pkg/api/api_router.go @@ -17,13 +17,11 @@ package api import ( - "log" "net/http" router "github.com/gorilla/mux" "github.com/minio/minio/pkg/api/logging" "github.com/minio/minio/pkg/api/quota" - "github.com/minio/minio/pkg/featureflags" "github.com/minio/minio/pkg/storage/drivers" ) @@ -44,14 +42,11 @@ func HTTPHandler(driver drivers.Driver) http.Handler { mux.HandleFunc("/{bucket}", api.putBucketHandler).Methods("PUT") mux.HandleFunc("/{bucket}", api.headBucketHandler).Methods("HEAD") mux.HandleFunc("/{bucket}/{object:.*}", api.headObjectHandler).Methods("HEAD") - if featureflags.Get(featureflags.MultipartPutObject) { - log.Println("Enabling feature", featureflags.MultipartPutObject) - mux.HandleFunc("/{bucket}/{object:.*}", api.putObjectPartHandler).Queries("partNumber", "{partNumber:[0-9]+}", "uploadId", "{uploadId:.*}").Methods("PUT") - mux.HandleFunc("/{bucket}/{object:.*}", api.listObjectPartsHandler).Queries("uploadId", "{uploadId:.*}").Methods("GET") - mux.HandleFunc("/{bucket}/{object:.*}", api.completeMultipartUploadHandler).Queries("uploadId", "{uploadId:.*}").Methods("POST") - mux.HandleFunc("/{bucket}/{object:.*}", api.newMultipartUploadHandler).Methods("POST") - mux.HandleFunc("/{bucket}/{object:.*}", api.abortMultipartUploadHandler).Queries("uploadId", "{uploadId:.*}").Methods("DELETE") - } + mux.HandleFunc("/{bucket}/{object:.*}", api.putObjectPartHandler).Queries("partNumber", "{partNumber:[0-9]+}", "uploadId", "{uploadId:.*}").Methods("PUT") + mux.HandleFunc("/{bucket}/{object:.*}", api.listObjectPartsHandler).Queries("uploadId", "{uploadId:.*}").Methods("GET") + mux.HandleFunc("/{bucket}/{object:.*}", api.completeMultipartUploadHandler).Queries("uploadId", "{uploadId:.*}").Methods("POST") + mux.HandleFunc("/{bucket}/{object:.*}", api.newMultipartUploadHandler).Methods("POST") + mux.HandleFunc("/{bucket}/{object:.*}", api.abortMultipartUploadHandler).Queries("uploadId", "{uploadId:.*}").Methods("DELETE") mux.HandleFunc("/{bucket}/{object:.*}", api.getObjectHandler).Methods("GET") mux.HandleFunc("/{bucket}/{object:.*}", api.putObjectHandler).Methods("PUT") diff --git a/pkg/api/api_test.go b/pkg/api/api_test.go index b53dc2de6..981bb1ca9 100644 --- a/pkg/api/api_test.go +++ b/pkg/api/api_test.go @@ -32,7 +32,6 @@ import ( "net/http" "net/http/httptest" - "github.com/minio/minio/pkg/featureflags" "github.com/minio/minio/pkg/storage/drivers" "github.com/minio/minio/pkg/storage/drivers/donut" "github.com/minio/minio/pkg/storage/drivers/fs" @@ -1456,7 +1455,6 @@ func (s *MySuite) TestObjectMultipartAbort(c *C) { } driver := s.Driver typedDriver := s.MockDriver - featureflags.Enable(featureflags.MultipartPutObject) httpHandler := HTTPHandler(driver) testServer := httptest.NewServer(httpHandler) @@ -1540,7 +1538,6 @@ func (s *MySuite) TestBucketMultipartList(c *C) { } driver := s.Driver typedDriver := s.MockDriver - featureflags.Enable(featureflags.MultipartPutObject) httpHandler := HTTPHandler(driver) testServer := httptest.NewServer(httpHandler) @@ -1630,7 +1627,6 @@ func (s *MySuite) TestObjectMultipartList(c *C) { } driver := s.Driver typedDriver := s.MockDriver - featureflags.Enable(featureflags.MultipartPutObject) httpHandler := HTTPHandler(driver) testServer := httptest.NewServer(httpHandler) @@ -1715,7 +1711,6 @@ func (s *MySuite) TestObjectMultipart(c *C) { } driver := s.Driver typedDriver := s.MockDriver - featureflags.Enable(featureflags.MultipartPutObject) httpHandler := HTTPHandler(driver) testServer := httptest.NewServer(httpHandler) diff --git a/pkg/server/httpserver/httpserver.go b/pkg/server/httpserver/httpserver.go index 8dde15552..d19c4015b 100644 --- a/pkg/server/httpserver/httpserver.go +++ b/pkg/server/httpserver/httpserver.go @@ -17,9 +17,10 @@ package httpserver import ( + "fmt" + "net" "net/http" - - "github.com/minio/minio/pkg/utils/log" + "strings" ) // Config - http server config @@ -52,12 +53,35 @@ func start(ctrlChannel <-chan string, errorChannel chan<- error, Handler: router, MaxHeaderBytes: 1 << 20, } - log.Println("Starting HTTP Server on:", config.Address) + + host, port, err := net.SplitHostPort(config.Address) + errorChannel <- err + + var hosts []string + switch { + case host != "": + hosts = append(hosts, host) + default: + addrs, err := net.InterfaceAddrs() + errorChannel <- err + for _, addr := range addrs { + if addr.Network() == "ip+net" { + h := strings.Split(addr.String(), "/")[0] + if ip := net.ParseIP(h); ip.To4() != nil { + hosts = append(hosts, h) + } + } + } + } switch { default: + for _, host := range hosts { + fmt.Printf("Starting minio server on: http://%s:%s\n", host, port) + } err = httpServer.ListenAndServe() case config.TLS == true: + fmt.Printf("Starting minio server on: https://%s:%s\n", host, port) httpServer.TLSConfig = getDefaultTLSConfig() err = httpServer.ListenAndServeTLS(config.CertFile, config.KeyFile) } diff --git a/pkg/server/server.go b/pkg/server/server.go index 1939291aa..392420576 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -32,14 +32,14 @@ import ( "github.com/minio/minio/pkg/utils/log" ) -// MemoryFactory is used to build memory api servers +// MemoryFactory is used to build memory api server type MemoryFactory struct { httpserver.Config MaxMemory uint64 Expiration time.Duration } -// GetStartServerFunc builds memory api servers +// GetStartServerFunc builds memory api server func (f MemoryFactory) GetStartServerFunc() StartServerFunc { return func() (chan<- string, <-chan error) { _, _, driver := memory.Start(f.MaxMemory, f.Expiration) @@ -48,13 +48,13 @@ func (f MemoryFactory) GetStartServerFunc() StartServerFunc { } } -// FilesystemFactory is used to build filesystem api servers +// FilesystemFactory is used to build filesystem api server type FilesystemFactory struct { httpserver.Config Path string } -// GetStartServerFunc builds memory api servers +// GetStartServerFunc builds memory api server func (f FilesystemFactory) GetStartServerFunc() StartServerFunc { return func() (chan<- string, <-chan error) { _, _, driver := fs.Start(f.Path) @@ -63,12 +63,12 @@ func (f FilesystemFactory) GetStartServerFunc() StartServerFunc { } } -// WebFactory is used to build web cli servers +// WebFactory is used to build web cli server type WebFactory struct { httpserver.Config } -// GetStartServerFunc builds web cli servers +// GetStartServerFunc builds web cli server func (f WebFactory) GetStartServerFunc() StartServerFunc { return func() (chan<- string, <-chan error) { ctrl, status, _ := httpserver.Start(web.HTTPHandler(), f.Config) @@ -76,13 +76,13 @@ func (f WebFactory) GetStartServerFunc() StartServerFunc { } } -// DonutFactory is used to build donut api servers +// DonutFactory is used to build donut api server type DonutFactory struct { httpserver.Config Paths []string } -// GetStartServerFunc DonutFactory builds donut api servers +// GetStartServerFunc DonutFactory builds donut api server func (f DonutFactory) GetStartServerFunc() StartServerFunc { return func() (chan<- string, <-chan error) { _, _, driver := donut.Start(f.Paths) @@ -94,7 +94,7 @@ func (f DonutFactory) GetStartServerFunc() StartServerFunc { // StartServerFunc describes a function that can be used to start a server with StartMinio type StartServerFunc func() (chan<- string, <-chan error) -// StartMinio starts minio servers +// StartMinio starts minio server func StartMinio(servers []StartServerFunc) { var ctrlChannels []chan<- string var errChannels []<-chan error