func init() { kv, err := kvdb.New(mem.Name, "driver_test", []string{}, nil) if err != nil { log.Panicf("Failed to intialize KVDB") } err = kvdb.SetInstance(kv) if err != nil { log.Panicf("Failed to set KVDB instance") } }
func start(c *cli.Context) { if !osdcli.DaemonMode(c) { cli.ShowAppHelp(c) return } datastores := []string{mem.Name, etcd.Name} // We are in daemon mode. file := c.String("file") if file == "" { fmt.Println("OSD configuration file not specified. Visit openstorage.org for an example.") return } cfg, err := config.Parse(file) if err != nil { fmt.Println(err) return } kvdb_url := c.String("kvdb") u, err := url.Parse(kvdb_url) scheme := u.Scheme u.Scheme = "http" kv, err := kvdb.New(scheme, "openstorage", []string{u.String()}, nil) if err != nil { fmt.Println("Failed to initialize KVDB: ", u.Scheme, err) fmt.Println("Supported datastores: ", datastores) return } err = kvdb.SetInstance(kv) if err != nil { fmt.Println("Failed to initialize KVDB: ", err) return } // Start the volume drivers. for d, v := range cfg.Osd.Drivers { fmt.Println("Starting volume driver: ", d) _, err := volume.New(d, v) if err != nil { fmt.Println("Unable to start volume driver: ", d, err) return } err = apiserver.StartDriverAPI(d, 0, config.DriverAPIBase) if err != nil { fmt.Println("Unable to start volume driver: ", err) return } err = apiserver.StartPluginAPI(d, config.PluginAPIBase) if err != nil { fmt.Println("Unable to start volume plugin: ", err) return } } // Daemon does not exit. select {} }