mirror of
https://github.com/docker/cli.git
synced 2026-09-27 17:56:04 -04:00
Unify swarm init and update options
Add api side validation and defaults for init and
join requests.
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Upstream-commit: 881833232e
Component: cli
This commit is contained in:
committed by
Vincent Demeester
parent
8c71d519a4
commit
3e6d08e7ea
@@ -70,7 +70,7 @@ func parseDockerDaemonHost(addr string) (string, error) {
|
|||||||
|
|
||||||
switch addrParts[0] {
|
switch addrParts[0] {
|
||||||
case "tcp":
|
case "tcp":
|
||||||
return parseTCPAddr(addrParts[1], DefaultTCPHost)
|
return ParseTCPAddr(addrParts[1], DefaultTCPHost)
|
||||||
case "unix":
|
case "unix":
|
||||||
return parseSimpleProtoAddr("unix", addrParts[1], DefaultUnixSocket)
|
return parseSimpleProtoAddr("unix", addrParts[1], DefaultUnixSocket)
|
||||||
case "npipe":
|
case "npipe":
|
||||||
@@ -97,12 +97,12 @@ func parseSimpleProtoAddr(proto, addr, defaultAddr string) (string, error) {
|
|||||||
return fmt.Sprintf("%s://%s", proto, addr), nil
|
return fmt.Sprintf("%s://%s", proto, addr), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseTCPAddr parses and validates that the specified address is a valid TCP
|
// ParseTCPAddr parses and validates that the specified address is a valid TCP
|
||||||
// address. It returns a formatted TCP address, either using the address parsed
|
// address. It returns a formatted TCP address, either using the address parsed
|
||||||
// from tryAddr, or the contents of defaultAddr if tryAddr is a blank string.
|
// from tryAddr, or the contents of defaultAddr if tryAddr is a blank string.
|
||||||
// tryAddr is expected to have already been Trim()'d
|
// tryAddr is expected to have already been Trim()'d
|
||||||
// defaultAddr must be in the full `tcp://host:port` form
|
// defaultAddr must be in the full `tcp://host:port` form
|
||||||
func parseTCPAddr(tryAddr string, defaultAddr string) (string, error) {
|
func ParseTCPAddr(tryAddr string, defaultAddr string) (string, error) {
|
||||||
if tryAddr == "" || tryAddr == "tcp://" {
|
if tryAddr == "" || tryAddr == "tcp://" {
|
||||||
return defaultAddr, nil
|
return defaultAddr, nil
|
||||||
}
|
}
|
||||||
@@ -127,8 +127,11 @@ func parseTCPAddr(tryAddr string, defaultAddr string) (string, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
host, port, err := net.SplitHostPort(u.Host)
|
host, port, err := net.SplitHostPort(u.Host)
|
||||||
|
if err != nil {
|
||||||
|
// try port addition once
|
||||||
|
host, port, err = net.SplitHostPort(net.JoinHostPort(u.Host, defaultPort))
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("Invalid bind address format: %s", tryAddr)
|
return "", fmt.Errorf("Invalid bind address format: %s", tryAddr)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,12 +130,12 @@ func TestParseTCP(t *testing.T) {
|
|||||||
"localhost:5555/path": "tcp://localhost:5555/path",
|
"localhost:5555/path": "tcp://localhost:5555/path",
|
||||||
}
|
}
|
||||||
for invalidAddr, expectedError := range invalids {
|
for invalidAddr, expectedError := range invalids {
|
||||||
if addr, err := parseTCPAddr(invalidAddr, defaultHTTPHost); err == nil || err.Error() != expectedError {
|
if addr, err := ParseTCPAddr(invalidAddr, defaultHTTPHost); err == nil || err.Error() != expectedError {
|
||||||
t.Errorf("tcp %v address expected error %v return, got %s and addr %v", invalidAddr, expectedError, err, addr)
|
t.Errorf("tcp %v address expected error %v return, got %s and addr %v", invalidAddr, expectedError, err, addr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for validAddr, expectedAddr := range valids {
|
for validAddr, expectedAddr := range valids {
|
||||||
if addr, err := parseTCPAddr(validAddr, defaultHTTPHost); err != nil || addr != expectedAddr {
|
if addr, err := ParseTCPAddr(validAddr, defaultHTTPHost); err != nil || addr != expectedAddr {
|
||||||
t.Errorf("%v -> expected %v, got %v and addr %v", validAddr, expectedAddr, err, addr)
|
t.Errorf("%v -> expected %v, got %v and addr %v", validAddr, expectedAddr, err, addr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user