move hostname check to util

pull/37/head v1.1.0
iwilltry42 5 years ago
parent 4c14a8e5b2
commit fd720b0887
  1. 35
      cli/commands.go
  2. 33
      cli/util.go

@ -24,37 +24,6 @@ import (
)
const defaultRegistry = "docker.io"
const clusterNameMaxSize int = 35
// Make sure a cluster name is also a valid host name according to RFC 1123.
// We further restrict the length of the cluster name to shorter than 'clusterNameMaxSize'
// so that we can construct the host names based on the cluster name, and still stay
// within the 64 characters limit.
func checkClusterName(name string) error {
if len(name) > clusterNameMaxSize {
return fmt.Errorf("cluster name is too long")
}
if name[0] == '-' || name[len(name) - 1] == '-' {
return fmt.Errorf("cluster name can not start or end with - (dash)")
}
for _ , c := range name {
switch {
case '0' <= c && c <= '9':
case 'a' <= c && c <= 'z':
case 'A' <= c && c <= 'Z':
case c == '-':
break;
default:
return fmt.Errorf("cluster name contains charaters other than 'Aa-Zz', '0-9' or '-'")
}
}
return nil
}
// CheckTools checks if the docker API server is responding
func CheckTools(c *cli.Context) error {
@ -76,8 +45,8 @@ func CheckTools(c *cli.Context) error {
// CreateCluster creates a new single-node cluster container and initializes the cluster directory
func CreateCluster(c *cli.Context) error {
if err := checkClusterName(c.String("name")); err != nil {
return err;
if err := CheckClusterName(c.String("name")); err != nil {
return err
}
// define image

@ -1,6 +1,7 @@
package run
import (
"fmt"
"math/rand"
"strings"
"time"
@ -36,3 +37,35 @@ func GenerateRandomString(n int) string {
return sb.String()
}
/*** Cluster Name Validation ***/
const clusterNameMaxSize int = 35
// CheckClusterName ensures that a cluster name is also a valid host name according to RFC 1123.
// We further restrict the length of the cluster name to maximum 'clusterNameMaxSize'
// so that we can construct the host names based on the cluster name, and still stay
// within the 64 characters limit.
func CheckClusterName(name string) error {
if len(name) > clusterNameMaxSize {
return fmt.Errorf("[ERROR] Cluster name is too long")
}
if name[0] == '-' || name[len(name)-1] == '-' {
return fmt.Errorf("[ERROR] Cluster name can not start or end with - (dash)")
}
for _, c := range name {
switch {
case '0' <= c && c <= '9':
case 'a' <= c && c <= 'z':
case 'A' <= c && c <= 'Z':
case c == '-':
break
default:
return fmt.Errorf("[ERROR] Cluster name contains characters other than 'Aa-Zz', '0-9' or '-'")
}
}
return nil
}

Loading…
Cancel
Save