|
|
@ -24,37 +24,6 @@ import ( |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
const defaultRegistry = "docker.io" |
|
|
|
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
|
|
|
|
// CheckTools checks if the docker API server is responding
|
|
|
|
func CheckTools(c *cli.Context) error { |
|
|
|
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
|
|
|
|
// CreateCluster creates a new single-node cluster container and initializes the cluster directory
|
|
|
|
func CreateCluster(c *cli.Context) error { |
|
|
|
func CreateCluster(c *cli.Context) error { |
|
|
|
|
|
|
|
|
|
|
|
if err := checkClusterName(c.String("name")); err != nil { |
|
|
|
if err := CheckClusterName(c.String("name")); err != nil { |
|
|
|
return err; |
|
|
|
return err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// define image
|
|
|
|
// define image
|
|
|
|