Created
July 22, 2015 20:42
-
-
Save smothiki/423d63889cd8cc47e3b5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package cmd | |
import ( | |
"fmt" | |
"io" | |
"sync" | |
"github.com/deis/deis/deisctl/backend" | |
"github.com/deis/deis/pkg/prettyprint" | |
) | |
// Installk8s loads all Mesos units for StartMesos | |
func InstallK8s(b backend.Backend) error { | |
var wg sync.WaitGroup | |
io.WriteString(Stdout, prettyprint.DeisIfy("Installing Mesos...")) | |
installK8sServices(b, &wg, Stdout, Stderr) | |
wg.Wait() | |
fmt.Fprintln(Stdout, "Done.") | |
fmt.Fprintln(Stdout, "") | |
fmt.Fprintln(Stdout, "Please run `deisctl start mesos` to boot up Mesos.") | |
return nil | |
} | |
func installK8sServices(b backend.Backend, wg *sync.WaitGroup, out, err io.Writer) { | |
fmt.Fprintln(out, "K8s API Server...") | |
b.Create([]string{"kube-apiserver"}, wg, out, err) | |
wg.Wait() | |
fmt.Fprintln(out, "K8s controller and scheduler...") | |
b.Create([]string{"kube-controller-manager", "kube-scheduler"}, wg, out, err) | |
wg.Wait() | |
fmt.Fprintln(out, "K8s proxy and kubelet...") | |
b.Create([]string{"kube-proxy", "kube-kubelet"}, wg, out, err) | |
wg.Wait() | |
} | |
// UninstallK8s unloads and uninstalls all Mesos component definitions | |
func UninstallK8s(b backend.Backend) error { | |
var wg sync.WaitGroup | |
io.WriteString(Stdout, prettyprint.DeisIfy("Uninstalling Kubernetes...")) | |
uninstallk8sServices(b, &wg, Stdout, Stderr) | |
wg.Wait() | |
fmt.Fprintln(Stdout, "Done.") | |
return nil | |
} | |
func uninstallk8sServices(b backend.Backend, wg *sync.WaitGroup, out, err io.Writer) error { | |
fmt.Fprintln(out, "K8s proxy and kubelet ...") | |
b.Destroy([]string{"kube-proxy", "kube-kubelet"}, wg, out, err) | |
wg.Wait() | |
fmt.Fprintln(out, "K8s controller and scheduler...") | |
b.Destroy([]string{"kube-controller-manager", "kube-scheduler"}, wg, out, err) | |
wg.Wait() | |
fmt.Fprintln(out, "K8s API Server ...") | |
b.Destroy([]string{"kube-apiserver"}, wg, out, err) | |
wg.Wait() | |
return nil | |
} | |
// StartK8s activates all Mesos components. | |
func StartK8s(b backend.Backend) error { | |
var wg sync.WaitGroup | |
io.WriteString(Stdout, prettyprint.DeisIfy("Starting Kubernetes...")) | |
startK8sServices(b, &wg, Stdout, Stderr) | |
wg.Wait() | |
fmt.Fprintln(Stdout, "Done.") | |
fmt.Fprintln(Stdout, "") | |
fmt.Fprintln(Stdout, "Please use `deisctl config controller set schedulerModule=k8s`") | |
return nil | |
} | |
func startK8sServices(b backend.Backend, wg *sync.WaitGroup, out, err io.Writer) { | |
fmt.Fprintln(out, "K8s API Server...") | |
b.Start([]string{"kube-apiserver"}, wg, out, err) | |
wg.Wait() | |
fmt.Fprintln(out, "K8s controller and scheduler...") | |
b.Start([]string{"kube-controller-manager", "kube-scheduler"}, wg, out, err) | |
wg.Wait() | |
fmt.Fprintln(out, "K8s proxy and kubelet...") | |
b.Start([]string{"kube-proxy", "kube-kubelet"}, wg, out, err) | |
wg.Wait() | |
} | |
// StopK8s deactivates all Mesos components. | |
func StopK8s(b backend.Backend) error { | |
var wg sync.WaitGroup | |
io.WriteString(Stdout, prettyprint.DeisIfy("Stopping Kubernetes...")) | |
stopK8sServices(b, &wg, Stdout, Stderr) | |
wg.Wait() | |
fmt.Fprintln(Stdout, "Done.") | |
fmt.Fprintln(Stdout, "") | |
fmt.Fprintln(Stdout, "Please run `deisctl start k8s` to restart K8s.") | |
return nil | |
} | |
func stopK8sServices(b backend.Backend, wg *sync.WaitGroup, out, err io.Writer) { | |
fmt.Fprintln(out, "K8s API Server...") | |
b.Stop([]string{"kube-apiserver"}, wg, out, err) | |
wg.Wait() | |
fmt.Fprintln(out, "K8s controller and scheduler...") | |
b.Stop([]string{"kube-controller-manager", "kube-scheduler"}, wg, out, err) | |
wg.Wait() | |
fmt.Fprintln(out, "K8s proxy and kubelet...") | |
b.Stop([]string{"kube-proxy", "kube-kubelet"}, wg, out, err) | |
wg.Wait() | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment