mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
etcdmain: infer bind addr from addr in v1 flagset
This commit is contained in:
@@ -85,6 +85,21 @@ func SetFlagsFromEnv(fs *flag.FlagSet) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// SetBindAddrFromAddr sets the value of bindAddr flag from the value
|
||||
// of addr flag. Both flags' Value must be of type IPAddressPort. If the
|
||||
// bindAddr flag is set and the addr flag is unset, it will set bindAddr to
|
||||
// 0.0.0.0:port of addr. Otherwise, it keeps the original values.
|
||||
func SetBindAddrFromAddr(fs *flag.FlagSet, bindAddrFlagName, addrFlagName string) {
|
||||
if IsSet(fs, bindAddrFlagName) || !IsSet(fs, addrFlagName) {
|
||||
return
|
||||
}
|
||||
addr := *fs.Lookup(addrFlagName).Value.(*IPAddressPort)
|
||||
addr.IP = "0.0.0.0"
|
||||
if err := fs.Set(bindAddrFlagName, addr.String()); err != nil {
|
||||
log.Panicf("etcdmain: unexpected flags set error: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// URLsFromFlags decides what URLs should be using two different flags
|
||||
// as datasources. The first flag's Value must be of type URLs, while
|
||||
// the second must be of type IPAddressPort. If both of these flags
|
||||
|
||||
@@ -81,6 +81,49 @@ func TestSetFlagsFromEnvBad(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetBindAddrFromAddr(t *testing.T) {
|
||||
tests := []struct {
|
||||
args []string
|
||||
waddr *IPAddressPort
|
||||
}{
|
||||
// no flags set
|
||||
{
|
||||
args: []string{},
|
||||
waddr: &IPAddressPort{},
|
||||
},
|
||||
// addr flag set
|
||||
{
|
||||
args: []string{"-addr=192.0.3.17:4001"},
|
||||
waddr: &IPAddressPort{IP: "0.0.0.0", Port: 4001},
|
||||
},
|
||||
// bindAddr flag set
|
||||
{
|
||||
args: []string{"-bind-addr=127.0.0.1:4001"},
|
||||
waddr: &IPAddressPort{IP: "127.0.0.1", Port: 4001},
|
||||
},
|
||||
// both addr flags set
|
||||
{
|
||||
args: []string{"-bind-addr=127.0.0.1:4001", "-addr=192.0.3.17:4001"},
|
||||
waddr: &IPAddressPort{IP: "127.0.0.1", Port: 4001},
|
||||
},
|
||||
}
|
||||
for i, tt := range tests {
|
||||
fs := flag.NewFlagSet("test", flag.PanicOnError)
|
||||
fs.Var(&IPAddressPort{}, "addr", "")
|
||||
bindAddr := &IPAddressPort{}
|
||||
fs.Var(bindAddr, "bind-addr", "")
|
||||
if err := fs.Parse(tt.args); err != nil {
|
||||
t.Errorf("#%d: failed to parse flags: %v", i, err)
|
||||
continue
|
||||
}
|
||||
SetBindAddrFromAddr(fs, "bind-addr", "addr")
|
||||
|
||||
if !reflect.DeepEqual(bindAddr, tt.waddr) {
|
||||
t.Errorf("#%d: bindAddr = %+v, want %+v", i, bindAddr, tt.waddr)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestURLsFromFlags(t *testing.T) {
|
||||
tests := []struct {
|
||||
args []string
|
||||
|
||||
Reference in New Issue
Block a user