diff --git a/cmd/warrend/cmd_pool.go b/cmd/warrend/cmd_pool.go new file mode 100644 index 0000000..ccecdbd --- /dev/null +++ b/cmd/warrend/cmd_pool.go @@ -0,0 +1,42 @@ +package main + +import ( + //"github.com/dballard/warren/cmd/warrend/conf" + "github.com/dballard/warren/lib/warren" + "net" + "strings" +) + +var poolUsage = ` +pool [NAME] [LOW HIGH] +` + +var poolCmd = &SockCommand{ + Command: warren.Command{ + Name: "pool", + Usage: poolUsage, + Summary: "Get/Set port pool range for deployment", + }, + Run: poolRun, +} + +// pool [name] -- get +// pool [name] [low] [high] -- set +func poolRun(cmd *SockCommand, c net.Conn, path string, args ...string) { + if len(args) > 0 && args[0] == "help" { + warren.WriteStringz(c, cmd.Usage) + return + } + + // GET + if len(args) == 1 { + warren.WriteStringz(c, "Pool GET " + strings.Join(args, ", ") + "\n") + return + } + if len(args) == 3 { + warren.WriteStringz(c, "Pool SET\n") + return + } + warren.WriteStringz(c, cmd.Usage) + return +} diff --git a/cmd/warrend/conf/conf.go b/cmd/warrend/conf/conf.go index f7fd95a..0d712c9 100644 --- a/cmd/warrend/conf/conf.go +++ b/cmd/warrend/conf/conf.go @@ -32,14 +32,24 @@ func (m *Msg) Call() error { } // Conf package - thread safe conf -// All write ops are public API functions +// All write ops are public API functions ( Msg.Call() ) // that internall use channels to thread safely queue writes // all write ops cause FS conf writes so that state is preserved // Reads return copies of data +type Pool struct { + High int + Low int +} + +type Deployment struct { + Path string + Pool Pool +} + type Conf struct { // name : path - Deployments map[string]string + Deployments map[string]Deployment } var conf *Conf = nil @@ -63,11 +73,11 @@ func loadConf() { fmt.Println("Error parsing ", warren.WarrendConf, ": ", err) } if conf.Deployments == nil { - conf.Deployments = make(map[string]string) + conf.Deployments = make(map[string]Deployment) } // populate reverse map - for nick, dir := range conf.Deployments { - dirToNick[dir] = nick + for nick, dep := range conf.Deployments { + dirToNick[dep.Path] = nick } } @@ -90,6 +100,7 @@ func saveConf() error { return nil } +// TODO: return copies func GetConf() Conf { return *conf } diff --git a/cmd/warrend/conf/deployments.go b/cmd/warrend/conf/deployments.go index bfb4e96..28f9d6c 100644 --- a/cmd/warrend/conf/deployments.go +++ b/cmd/warrend/conf/deployments.go @@ -10,8 +10,6 @@ import ( // reverse look up map var dirToNick map[string]string = make(map[string]string) - - // given a valid deployment, add it // internal, thread unsafe func addDeployment(d *Msg) error { @@ -47,7 +45,6 @@ func rmDeployment(d *Msg) error { } // Validate a deployment is ok to insert -// internal thread unsafe func validateDeployment(d *Msg) error { // check if exists if _, ok := conf.Deployments[d.Args["Name"]]; ok { diff --git a/cmd/warrend/conf/pool.go b/cmd/warrend/conf/pool.go new file mode 100644 index 0000000..8f52a95 --- /dev/null +++ b/cmd/warrend/conf/pool.go @@ -0,0 +1 @@ +package conf diff --git a/cmd/warrend/main.go b/cmd/warrend/main.go index 459a0b8..1b32db3 100644 --- a/cmd/warrend/main.go +++ b/cmd/warrend/main.go @@ -133,6 +133,7 @@ func main() { warren.RegisterCommand(listCmd) warren.RegisterCommand(regCmd) warren.RegisterCommand(unregCmd) + warren.RegisterCommand(poolCmd) // Handle signals c := make(chan os.Signal, 1)