From 97b647207e67a85bab322ba60307786fc7bec2c8 Mon Sep 17 00:00:00 2001 From: Young Date: Tue, 17 Mar 2015 13:51:18 +0000 Subject: [PATCH 1/2] add get available versions commmand --- pkg/api/unversioned.go | 13 +++++++++ pkg/kubectl/cmd/apiversions.go | 48 ++++++++++++++++++++++++++++++++++ pkg/kubectl/cmd/cmd.go | 1 + pkg/kubectl/version.go | 10 +++++++ 4 files changed, 72 insertions(+) create mode 100644 pkg/kubectl/cmd/apiversions.go diff --git a/pkg/api/unversioned.go b/pkg/api/unversioned.go index dbe55990e78..5792df4c198 100644 --- a/pkg/api/unversioned.go +++ b/pkg/api/unversioned.go @@ -16,6 +16,10 @@ limitations under the License. package api +import ( + "strings" +) + // This file contains API types that are unversioned. // APIVersions lists the api versions that are available, to allow @@ -49,3 +53,12 @@ func FieldSelectorQueryParam(version string) string { } return "field-selector" } + +// String returns available api versions as a human-friendly version string. +func (apiVersions APIVersions) String() string { + return strings.Join(apiVersions.Versions, ",") +} + +func (apiVersions APIVersions) GoString() string { + return apiVersions.String() +} diff --git a/pkg/kubectl/cmd/apiversions.go b/pkg/kubectl/cmd/apiversions.go new file mode 100644 index 00000000000..16683783255 --- /dev/null +++ b/pkg/kubectl/cmd/apiversions.go @@ -0,0 +1,48 @@ +/* +Copyright 2014 Google Inc. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package cmd + +import ( + "io" + + "github.com/spf13/cobra" + + "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl" + "github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util" +) + +func (f *Factory) NewCmdApiVersions(out io.Writer) *cobra.Command { + cmd := &cobra.Command{ + Use: "apiversions", + Short: "Print available API versions.", + Run: func(cmd *cobra.Command, args []string) { + err := RunApiVersions(f, out, cmd) + util.CheckErr(err) + }, + } + return cmd +} + +func RunApiVersions(f *Factory, out io.Writer, cmd *cobra.Command) error { + client, err := f.Client(cmd) + if err != nil { + return err + } + + kubectl.GetApiVersions(out, client) + return nil +} diff --git a/pkg/kubectl/cmd/cmd.go b/pkg/kubectl/cmd/cmd.go index 9da593ec759..4ef30fbdcc1 100644 --- a/pkg/kubectl/cmd/cmd.go +++ b/pkg/kubectl/cmd/cmd.go @@ -196,6 +196,7 @@ Find more information at https://github.com/GoogleCloudPlatform/kubernetes.`, f.BindFlags(cmds.PersistentFlags()) cmds.AddCommand(f.NewCmdVersion(out)) + cmds.AddCommand(f.NewCmdApiVersions(out)) cmds.AddCommand(f.NewCmdClusterInfo(out)) cmds.AddCommand(f.NewCmdProxy(out)) diff --git a/pkg/kubectl/version.go b/pkg/kubectl/version.go index ad65769a304..ca25578e069 100644 --- a/pkg/kubectl/version.go +++ b/pkg/kubectl/version.go @@ -40,3 +40,13 @@ func GetVersion(w io.Writer, kubeClient client.Interface) { func GetClientVersion(w io.Writer) { fmt.Fprintf(w, "Client Version: %#v\n", version.Get()) } + +func GetApiVersions(w io.Writer, kubeClient client.Interface) { + apiVersions, err := kubeClient.ServerAPIVersions() + if err != nil { + fmt.Printf("Couldn't get available api versions from server: %v\n", err) + os.Exit(1) + } + + fmt.Fprintf(w, "Available Server Api Versions: %#v\n", *apiVersions) +} From 63f7d47ffd8162dc93565111546c18ff85048b20 Mon Sep 17 00:00:00 2001 From: Young Date: Tue, 17 Mar 2015 16:30:53 +0000 Subject: [PATCH 2/2] update docs after update apis --- docs/kubectl-apiversions.md | 47 ++++++++++ docs/kubectl.md | 1 + docs/man/man1/kubectl-apiversions.1 | 132 ++++++++++++++++++++++++++++ docs/man/man1/kubectl.1 | 2 +- 4 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 docs/kubectl-apiversions.md create mode 100644 docs/man/man1/kubectl-apiversions.1 diff --git a/docs/kubectl-apiversions.md b/docs/kubectl-apiversions.md new file mode 100644 index 00000000000..bd597c66421 --- /dev/null +++ b/docs/kubectl-apiversions.md @@ -0,0 +1,47 @@ +## kubectl apiversions + +Print available API versions. + +### Synopsis + + +Print available API versions. + +``` +kubectl apiversions +``` + +### Options inherrited from parent commands + +``` + --alsologtostderr=false: log to standard error as well as files + --api-version="": The API version to use when talking to the server + -a, --auth-path="": Path to the auth info file. If missing, prompt the user. Only used if using https. + --certificate-authority="": Path to a cert. file for the certificate authority. + --client-certificate="": Path to a client key file for TLS. + --client-key="": Path to a client key file for TLS. + --cluster="": The name of the kubeconfig cluster to use + --context="": The name of the kubeconfig context to use + -h, --help=false: help for kubectl + --insecure-skip-tls-verify=false: If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure. + --kubeconfig="": Path to the kubeconfig file to use for CLI requests. + --log_backtrace_at=:0: when logging hits line file:N, emit a stack trace + --log_dir=: If non-empty, write log files in this directory + --log_flush_frequency=5s: Maximum number of seconds between log flushes + --logtostderr=true: log to standard error instead of files + --match-server-version=false: Require server version to match client version + --namespace="": If present, the namespace scope for this CLI request. + --password="": Password for basic authentication to the API server. + -s, --server="": The address and port of the Kubernetes API server + --stderrthreshold=2: logs at or above this threshold go to stderr + --token="": Bearer token for authentication to the API server. + --user="": The name of the kubeconfig user to use + --username="": Username for basic authentication to the API server. + --v=0: log level for V logs + --validate=false: If true, use a schema to validate the input before sending it + --vmodule=: comma-separated list of pattern=N settings for file-filtered logging +``` + +### SEE ALSO +* [kubectl](kubectl.md) + diff --git a/docs/kubectl.md b/docs/kubectl.md index 031cbd0fa14..a637b50848a 100644 --- a/docs/kubectl.md +++ b/docs/kubectl.md @@ -46,6 +46,7 @@ kubectl ### SEE ALSO * [kubectl-version](kubectl-version.md) +* [kubectl-apiversions](kubectl-apiversions.md) * [kubectl-clusterinfo](kubectl-clusterinfo.md) * [kubectl-proxy](kubectl-proxy.md) * [kubectl-get](kubectl-get.md) diff --git a/docs/man/man1/kubectl-apiversions.1 b/docs/man/man1/kubectl-apiversions.1 new file mode 100644 index 00000000000..0668b6d124f --- /dev/null +++ b/docs/man/man1/kubectl-apiversions.1 @@ -0,0 +1,132 @@ +.TH "KUBERNETES" "1" " kubernetes User Manuals" "Eric Paris" "Jan 2015" "" + + +.SH NAME +.PP +kubectl apiversions \- Print available API versions. + + +.SH SYNOPSIS +.PP +\fBkubectl apiversions\fP [OPTIONS] + + +.SH DESCRIPTION +.PP +Print available API versions. + + +.SH OPTIONS INHERITED FROM PARENT COMMANDS +.PP +\fB\-\-alsologtostderr\fP=false + log to standard error as well as files + +.PP +\fB\-\-api\-version\fP="" + The API version to use when talking to the server + +.PP +\fB\-a\fP, \fB\-\-auth\-path\fP="" + Path to the auth info file. If missing, prompt the user. Only used if using https. + +.PP +\fB\-\-certificate\-authority\fP="" + Path to a cert. file for the certificate authority. + +.PP +\fB\-\-client\-certificate\fP="" + Path to a client key file for TLS. + +.PP +\fB\-\-client\-key\fP="" + Path to a client key file for TLS. + +.PP +\fB\-\-cluster\fP="" + The name of the kubeconfig cluster to use + +.PP +\fB\-\-context\fP="" + The name of the kubeconfig context to use + +.PP +\fB\-h\fP, \fB\-\-help\fP=false + help for kubectl + +.PP +\fB\-\-insecure\-skip\-tls\-verify\fP=false + If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure. + +.PP +\fB\-\-kubeconfig\fP="" + Path to the kubeconfig file to use for CLI requests. + +.PP +\fB\-\-log\_backtrace\_at\fP=:0 + when logging hits line file:N, emit a stack trace + +.PP +\fB\-\-log\_dir\fP="" + If non\-empty, write log files in this directory + +.PP +\fB\-\-log\_flush\_frequency\fP=5s + Maximum number of seconds between log flushes + +.PP +\fB\-\-logtostderr\fP=true + log to standard error instead of files + +.PP +\fB\-\-match\-server\-version\fP=false + Require server version to match client version + +.PP +\fB\-\-namespace\fP="" + If present, the namespace scope for this CLI request. + +.PP +\fB\-\-password\fP="" + Password for basic authentication to the API server. + +.PP +\fB\-s\fP, \fB\-\-server\fP="" + The address and port of the Kubernetes API server + +.PP +\fB\-\-stderrthreshold\fP=2 + logs at or above this threshold go to stderr + +.PP +\fB\-\-token\fP="" + Bearer token for authentication to the API server. + +.PP +\fB\-\-user\fP="" + The name of the kubeconfig user to use + +.PP +\fB\-\-username\fP="" + Username for basic authentication to the API server. + +.PP +\fB\-\-v\fP=0 + log level for V logs + +.PP +\fB\-\-validate\fP=false + If true, use a schema to validate the input before sending it + +.PP +\fB\-\-vmodule\fP= + comma\-separated list of pattern=N settings for file\-filtered logging + + +.SH SEE ALSO +.PP +\fBkubectl(1)\fP, + + +.SH HISTORY +.PP +January 2015, Originally compiled by Eric Paris (eparis at redhat dot com) based on the kubernetes source material, but hopefully they have been automatically generated since! diff --git a/docs/man/man1/kubectl.1 b/docs/man/man1/kubectl.1 index d11bb1190d6..95900739623 100644 --- a/docs/man/man1/kubectl.1 +++ b/docs/man/man1/kubectl.1 @@ -128,7 +128,7 @@ Find more information at .SH SEE ALSO .PP -\fBkubectl\-version(1)\fP, \fBkubectl\-clusterinfo(1)\fP, \fBkubectl\-proxy(1)\fP, \fBkubectl\-get(1)\fP, \fBkubectl\-describe(1)\fP, \fBkubectl\-create(1)\fP, \fBkubectl\-update(1)\fP, \fBkubectl\-delete(1)\fP, \fBkubectl\-config(1)\fP, \fBkubectl\-namespace(1)\fP, \fBkubectl\-log(1)\fP, \fBkubectl\-rollingupdate(1)\fP, \fBkubectl\-resize(1)\fP, \fBkubectl\-exec(1)\fP, \fBkubectl\-port\-forward(1)\fP, \fBkubectl\-run\-container(1)\fP, \fBkubectl\-stop(1)\fP, \fBkubectl\-expose(1)\fP, \fBkubectl\-label(1)\fP, +\fBkubectl\-version(1)\fP, \fBkubectl\-apiversions(1)\fP, \fBkubectl\-clusterinfo(1)\fP, \fBkubectl\-proxy(1)\fP, \fBkubectl\-get(1)\fP, \fBkubectl\-describe(1)\fP, \fBkubectl\-create(1)\fP, \fBkubectl\-update(1)\fP, \fBkubectl\-delete(1)\fP, \fBkubectl\-config(1)\fP, \fBkubectl\-namespace(1)\fP, \fBkubectl\-log(1)\fP, \fBkubectl\-rollingupdate(1)\fP, \fBkubectl\-resize(1)\fP, \fBkubectl\-exec(1)\fP, \fBkubectl\-port\-forward(1)\fP, \fBkubectl\-run\-container(1)\fP, \fBkubectl\-stop(1)\fP, \fBkubectl\-expose(1)\fP, \fBkubectl\-label(1)\fP, .SH HISTORY