package server

import (
	"github.com/coreos/etcd/third_party/github.com/goraft/raft"
)

func init() {
	raft.RegisterCommand(&SetClusterConfigCommand{})
}

// SetClusterConfigCommand sets the cluster-level configuration.
type SetClusterConfigCommand struct {
	Config *ClusterConfig `json:"config"`
}

// CommandName returns the name of the command.
func (c *SetClusterConfigCommand) CommandName() string {
	return "etcd:setClusterConfig"
}

// Apply updates the cluster configuration.
func (c *SetClusterConfigCommand) Apply(context raft.Context) (interface{}, error) {
	ps, _ := context.Server().Context().(*PeerServer)
	ps.SetClusterConfig(c.Config)
	return nil, nil
}