// CloudCfg command line tool. func main() { flag.Usage = func() { usage() } flag.Parse() // Scan the arguments list util.InitLogs() defer util.FlushLogs() if *versionFlag { fmt.Println("Version:", AppVersion) os.Exit(0) } secure := true var masterServer string if len(*httpServer) > 0 { masterServer = *httpServer } else if len(os.Getenv("KUBERNETES_MASTER")) > 0 { masterServer = os.Getenv("KUBERNETES_MASTER") } else { masterServer = "http://localhost:8080" } parsedURL, err := url.Parse(masterServer) if err != nil { glog.Fatalf("Unable to parse %v as a URL\n", err) } if parsedURL.Scheme != "" && parsedURL.Scheme != "https" { secure = false } var auth *kube_client.AuthInfo if secure { auth, err = kubecfg.LoadAuthInfo(*authConfig) if err != nil { glog.Fatalf("Error loading auth: %v", err) } } if *proxy { glog.Info("Starting to serve on localhost:8001") server := kubecfg.NewProxyServer(*www, masterServer, auth) glog.Fatal(server.Serve()) } if len(flag.Args()) < 1 { usage() os.Exit(1) } method := flag.Arg(0) client := kube_client.New(masterServer, auth) matchFound := executeAPIRequest(method, client) || executeControllerRequest(method, client) if matchFound == false { glog.Fatalf("Unknown command %s", method) } }
// CloudCfg command line tool. func main() { flag.Usage = func() { usage() } flag.Parse() // Scan the arguments list util.InitLogs() defer util.FlushLogs() if *versionFlag { fmt.Println("Version:", APP_VERSION) os.Exit(0) } secure := true parsedUrl, err := url.Parse(*httpServer) if err != nil { glog.Fatalf("Unable to parse %v as a URL\n", err) } if parsedUrl.Scheme != "" && parsedUrl.Scheme != "https" { secure = false } var auth *kube_client.AuthInfo if secure { auth, err = kubecfg.LoadAuthInfo(*authConfig) if err != nil { glog.Fatalf("Error loading auth: %#v", err) } } if *proxy { glog.Info("Starting to serve on localhost:8001") server := kubecfg.NewProxyServer(*www, *httpServer, auth) glog.Fatal(server.Serve()) } if len(flag.Args()) < 1 { usage() os.Exit(1) } method := flag.Arg(0) matchFound := executeAPIRequest(method, auth) || executeControllerRequest(method, auth) if matchFound == false { glog.Fatalf("Unknown command %s", method) } }
func main() { flag.Usage = func() { usage() } flag.Parse() util.InitLogs() defer util.FlushLogs() verflag.PrintAndExitIfRequested() secure := true var masterServer string if len(*httpServer) > 0 { masterServer = *httpServer } else if len(os.Getenv("KUBERNETES_MASTER")) > 0 { masterServer = os.Getenv("KUBERNETES_MASTER") } else { masterServer = "http://localhost:8080" } parsedURL, err := url.Parse(masterServer) if err != nil { glog.Fatalf("Unable to parse %v as a URL\n", err) } if parsedURL.Scheme != "" && parsedURL.Scheme != "https" { secure = false } var auth *kube_client.AuthInfo if secure { auth, err = kubecfg.LoadAuthInfo(*authConfig, os.Stdin) if err != nil { glog.Fatalf("Error loading auth: %v", err) } } client := kube_client.New(masterServer, auth) if *serverVersion { got, err := client.ServerVersion() if err != nil { fmt.Printf("Couldn't read version from server: %v\n", err) os.Exit(1) } fmt.Printf("Server Version: %#v\n", got) os.Exit(0) } if *preventSkew { got, err := client.ServerVersion() if err != nil { fmt.Printf("Couldn't read version from server: %v\n", err) os.Exit(1) } if c, s := version.Get(), *got; !reflect.DeepEqual(c, s) { fmt.Printf("Server version (%#v) differs from client version (%#v)!\n", s, c) os.Exit(1) } } if *proxy { glog.Info("Starting to serve on localhost:8001") server := kubecfg.NewProxyServer(*www, masterServer, auth) glog.Fatal(server.Serve()) } if len(flag.Args()) < 1 { usage() os.Exit(1) } method := flag.Arg(0) matchFound := executeAPIRequest(method, client) || executeControllerRequest(method, client) if matchFound == false { glog.Fatalf("Unknown command %s", method) } }
func main() { flag.Usage = func() { usage() } flag.Parse() util.InitLogs() defer util.FlushLogs() verflag.PrintAndExitIfRequested() // Initialize the client if clientConfig.Host == "" { clientConfig.Host = os.Getenv("KUBERNETES_MASTER") } // Load namespace information for requests // Check if the namespace was overriden by the -ns argument ctx := api.NewDefaultContext() if len(*ns) > 0 { ctx = api.WithNamespace(ctx, *ns) } else { nsInfo, err := kubecfg.LoadNamespaceInfo(*nsFile) if err != nil { glog.Fatalf("Error loading current namespace: %v", err) } ctx = api.WithNamespace(ctx, nsInfo.Namespace) } if clientConfig.Host == "" { // TODO: eventually apiserver should start on 443 and be secure by default // TODO: don't specify http or https in Host, and infer that from auth options. clientConfig.Host = "http://localhost:8080" } if client.IsConfigTransportTLS(*clientConfig) { auth, err := kubecfg.LoadClientAuthInfoOrPrompt(*authConfig, os.Stdin) if err != nil { glog.Fatalf("Error loading auth: %v", err) } clientConfig.Username = auth.User clientConfig.Password = auth.Password if auth.CAFile != "" { clientConfig.CAFile = auth.CAFile } if auth.CertFile != "" { clientConfig.CertFile = auth.CertFile } if auth.KeyFile != "" { clientConfig.KeyFile = auth.KeyFile } if auth.BearerToken != "" { clientConfig.BearerToken = auth.BearerToken } if auth.Insecure != nil { clientConfig.Insecure = *auth.Insecure } } kubeClient, err := client.New(clientConfig) if err != nil { glog.Fatalf("Can't configure client: %v", err) } if *serverVersion != verflag.VersionFalse { got, err := kubeClient.ServerVersion() if err != nil { fmt.Printf("Couldn't read version from server: %v\n", err) os.Exit(1) } if *serverVersion == verflag.VersionRaw { fmt.Printf("%#v\n", *got) os.Exit(0) } else { fmt.Printf("Server: Kubernetes %s\n", got) os.Exit(0) } } if *preventSkew { got, err := kubeClient.ServerVersion() if err != nil { fmt.Printf("Couldn't read version from server: %v\n", err) os.Exit(1) } if c, s := version.Get(), *got; !reflect.DeepEqual(c, s) { fmt.Printf("Server version (%#v) differs from client version (%#v)!\n", s, c) os.Exit(1) } } if *proxy { glog.Info("Starting to serve on localhost:8001") if *openBrowser { go func() { time.Sleep(2 * time.Second) open.Start("http://localhost:8001/static/") }() } server, err := kubecfg.NewProxyServer(*www, clientConfig) if err != nil { glog.Fatalf("Error creating proxy server: %v", err) } glog.Fatal(server.Serve()) } if len(flag.Args()) < 1 { usage() os.Exit(1) } method := flag.Arg(0) matchFound := executeAPIRequest(ctx, method, kubeClient) || executeControllerRequest(ctx, method, kubeClient) || executeNamespaceRequest(method, kubeClient) if matchFound == false { glog.Fatalf("Unknown command %s", method) } }
func (c *KubeConfig) Run() { util.InitLogs() defer util.FlushLogs() var masterServer string if len(c.HttpServer) > 0 { masterServer = c.HttpServer } else if len(os.Getenv("KUBERNETES_MASTER")) > 0 { masterServer = os.Getenv("KUBERNETES_MASTER") } else { masterServer = "http://localhost:8080" } kubeClient, err := kubeclient.New(masterServer, nil) if err != nil { glog.Fatalf("Unable to parse %s as a URL: %v", masterServer, err) } client, err := osclient.New(masterServer, nil) if err != nil { glog.Fatalf("Unable to parse %s as a URL: %v", masterServer, err) } // TODO: this won't work if TLS is enabled with client cert auth, but no // passwords are required. Refactor when we address client auth abstraction. if kubeClient.Secure() { auth, err := kubecfg.LoadAuthInfo(c.AuthConfig, os.Stdin) if err != nil { glog.Fatalf("Error loading auth: %v", err) } kubeClient, err = kubeclient.New(masterServer, auth) if err != nil { glog.Fatalf("Unable to parse %s as a URL: %v", masterServer, err) } client, err = osclient.New(masterServer, auth) if err != nil { glog.Fatalf("Unable to parse %s as a URL: %v", masterServer, err) } } // check the kubernetes server version if c.ServerVersion { got, err := kubeClient.ServerVersion() if err != nil { fmt.Printf("Couldn't read version from server: %v\n", err) os.Exit(1) } fmt.Printf("Server Version: %#v\n", got) os.Exit(0) } if c.PreventSkew { got, err := kubeClient.ServerVersion() if err != nil { fmt.Printf("Couldn't read version from server: %v\n", err) os.Exit(1) } if c, s := version.Get(), *got; !reflect.DeepEqual(c, s) { fmt.Printf("Server version (%#v) differs from client version (%#v)!\n", s, c) os.Exit(1) } } if c.Proxy { glog.Info("Starting to serve on localhost:8001") server := kubecfg.NewProxyServer(c.WWW, kubeClient) glog.Fatal(server.Serve()) } method := c.Arg(0) clients := map[string]RESTClient{ "minions": kubeClient.RESTClient, "pods": kubeClient.RESTClient, "services": kubeClient.RESTClient, "replicationControllers": kubeClient.RESTClient, "builds": client.RESTClient, "buildConfigs": client.RESTClient, "images": client.RESTClient, "imageRepositories": client.RESTClient, "imageRepositoryMappings": client.RESTClient, } matchFound := c.executeAPIRequest(method, clients) || c.executeControllerRequest(method, kubeClient) if matchFound == false { glog.Fatalf("Unknown command %s", method) } }
func main() { flag.Usage = func() { usage() } flag.Parse() util.InitLogs() defer util.FlushLogs() verflag.PrintAndExitIfRequested() var masterServer string if len(*httpServer) > 0 { masterServer = *httpServer } else if len(os.Getenv("KUBERNETES_MASTER")) > 0 { masterServer = os.Getenv("KUBERNETES_MASTER") } else { masterServer = "http://localhost:8080" } kubeClient, err := client.New(masterServer, nil) if err != nil { glog.Fatalf("Unable to parse %s as a URL: %v", masterServer, err) } // TODO: this won't work if TLS is enabled with client cert auth, but no // passwords are required. Refactor when we address client auth abstraction. if kubeClient.Secure() { auth, err := kubecfg.LoadAuthInfo(*authConfig, os.Stdin) if err != nil { glog.Fatalf("Error loading auth: %v", err) } kubeClient, err = client.New(masterServer, auth) if err != nil { glog.Fatalf("Unable to parse %s as a URL: %v", masterServer, err) } } if *serverVersion { got, err := kubeClient.ServerVersion() if err != nil { fmt.Printf("Couldn't read version from server: %v\n", err) os.Exit(1) } fmt.Printf("Server Version: %#v\n", got) os.Exit(0) } if *preventSkew { got, err := kubeClient.ServerVersion() if err != nil { fmt.Printf("Couldn't read version from server: %v\n", err) os.Exit(1) } if c, s := version.Get(), *got; !reflect.DeepEqual(c, s) { fmt.Printf("Server version (%#v) differs from client version (%#v)!\n", s, c) os.Exit(1) } } if *proxy { glog.Info("Starting to serve on localhost:8001") server := kubecfg.NewProxyServer(*www, kubeClient) glog.Fatal(server.Serve()) } if len(flag.Args()) < 1 { usage() os.Exit(1) } method := flag.Arg(0) matchFound := executeAPIRequest(method, kubeClient) || executeControllerRequest(method, kubeClient) if matchFound == false { glog.Fatalf("Unknown command %s", method) } }