control: Fix controller CLI handling with distributed server object layer.

Object layer initialization is done lazily fix it.
This commit is contained in:
Harshavardhana 2016-08-18 14:50:50 -07:00
parent 8797952409
commit bb0466f4ce
10 changed files with 20 additions and 13 deletions

View File

@ -34,7 +34,7 @@ type HealListReply struct {
// ListObjects - list all objects that needs healing.
func (c *controllerAPIHandlers) ListObjectsHeal(arg *HealListArgs, reply *HealListReply) error {
objAPI := c.ObjectAPI
objAPI := c.ObjectAPI()
if objAPI == nil {
return errInvalidArgument
}
@ -61,7 +61,7 @@ type HealObjectReply struct{}
// HealObject - heal the object.
func (c *controllerAPIHandlers) HealObject(arg *HealObjectArgs, reply *HealObjectReply) error {
objAPI := c.ObjectAPI
objAPI := c.ObjectAPI()
if objAPI == nil {
return errInvalidArgument
}

View File

@ -38,5 +38,5 @@ func registerControlRPCRouter(mux *router.Router, ctrlHandlers *controllerAPIHan
// Handler for object healing.
type controllerAPIHandlers struct {
ObjectAPI ObjectLayer
ObjectAPI func() ObjectLayer
}

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package main
package cmd
import (
"fmt"

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package main
package cmd
import (
"net/rpc"

View File

@ -106,16 +106,23 @@ func configureServerHandler(srvCmdConfig serverCmdConfig) http.Handler {
ObjectAPI: newObjectLayerFn,
}
// Initialize Controller.
ctrlHandlers := &controllerAPIHandlers{
ObjectAPI: newObjectLayerFn,
}
// Initialize router.
mux := router.NewRouter()
// Register all routers.
registerStorageRPCRouters(mux, storageRPCs)
// Initialize distributed NS lock.
initDistributedNSLock(mux, srvCmdConfig)
// FIXME: till net/rpc auth is brought in "minio control" can be enabled only though
// this env variable.
if os.Getenv("MINIO_CONTROL") != "" {
if !strings.EqualFold(os.Getenv("MINIO_CONTROL"), "off") {
registerControlRPCRouter(mux, ctrlHandlers)
}

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package main
package cmd
import (
"errors"
@ -88,7 +88,7 @@ func loginRPCClient(rpcClient *RPCClient) (tokenStr string, err error) {
}, &reply); err != nil {
return "", err
}
if reply.ServerVersion != minioVersion {
if reply.ServerVersion != Version {
return "", errors.New("Server version mismatch")
}
// Reply back server provided token.

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package main
package cmd
// RPCLoginArgs - login username and password for RPC.
type RPCLoginArgs struct {

View File

@ -14,7 +14,7 @@
* limitations under the License.
*/
package main
package cmd
import (
"bytes"
@ -73,7 +73,7 @@ func (s *storageServer) LoginHandler(args *RPCLoginArgs, reply *RPCLoginReply) e
return err
}
reply.Token = token
reply.ServerVersion = minioVersion
reply.ServerVersion = Version
return nil
}

View File

@ -16,7 +16,7 @@
* limitations under the License.
*/
package main
package cmd
import (
"net"

View File

@ -16,7 +16,7 @@
* limitations under the License.
*/
package main
package cmd
import (
"net"