Pārlūkot izejas kodu

Revert "Allow spaces in network names"

This reverts commit 85b22fabbe2d3a961eec8d7c999ead041450734b.

Signed-off-by: Madhu Venugopal <madhu@docker.com>
Madhu Venugopal 8 gadi atpakaļ
vecāks
revīzija
4d1334c9ee
2 mainītis faili ar 15 papildinājumiem un 35 dzēšanām
  1. 4 4
      libnetwork/config/config.go
  2. 11 31
      libnetwork/config/config_test.go

+ 4 - 4
libnetwork/config/config.go

@@ -17,11 +17,11 @@ import (
 	"github.com/docker/libnetwork/osl"
 	"github.com/docker/libnetwork/osl"
 )
 )
 
 
-// restrictedNameRegex represents the regular expression which regulates the allowed network or endpoint names.
-const restrictedNameRegex = `^[\w]+[\w-. ]*[\w]+$`
+// RestrictedNameChars collects the characters allowed to represent a network or endpoint name.
+const restrictedNameChars = `[a-zA-Z0-9][a-zA-Z0-9_.-]`
 
 
 // RestrictedNamePattern is a regular expression to validate names against the collection of restricted characters.
 // RestrictedNamePattern is a regular expression to validate names against the collection of restricted characters.
-var restrictedNamePattern = regexp.MustCompile(restrictedNameRegex)
+var restrictedNamePattern = regexp.MustCompile(`^/?` + restrictedNameChars + `+$`)
 
 
 // Config encapsulates configurations of various Libnetwork components
 // Config encapsulates configurations of various Libnetwork components
 type Config struct {
 type Config struct {
@@ -243,7 +243,7 @@ func (c *Config) ProcessOptions(options ...Option) {
 // ValidateName validates configuration objects supported by libnetwork
 // ValidateName validates configuration objects supported by libnetwork
 func ValidateName(name string) error {
 func ValidateName(name string) error {
 	if !restrictedNamePattern.MatchString(name) {
 	if !restrictedNamePattern.MatchString(name) {
-		return fmt.Errorf("%q includes invalid characters, resource name has to conform to %q", name, restrictedNameRegex)
+		return fmt.Errorf("%s includes invalid characters, only %q are allowed", name, restrictedNameChars)
 	}
 	}
 	return nil
 	return nil
 }
 }

+ 11 - 31
libnetwork/config/config_test.go

@@ -46,37 +46,17 @@ func TestOptionsLabels(t *testing.T) {
 }
 }
 
 
 func TestValidName(t *testing.T) {
 func TestValidName(t *testing.T) {
-	assertName(t, "test", true)
-	assertName(t, "test1", true)
-	assertName(t, "test1.2_3", true)
-	assertName(t, "_test", true)
-	assertName(t, "test_", true)
-	assertName(t, "looks-good", true)
-	assertName(t, " test", false)
-	assertName(t, "test ", false)
-	assertName(t, "test.", false)
-	assertName(t, ".test", false)
-	assertName(t, "", false)
-	assertName(t, "   ", false)
-	assertName(t, "<>$$^", false)
-	assertName(t, "this is a good network name", true)
-	assertName(t, "this is also-good", true)
-	assertName(t, " this is a not good network name", false)
-	assertName(t, "this is a not either ", false)
-	assertName(t, "this one\nis not good", false)
-	assertName(t, "this one\tis not good", false)
-	assertName(t, "this one\ris not good", false)
-	assertName(t, "this one\vis not good", false)
-	assertName(t, "this one\fis not good", false)
-}
-func assertName(t *testing.T, name string, mustSucceed bool) {
-	msg := "Name validation succeeds for a case when it is expected to fail"
-	if mustSucceed {
-		msg = "Name validation fails for a name that must be accepted"
-	}
-	err := ValidateName(name)
-	if (err == nil) != mustSucceed {
-		t.Fatalf("%s: %s", msg, name)
+	if err := ValidateName("test"); err != nil {
+		t.Fatal("Name validation fails for a name that must be accepted")
+	}
+	if err := ValidateName(""); err == nil {
+		t.Fatal("Name validation succeeds for a case when it is expected to fail")
+	}
+	if err := ValidateName("   "); err == nil {
+		t.Fatal("Name validation succeeds for a case when it is expected to fail")
+	}
+	if err := ValidateName("<>$$^"); err == nil {
+		t.Fatal("Name validation succeeds for a case when it is expected to fail")
 	}
 	}
 }
 }