Skip to content

Commit

Permalink
lab: kube: add flag --version to create subcommand (#112)
Browse files Browse the repository at this point in the history
  • Loading branch information
falzm authored and pierre-emmanuelJ committed Mar 1, 2019
1 parent c11a123 commit 01808a6
Showing 1 changed file with 24 additions and 3 deletions.
27 changes: 24 additions & 3 deletions cmd/kube_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,11 @@ var kubeCreateCmd = &cobra.Command{
return err
}

kubernetesVersion, err := fetchKubernetesVersion()
requestedKubernetesVersion, err := cmd.Flags().GetString("version")
if err != nil {
return err
}
kubernetesVersion, err := fetchKubernetesVersion(requestedKubernetesVersion)
if err != nil {
return err
}
Expand Down Expand Up @@ -502,10 +506,26 @@ func (c *sshClient) scp(src, dst string) error {
return ioutil.WriteFile(dst, buf.Bytes(), 0600)
}

// fetchKubernetesVersion fetches the version from the latest file
// fetchKubernetesVersion fetches the latest stable version from the official
// release source, or if a specific version is requested checks if it actually
// exists.
//
// https://godoc.org/github.com/kubernetes/kubernetes/cmd/kubeadm/app/util#KubernetesReleaseVersion
func fetchKubernetesVersion() (string, error) {
func fetchKubernetesVersion(requested string) (string, error) {
if requested != "" {
r, err := http.Head(fmt.Sprintf("https://dl.k8s.io/release/v%s/bin/linux/amd64/kubectl", requested))
if err != nil {
return "", err
}
defer r.Body.Close()

if r.StatusCode != http.StatusOK {
return "", fmt.Errorf("unable to find Kubernetes release for version %q", requested)
}

return requested, nil
}

r, err := http.Get("https://dl.k8s.io/release/stable.txt")
if err != nil {
return "", err
Expand All @@ -530,5 +550,6 @@ func init() {
kubeCreateCmd.PersistentFlags().BoolVarP(&kubeCreateDebug, "debug", "d", false, "debug mode on")
kubeCreateCmd.Flags().StringP("size", "s", "medium", "<name | id> "+
"(micro|tiny|small|medium|large|extra-large|huge|mega|titan|jumbo)")
kubeCreateCmd.Flags().StringP("version", "v", "", "install a specific Kubernetes version")
kubeCmd.AddCommand(kubeCreateCmd)
}

0 comments on commit 01808a6

Please sign in to comment.