zfs-localpv/cmd/main.go
Pawan 523e862159 refactor(zfspv): renamed watcher to mgmt package
as it does the management task also corrected few logs
and renamed zvol to zfs(as we support zvol and dataset both)

Signed-off-by: Pawan <pawan@mayadata.io>
2019-11-26 21:38:32 +05:30

87 lines
2.1 KiB
Go

package main
import (
"flag"
"fmt"
"log"
"os"
"github.com/Sirupsen/logrus"
config "github.com/openebs/zfs-localpv/pkg/config"
"github.com/openebs/zfs-localpv/pkg/driver"
"github.com/openebs/zfs-localpv/pkg/version"
zfs "github.com/openebs/zfs-localpv/pkg/zfs"
"github.com/spf13/cobra"
)
/*
* main routine to start the zfs-driver. The same
* binary is used to controller and agent deployment.
* they both are differentiated via plugin command line
* argument. To start the controller, we have to pass
* --plugin=controller and to start it as agent, we have
* to pass --plugin=agent.
*/
func main() {
_ = flag.CommandLine.Parse([]string{})
var config = config.Default()
cmd := &cobra.Command{
Use: "zfs-driver",
Short: "driver for provisioning zfs volume",
Long: `provisions and deprovisions the volume
on the node which has zfs pool configured.`,
Run: func(cmd *cobra.Command, args []string) {
run(config)
},
}
cmd.Flags().AddGoFlagSet(flag.CommandLine)
cmd.PersistentFlags().StringVar(
&config.NodeID, "nodeid", zfs.NodeID, "NodeID to identify the node running this driver",
)
cmd.PersistentFlags().StringVar(
&config.Version, "version", "", "Displays driver version",
)
cmd.PersistentFlags().StringVar(
&config.Endpoint, "endpoint", "unix://csi/csi.sock", "CSI endpoint",
)
cmd.PersistentFlags().StringVar(
&config.DriverName, "name", "zfs.csi.openebs.io", "Name of this driver",
)
cmd.PersistentFlags().StringVar(
&config.PluginType, "plugin", "csi-plugin", "Type of this driver i.e. controller or node",
)
err := cmd.Execute()
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "%s", err.Error())
os.Exit(1)
}
}
func run(config *config.Config) {
if config.Version == "" {
config.Version = version.Current()
}
logrus.Infof("%s - %s", version.Current(), version.GetGitCommit())
logrus.Infof(
"DriverName: %s Plugin: %s EndPoint: %s NodeID: %s",
config.DriverName,
config.PluginType,
config.Endpoint,
config.NodeID,
)
err := driver.New(config).Run()
if err != nil {
log.Fatalln(err)
}
os.Exit(0)
}