Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
d8bbda25
Commit
d8bbda25
authored
Mar 09, 2015
by
Jeff Lowdermilk
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5016 from brendandburns/kubecfg
Differentiate between server error messages and client error messages in kubectl
parents
2a7be561
f505a339
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
142 additions
and
114 deletions
+142
-114
errors.go
pkg/api/errors/errors.go
+12
-0
request.go
pkg/client/request.go
+8
-1
clusterinfo.go
pkg/kubectl/cmd/clusterinfo.go
+3
-2
cmd.go
pkg/kubectl/cmd/cmd.go
+2
-8
create.go
pkg/kubectl/cmd/create.go
+6
-5
delete.go
pkg/kubectl/cmd/delete.go
+3
-3
describe.go
pkg/kubectl/cmd/describe.go
+3
-3
exec.go
pkg/kubectl/cmd/exec.go
+5
-5
expose.go
pkg/kubectl/cmd/expose.go
+8
-8
get.go
pkg/kubectl/cmd/get.go
+13
-13
label.go
pkg/kubectl/cmd/label.go
+6
-6
log.go
pkg/kubectl/cmd/log.go
+5
-5
portforward.go
pkg/kubectl/cmd/portforward.go
+7
-6
proxy.go
pkg/kubectl/cmd/proxy.go
+2
-2
resize.go
pkg/kubectl/cmd/resize.go
+3
-3
rollingupdate.go
pkg/kubectl/cmd/rollingupdate.go
+8
-8
run.go
pkg/kubectl/cmd/run.go
+7
-7
stop.go
pkg/kubectl/cmd/stop.go
+4
-3
update.go
pkg/kubectl/cmd/update.go
+10
-10
helpers.go
pkg/kubectl/cmd/util/helpers.go
+15
-4
resource.go
pkg/kubectl/cmd/util/resource.go
+11
-11
version.go
pkg/kubectl/cmd/version.go
+1
-1
No files found.
pkg/api/errors/errors.go
View file @
d8bbda25
...
...
@@ -262,6 +262,18 @@ func IsServerTimeout(err error) bool {
return
reasonForError
(
err
)
==
api
.
StatusReasonServerTimeout
}
// IsStatusError determines if err is an API Status error received from the master.
func
IsStatusError
(
err
error
)
bool
{
_
,
ok
:=
err
.
(
*
StatusError
)
return
ok
}
// IsUnexpectedObjectError determines if err is due to an unexpected object from the master.
func
IsUnexpectedObjectError
(
err
error
)
bool
{
_
,
ok
:=
err
.
(
*
UnexpectedObjectError
)
return
ok
}
func
reasonForError
(
err
error
)
api
.
StatusReason
{
switch
t
:=
err
.
(
type
)
{
case
*
StatusError
:
...
...
pkg/client/request.go
View file @
d8bbda25
...
...
@@ -62,6 +62,12 @@ func (u *UnexpectedStatusError) Error() string {
return
fmt
.
Sprintf
(
"request [%+v] failed (%d) %s: %s"
,
u
.
Request
,
u
.
Response
.
StatusCode
,
u
.
Response
.
Status
,
u
.
Body
)
}
// IsUnexpectedStatusError determines if err is due to an unexpected status from the server.
func
IsUnexpectedStatusError
(
err
error
)
bool
{
_
,
ok
:=
err
.
(
*
UnexpectedStatusError
)
return
ok
}
// RequestConstructionError is returned when there's an error assembling a request.
type
RequestConstructionError
struct
{
Err
error
...
...
@@ -576,7 +582,8 @@ func (r *Request) transformResponse(body []byte, resp *http.Response, req *http.
// no-op, we've been upgraded
case
resp
.
StatusCode
<
http
.
StatusOK
||
resp
.
StatusCode
>
http
.
StatusPartialContent
:
if
!
isStatusResponse
{
var
err
error
=
&
UnexpectedStatusError
{
var
err
error
err
=
&
UnexpectedStatusError
{
Request
:
req
,
Response
:
resp
,
Body
:
string
(
body
),
...
...
pkg/kubectl/cmd/clusterinfo.go
View file @
d8bbda25
...
...
@@ -22,6 +22,7 @@ import (
"strings"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/resource"
"github.com/spf13/cobra"
...
...
@@ -41,12 +42,12 @@ func (f *Factory) NewCmdClusterInfo(out io.Writer) *cobra.Command {
func
RunClusterInfo
(
factory
*
Factory
,
out
io
.
Writer
,
cmd
*
cobra
.
Command
)
{
client
,
err
:=
factory
.
ClientConfig
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
fmt
.
Fprintf
(
out
,
"Kubernetes master is running at %v
\n
"
,
client
.
Host
)
mapper
,
typer
:=
factory
.
Object
(
cmd
)
cmdNamespace
,
err
:=
factory
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
// TODO: use generalized labels once they are implemented (#341)
b
:=
resource
.
NewBuilder
(
mapper
,
typer
,
factory
.
ClientMapperForCommand
(
cmd
))
.
...
...
pkg/kubectl/cmd/cmd.go
View file @
d8bbda25
...
...
@@ -97,7 +97,7 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory {
Object
:
func
(
cmd
*
cobra
.
Command
)
(
meta
.
RESTMapper
,
runtime
.
ObjectTyper
)
{
cfg
,
err
:=
clientConfig
.
ClientConfig
()
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
cmdApiVersion
:=
cfg
.
Version
return
kubectl
.
OutputVersionMapper
{
mapper
,
cmdApiVersion
},
api
.
Scheme
...
...
@@ -253,7 +253,7 @@ func (f *Factory) PrinterForMapping(cmd *cobra.Command, mapping *meta.RESTMappin
}
if
ok
{
clientConfig
,
err
:=
f
.
ClientConfig
(
cmd
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
defaultVersion
:=
clientConfig
.
Version
version
:=
cmdutil
.
OutputVersion
(
cmd
,
defaultVersion
)
...
...
@@ -329,12 +329,6 @@ func DefaultClientConfig(flags *pflag.FlagSet) clientcmd.ClientConfig {
return
clientConfig
}
func
checkErr
(
err
error
)
{
if
err
!=
nil
{
glog
.
FatalDepth
(
1
,
err
.
Error
())
}
}
func
usageError
(
cmd
*
cobra
.
Command
,
format
string
,
args
...
interface
{})
{
glog
.
Errorf
(
format
,
args
...
)
glog
.
Errorf
(
"See '%s -h' for help."
,
cmd
.
CommandPath
())
...
...
pkg/kubectl/cmd/create.go
View file @
d8bbda25
...
...
@@ -22,6 +22,7 @@ import (
"github.com/spf13/cobra"
cmdutil
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/resource"
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
)
...
...
@@ -48,10 +49,10 @@ func (f *Factory) NewCmdCreate(out io.Writer) *cobra.Command {
Example
:
create_example
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
schema
,
err
:=
f
.
Validator
(
cmd
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
mapper
,
typer
:=
f
.
Object
(
cmd
)
r
:=
resource
.
NewBuilder
(
mapper
,
typer
,
f
.
ClientMapperForCommand
(
cmd
))
.
...
...
@@ -60,7 +61,7 @@ func (f *Factory) NewCmdCreate(out io.Writer) *cobra.Command {
FilenameParam
(
flags
.
Filenames
...
)
.
Flatten
()
.
Do
()
checkErr
(
r
.
Err
())
c
mdutil
.
C
heckErr
(
r
.
Err
())
count
:=
0
err
=
r
.
Visit
(
func
(
info
*
resource
.
Info
)
error
{
...
...
@@ -80,9 +81,9 @@ func (f *Factory) NewCmdCreate(out io.Writer) *cobra.Command {
fmt
.
Fprintf
(
out
,
"%s
\n
"
,
info
.
Name
)
return
nil
})
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
if
count
==
0
{
checkErr
(
fmt
.
Errorf
(
"no objects passed to create"
))
c
mdutil
.
C
heckErr
(
fmt
.
Errorf
(
"no objects passed to create"
))
}
},
}
...
...
pkg/kubectl/cmd/delete.go
View file @
d8bbda25
...
...
@@ -66,7 +66,7 @@ func (f *Factory) NewCmdDelete(out io.Writer) *cobra.Command {
Example
:
delete_example
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
mapper
,
typer
:=
f
.
Object
(
cmd
)
r
:=
resource
.
NewBuilder
(
mapper
,
typer
,
f
.
ClientMapperForCommand
(
cmd
))
.
ContinueOnError
()
.
...
...
@@ -77,7 +77,7 @@ func (f *Factory) NewCmdDelete(out io.Writer) *cobra.Command {
ResourceTypeOrNameArgs
(
false
,
args
...
)
.
Flatten
()
.
Do
()
checkErr
(
r
.
Err
())
c
mdutil
.
C
heckErr
(
r
.
Err
())
found
:=
0
err
=
r
.
IgnoreErrors
(
errors
.
IsNotFound
)
.
Visit
(
func
(
r
*
resource
.
Info
)
error
{
...
...
@@ -88,7 +88,7 @@ func (f *Factory) NewCmdDelete(out io.Writer) *cobra.Command {
fmt
.
Fprintf
(
out
,
"%s
\n
"
,
r
.
Name
)
return
nil
})
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
if
found
==
0
{
fmt
.
Fprintf
(
cmd
.
Out
(),
"No resources found
\n
"
)
}
...
...
pkg/kubectl/cmd/describe.go
View file @
d8bbda25
...
...
@@ -34,17 +34,17 @@ This command joins many API calls together to form a detailed description of a
given resource.`
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
mapper
,
_
:=
f
.
Object
(
cmd
)
// TODO: use resource.Builder instead
mapping
,
namespace
,
name
:=
util
.
ResourceFromArgs
(
cmd
,
args
,
mapper
,
cmdNamespace
)
describer
,
err
:=
f
.
Describer
(
cmd
,
mapping
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
s
,
err
:=
describer
.
Describe
(
namespace
,
name
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
fmt
.
Fprintf
(
out
,
"%s
\n
"
,
s
)
},
}
...
...
pkg/kubectl/cmd/exec.go
View file @
d8bbda25
...
...
@@ -61,13 +61,13 @@ func (f *Factory) NewCmdExec(cmdIn io.Reader, cmdOut, cmdErr io.Writer) *cobra.C
}
namespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
client
,
err
:=
f
.
Client
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
pod
,
err
:=
client
.
Pods
(
namespace
)
.
Get
(
flags
.
pod
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
if
pod
.
Status
.
Phase
!=
api
.
PodRunning
{
glog
.
Fatalf
(
"Unable to execute command because pod is not running. Current status=%v"
,
pod
.
Status
.
Phase
)
...
...
@@ -113,7 +113,7 @@ func (f *Factory) NewCmdExec(cmdIn io.Reader, cmdOut, cmdErr io.Writer) *cobra.C
}
config
,
err
:=
f
.
ClientConfig
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
req
:=
client
.
RESTClient
.
Get
()
.
Prefix
(
"proxy"
)
.
...
...
@@ -123,7 +123,7 @@ func (f *Factory) NewCmdExec(cmdIn io.Reader, cmdOut, cmdErr io.Writer) *cobra.C
e
:=
remotecommand
.
New
(
req
,
config
,
args
,
stdin
,
cmdOut
,
cmdErr
,
flags
.
tty
)
err
=
e
.
Execute
()
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
},
}
cmd
.
Flags
()
.
StringVarP
(
&
flags
.
pod
,
"pod"
,
"p"
,
""
,
"Pod name"
)
...
...
pkg/kubectl/cmd/expose.go
View file @
d8bbda25
...
...
@@ -51,9 +51,9 @@ func (f *Factory) NewCmdExposeService(out io.Writer) *cobra.Command {
}
namespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
client
,
err
:=
f
.
Client
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
generatorName
:=
util
.
GetFlagString
(
cmd
,
"generator"
)
...
...
@@ -73,7 +73,7 @@ func (f *Factory) NewCmdExposeService(out io.Writer) *cobra.Command {
}
if
_
,
found
:=
params
[
"selector"
];
!
found
{
rc
,
err
:=
client
.
ReplicationControllers
(
namespace
)
.
Get
(
args
[
0
])
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
params
[
"selector"
]
=
kubectl
.
MakeLabels
(
rc
.
Spec
.
Selector
)
}
if
util
.
GetFlagBool
(
cmd
,
"create-external-load-balancer"
)
{
...
...
@@ -81,25 +81,25 @@ func (f *Factory) NewCmdExposeService(out io.Writer) *cobra.Command {
}
err
=
kubectl
.
ValidateParams
(
names
,
params
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
service
,
err
:=
generator
.
Generate
(
params
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
inline
:=
util
.
GetFlagString
(
cmd
,
"overrides"
)
if
len
(
inline
)
>
0
{
service
,
err
=
util
.
Merge
(
service
,
inline
,
"Service"
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
}
// TODO: extract this flag to a central location, when such a location exists.
if
!
util
.
GetFlagBool
(
cmd
,
"dry-run"
)
{
service
,
err
=
client
.
Services
(
namespace
)
.
Create
(
service
.
(
*
api
.
Service
))
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
}
err
=
f
.
PrintObject
(
cmd
,
service
,
out
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
},
}
util
.
AddPrinterFlags
(
cmd
)
...
...
pkg/kubectl/cmd/get.go
View file @
d8bbda25
...
...
@@ -81,7 +81,7 @@ func RunGet(f *Factory, out io.Writer, cmd *cobra.Command, args []string) {
mapper
,
typer
:=
f
.
Object
(
cmd
)
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
// handle watch separately since we cannot watch multiple resource types
isWatch
,
isWatchOnly
:=
util
.
GetFlagBool
(
cmd
,
"watch"
),
util
.
GetFlagBool
(
cmd
,
"watch-only"
)
...
...
@@ -92,30 +92,30 @@ func RunGet(f *Factory, out io.Writer, cmd *cobra.Command, args []string) {
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
SingleResourceType
()
.
Do
()
c
heckErr
(
r
.
Err
())
util
.
C
heckErr
(
r
.
Err
())
mapping
,
err
:=
r
.
ResourceMapping
()
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
printer
,
err
:=
f
.
PrinterForMapping
(
cmd
,
mapping
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
obj
,
err
:=
r
.
Object
()
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
rv
,
err
:=
mapping
.
MetadataAccessor
.
ResourceVersion
(
obj
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
// print the current object
if
!
isWatchOnly
{
if
err
:=
printer
.
PrintObj
(
obj
,
out
);
err
!=
nil
{
c
heckErr
(
fmt
.
Errorf
(
"unable to output the provided object: %v"
,
err
))
util
.
C
heckErr
(
fmt
.
Errorf
(
"unable to output the provided object: %v"
,
err
))
}
}
// print watched changes
w
,
err
:=
r
.
Watch
(
rv
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
kubectl
.
WatchLoop
(
w
,
func
(
e
watch
.
Event
)
error
{
return
printer
.
PrintObj
(
e
.
Object
,
out
)
...
...
@@ -129,11 +129,11 @@ func RunGet(f *Factory, out io.Writer, cmd *cobra.Command, args []string) {
ResourceTypeOrNameArgs
(
true
,
args
...
)
.
Latest
()
printer
,
generic
,
err
:=
util
.
PrinterForCommand
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
if
generic
{
clientConfig
,
err
:=
f
.
ClientConfig
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
defaultVersion
:=
clientConfig
.
Version
// the outermost object will be converted to the output-version
...
...
@@ -141,7 +141,7 @@ func RunGet(f *Factory, out io.Writer, cmd *cobra.Command, args []string) {
r
:=
b
.
Flatten
()
.
Do
()
obj
,
err
:=
r
.
Object
()
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
// try conversion to all the possible versions
// TODO: simplify by adding a ResourceBuilder mode
...
...
@@ -158,7 +158,7 @@ func RunGet(f *Factory, out io.Writer, cmd *cobra.Command, args []string) {
printer
:=
kubectl
.
NewVersionedPrinter
(
printer
,
api
.
Scheme
,
versions
...
)
err
=
printer
.
PrintObj
(
obj
,
out
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
return
}
...
...
@@ -170,5 +170,5 @@ func RunGet(f *Factory, out io.Writer, cmd *cobra.Command, args []string) {
}
return
printer
.
PrintObj
(
r
.
Object
,
out
)
})
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
}
pkg/kubectl/cmd/label.go
View file @
d8bbda25
...
...
@@ -63,28 +63,28 @@ func (f *Factory) NewCmdLabel(out io.Writer) *cobra.Command {
}
res
:=
args
[
:
2
]
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
mapper
,
_
:=
f
.
Object
(
cmd
)
// TODO: use resource.Builder instead
mapping
,
namespace
,
name
:=
util
.
ResourceFromArgs
(
cmd
,
res
,
mapper
,
cmdNamespace
)
client
,
err
:=
f
.
RESTClient
(
cmd
,
mapping
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
labels
,
remove
,
err
:=
parseLabels
(
args
[
2
:
])
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
overwrite
:=
util
.
GetFlagBool
(
cmd
,
"overwrite"
)
resourceVersion
:=
util
.
GetFlagString
(
cmd
,
"resource-version"
)
obj
,
err
:=
updateObject
(
client
,
mapping
,
namespace
,
name
,
func
(
obj
runtime
.
Object
)
runtime
.
Object
{
outObj
,
err
:=
labelFunc
(
obj
,
overwrite
,
resourceVersion
,
labels
,
remove
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
return
outObj
})
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
printer
,
err
:=
f
.
PrinterForMapping
(
cmd
,
mapping
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
printer
.
PrintObj
(
obj
,
out
)
},
...
...
pkg/kubectl/cmd/log.go
View file @
d8bbda25
...
...
@@ -74,14 +74,14 @@ func (f *Factory) NewCmdLog(out io.Writer) *cobra.Command {
}
namespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
client
,
err
:=
f
.
Client
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
podID
:=
args
[
0
]
pod
,
err
:=
client
.
Pods
(
namespace
)
.
Get
(
podID
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
var
container
string
if
len
(
args
)
==
1
{
...
...
@@ -111,11 +111,11 @@ func (f *Factory) NewCmdLog(out io.Writer) *cobra.Command {
Suffix
(
"containerLogs"
,
namespace
,
podID
,
container
)
.
Param
(
"follow"
,
strconv
.
FormatBool
(
follow
))
.
Stream
()
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
defer
readCloser
.
Close
()
_
,
err
=
io
.
Copy
(
out
,
readCloser
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
},
}
cmd
.
Flags
()
.
BoolP
(
"follow"
,
"f"
,
false
,
"Specify if the logs should be streamed."
)
...
...
pkg/kubectl/cmd/portforward.go
View file @
d8bbda25
...
...
@@ -22,6 +22,7 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client/portforward"
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
"github.com/golang/glog"
"github.com/spf13/cobra"
)
...
...
@@ -61,20 +62,20 @@ func (f *Factory) NewCmdPortForward() *cobra.Command {
}
namespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
client
,
err
:=
f
.
Client
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
pod
,
err
:=
client
.
Pods
(
namespace
)
.
Get
(
flags
.
pod
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
if
pod
.
Status
.
Phase
!=
api
.
PodRunning
{
glog
.
Fatalf
(
"Unable to execute command because pod is not running. Current status=%v"
,
pod
.
Status
.
Phase
)
}
config
,
err
:=
f
.
ClientConfig
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
signals
:=
make
(
chan
os
.
Signal
,
1
)
signal
.
Notify
(
signals
,
os
.
Interrupt
)
...
...
@@ -93,10 +94,10 @@ func (f *Factory) NewCmdPortForward() *cobra.Command {
Suffix
(
"portForward"
,
namespace
,
flags
.
pod
)
pf
,
err
:=
portforward
.
New
(
req
,
config
,
args
,
stopCh
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
err
=
pf
.
ForwardPorts
()
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
},
}
cmd
.
Flags
()
.
StringVarP
(
&
flags
.
pod
,
"pod"
,
"p"
,
""
,
"Pod name"
)
...
...
pkg/kubectl/cmd/proxy.go
View file @
d8bbda25
...
...
@@ -36,7 +36,7 @@ func (f *Factory) NewCmdProxy(out io.Writer) *cobra.Command {
glog
.
Infof
(
"Starting to serve on localhost:%d"
,
port
)
clientConfig
,
err
:=
f
.
ClientConfig
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
staticPrefix
:=
util
.
GetFlagString
(
cmd
,
"www-prefix"
)
if
!
strings
.
HasSuffix
(
staticPrefix
,
"/"
)
{
...
...
@@ -49,7 +49,7 @@ func (f *Factory) NewCmdProxy(out io.Writer) *cobra.Command {
}
server
,
err
:=
kubectl
.
NewProxyServer
(
util
.
GetFlagString
(
cmd
,
"www"
),
apiProxyPrefix
,
staticPrefix
,
clientConfig
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
glog
.
Fatal
(
server
.
Serve
(
port
))
},
}
...
...
pkg/kubectl/cmd/resize.go
View file @
d8bbda25
...
...
@@ -58,14 +58,14 @@ func (f *Factory) NewCmdResize(out io.Writer) *cobra.Command {
}
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
mapper
,
_
:=
f
.
Object
(
cmd
)
// TODO: use resource.Builder instead
mapping
,
namespace
,
name
:=
util
.
ResourceFromArgs
(
cmd
,
args
,
mapper
,
cmdNamespace
)
resizer
,
err
:=
f
.
Resizer
(
cmd
,
mapping
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
resourceVersion
:=
util
.
GetFlagString
(
cmd
,
"resource-version"
)
currentSize
:=
util
.
GetFlagInt
(
cmd
,
"current-replicas"
)
...
...
@@ -75,7 +75,7 @@ func (f *Factory) NewCmdResize(out io.Writer) *cobra.Command {
msg
:=
"resized"
if
err
=
wait
.
Poll
(
retryFrequency
,
retryTimeout
,
cond
);
err
!=
nil
{
msg
=
fmt
.
Sprintf
(
"Failed to resize controller in spite of retrying for %s"
,
retryTimeout
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
}
fmt
.
Fprintf
(
out
,
"%s
\n
"
,
msg
)
},
...
...
pkg/kubectl/cmd/rollingupdate.go
View file @
d8bbda25
...
...
@@ -61,10 +61,10 @@ func (f *Factory) NewCmdRollingUpdate(out io.Writer) *cobra.Command {
}
oldName
:=
args
[
0
]
schema
,
err
:=
f
.
Validator
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
clientConfig
,
err
:=
f
.
ClientConfig
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
cmdApiVersion
:=
clientConfig
.
Version
mapper
,
typer
:=
f
.
Object
(
cmd
)
...
...
@@ -79,23 +79,23 @@ func (f *Factory) NewCmdRollingUpdate(out io.Writer) *cobra.Command {
}
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
// TODO: use resource.Builder instead
err
=
util
.
CompareNamespace
(
cmdNamespace
,
namespace
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
client
,
err
:=
f
.
Client
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
obj
,
err
:=
mapping
.
Codec
.
Decode
(
data
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
newRc
:=
obj
.
(
*
api
.
ReplicationController
)
updater
:=
kubectl
.
NewRollingUpdater
(
cmdNamespace
,
client
)
// fetch rc
oldRc
,
err
:=
client
.
ReplicationControllers
(
cmdNamespace
)
.
Get
(
oldName
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
var
hasLabel
bool
for
key
,
oldValue
:=
range
oldRc
.
Spec
.
Selector
{
...
...
@@ -113,7 +113,7 @@ func (f *Factory) NewCmdRollingUpdate(out io.Writer) *cobra.Command {
newRc
.
Spec
.
Replicas
=
oldRc
.
Spec
.
Replicas
}
err
=
updater
.
Update
(
out
,
oldRc
,
newRc
,
period
,
interval
,
timeout
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
fmt
.
Fprintf
(
out
,
"%s
\n
"
,
newName
)
},
...
...
pkg/kubectl/cmd/run.go
View file @
d8bbda25
...
...
@@ -54,10 +54,10 @@ func (f *Factory) NewCmdRunContainer(out io.Writer) *cobra.Command {
}
namespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
client
,
err
:=
f
.
Client
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
generatorName
:=
util
.
GetFlagString
(
cmd
,
"generator"
)
generator
,
found
:=
kubectl
.
Generators
[
generatorName
]
...
...
@@ -69,25 +69,25 @@ func (f *Factory) NewCmdRunContainer(out io.Writer) *cobra.Command {
params
[
"name"
]
=
args
[
0
]
err
=
kubectl
.
ValidateParams
(
names
,
params
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
controller
,
err
:=
generator
.
Generate
(
params
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
inline
:=
util
.
GetFlagString
(
cmd
,
"overrides"
)
if
len
(
inline
)
>
0
{
controller
,
err
=
util
.
Merge
(
controller
,
inline
,
"ReplicationController"
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
}
// TODO: extract this flag to a central location, when such a location exists.
if
!
util
.
GetFlagBool
(
cmd
,
"dry-run"
)
{
controller
,
err
=
client
.
ReplicationControllers
(
namespace
)
.
Create
(
controller
.
(
*
api
.
ReplicationController
))
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
}
err
=
f
.
PrintObject
(
cmd
,
controller
,
out
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
},
}
util
.
AddPrinterFlags
(
cmd
)
...
...
pkg/kubectl/cmd/stop.go
View file @
d8bbda25
...
...
@@ -20,6 +20,7 @@ import (
"fmt"
"io"
cmdutil
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/cmd/util"
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl/resource"
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
"github.com/spf13/cobra"
...
...
@@ -51,7 +52,7 @@ func (f *Factory) NewCmdStop(out io.Writer) *cobra.Command {
Example
:
stop_example
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
mapper
,
typer
:=
f
.
Object
(
cmd
)
r
:=
resource
.
NewBuilder
(
mapper
,
typer
,
f
.
ClientMapperForCommand
(
cmd
))
.
ContinueOnError
()
.
...
...
@@ -60,11 +61,11 @@ func (f *Factory) NewCmdStop(out io.Writer) *cobra.Command {
FilenameParam
(
flags
.
Filenames
...
)
.
Flatten
()
.
Do
()
checkErr
(
r
.
Err
())
c
mdutil
.
C
heckErr
(
r
.
Err
())
r
.
Visit
(
func
(
info
*
resource
.
Info
)
error
{
reaper
,
err
:=
f
.
Reaper
(
cmd
,
info
.
Mapping
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
s
,
err
:=
reaper
.
Stop
(
info
.
Namespace
,
info
.
Name
)
if
err
!=
nil
{
return
err
...
...
pkg/kubectl/cmd/update.go
View file @
d8bbda25
...
...
@@ -51,10 +51,10 @@ func (f *Factory) NewCmdUpdate(out io.Writer) *cobra.Command {
Example
:
update_example
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
schema
,
err
:=
f
.
Validator
(
cmd
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
patch
:=
cmdutil
.
GetFlagString
(
cmd
,
"patch"
)
if
len
(
flags
.
Filenames
)
==
0
&&
len
(
patch
)
==
0
{
...
...
@@ -78,7 +78,7 @@ func (f *Factory) NewCmdUpdate(out io.Writer) *cobra.Command {
FilenameParam
(
flags
.
Filenames
...
)
.
Flatten
()
.
Do
()
checkErr
(
r
.
Err
())
c
mdutil
.
C
heckErr
(
r
.
Err
())
err
=
r
.
Visit
(
func
(
info
*
resource
.
Info
)
error
{
data
,
err
:=
info
.
Mapping
.
Codec
.
Encode
(
info
.
Object
)
...
...
@@ -96,7 +96,7 @@ func (f *Factory) NewCmdUpdate(out io.Writer) *cobra.Command {
fmt
.
Fprintf
(
out
,
"%s
\n
"
,
info
.
Name
)
return
nil
})
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
},
}
...
...
@@ -107,25 +107,25 @@ func (f *Factory) NewCmdUpdate(out io.Writer) *cobra.Command {
func
updateWithPatch
(
cmd
*
cobra
.
Command
,
args
[]
string
,
f
*
Factory
,
patch
string
)
string
{
cmdNamespace
,
err
:=
f
.
DefaultNamespace
(
cmd
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
mapper
,
_
:=
f
.
Object
(
cmd
)
// TODO: use resource.Builder instead
mapping
,
namespace
,
name
:=
cmdutil
.
ResourceFromArgs
(
cmd
,
args
,
mapper
,
cmdNamespace
)
client
,
err
:=
f
.
RESTClient
(
cmd
,
mapping
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
helper
:=
resource
.
NewHelper
(
client
,
mapping
)
obj
,
err
:=
helper
.
Get
(
namespace
,
name
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
patchedObj
,
err
:=
cmdutil
.
Merge
(
obj
,
patch
,
mapping
.
Kind
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
data
,
err
:=
helper
.
Codec
.
Encode
(
patchedObj
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
_
,
err
=
helper
.
Update
(
namespace
,
name
,
true
,
data
)
checkErr
(
err
)
c
mdutil
.
C
heckErr
(
err
)
return
name
}
pkg/kubectl/cmd/util/helpers.go
View file @
d8bbda25
...
...
@@ -26,7 +26,9 @@ import (
"strings"
"time"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
"github.com/evanphx/json-patch"
...
...
@@ -34,9 +36,18 @@ import (
"github.com/spf13/cobra"
)
func
c
heckErr
(
err
error
)
{
func
C
heckErr
(
err
error
)
{
if
err
!=
nil
{
glog
.
FatalDepth
(
1
,
err
.
Error
())
if
errors
.
IsStatusError
(
err
)
{
glog
.
FatalDepth
(
1
,
fmt
.
Sprintf
(
"Error received from API: %s"
,
err
.
Error
()))
}
if
errors
.
IsUnexpectedObjectError
(
err
)
{
glog
.
FatalDepth
(
1
,
fmt
.
Sprintf
(
"Unexpected object received from server: %s"
,
err
.
Error
()))
}
if
client
.
IsUnexpectedStatusError
(
err
)
{
glog
.
FatalDepth
(
1
,
fmt
.
Sprintf
(
"Unexpected status received from server: %s"
,
err
.
Error
()))
}
glog
.
FatalDepth
(
1
,
fmt
.
Sprintf
(
"Client error processing command: %s"
,
err
.
Error
()))
}
}
...
...
@@ -75,7 +86,7 @@ func GetFlagInt(cmd *cobra.Command, flag string) int {
v
,
err
:=
strconv
.
Atoi
(
f
.
Value
.
String
())
// This is likely not a sufficiently friendly error message, but cobra
// should prevent non-integer values from reaching here.
c
heckErr
(
err
)
C
heckErr
(
err
)
return
v
}
...
...
@@ -85,7 +96,7 @@ func GetFlagDuration(cmd *cobra.Command, flag string) time.Duration {
glog
.
Fatalf
(
"Flag accessed but not defined for command %s: %s"
,
cmd
.
Name
(),
flag
)
}
v
,
err
:=
time
.
ParseDuration
(
f
.
Value
.
String
())
c
heckErr
(
err
)
C
heckErr
(
err
)
return
v
}
...
...
pkg/kubectl/cmd/util/resource.go
View file @
d8bbda25
...
...
@@ -43,10 +43,10 @@ func ResourceFromArgs(cmd *cobra.Command, args []string, mapper meta.RESTMapper,
}
version
,
kind
,
err
:=
mapper
.
VersionAndKindForResource
(
resource
)
c
heckErr
(
err
)
C
heckErr
(
err
)
mapping
,
err
=
mapper
.
RESTMapping
(
kind
,
version
)
c
heckErr
(
err
)
C
heckErr
(
err
)
return
}
...
...
@@ -56,37 +56,37 @@ func ResourceFromArgs(cmd *cobra.Command, args []string, mapper meta.RESTMapper,
// DEPRECATED: Use resource.Builder
func
ResourceFromFile
(
filename
string
,
typer
runtime
.
ObjectTyper
,
mapper
meta
.
RESTMapper
,
schema
validation
.
Schema
,
cmdVersion
string
)
(
mapping
*
meta
.
RESTMapping
,
namespace
,
name
string
,
data
[]
byte
)
{
configData
,
err
:=
ReadConfigData
(
filename
)
c
heckErr
(
err
)
C
heckErr
(
err
)
data
=
configData
objVersion
,
kind
,
err
:=
typer
.
DataVersionAndKind
(
data
)
c
heckErr
(
err
)
C
heckErr
(
err
)
// TODO: allow unversioned objects?
if
len
(
objVersion
)
==
0
{
c
heckErr
(
fmt
.
Errorf
(
"the resource in the provided file has no apiVersion defined"
))
C
heckErr
(
fmt
.
Errorf
(
"the resource in the provided file has no apiVersion defined"
))
}
err
=
schema
.
ValidateBytes
(
data
)
c
heckErr
(
err
)
C
heckErr
(
err
)
// decode using the version stored with the object (allows codec to vary across versions)
mapping
,
err
=
mapper
.
RESTMapping
(
kind
,
objVersion
)
c
heckErr
(
err
)
C
heckErr
(
err
)
obj
,
err
:=
mapping
.
Codec
.
Decode
(
data
)
c
heckErr
(
err
)
C
heckErr
(
err
)
meta
:=
mapping
.
MetadataAccessor
namespace
,
err
=
meta
.
Namespace
(
obj
)
c
heckErr
(
err
)
C
heckErr
(
err
)
name
,
err
=
meta
.
Name
(
obj
)
c
heckErr
(
err
)
C
heckErr
(
err
)
// if the preferred API version differs, get a different mapper
if
cmdVersion
!=
objVersion
{
mapping
,
err
=
mapper
.
RESTMapping
(
kind
,
cmdVersion
)
c
heckErr
(
err
)
C
heckErr
(
err
)
}
return
...
...
pkg/kubectl/cmd/version.go
View file @
d8bbda25
...
...
@@ -36,7 +36,7 @@ func (f *Factory) NewCmdVersion(out io.Writer) *cobra.Command {
}
client
,
err
:=
f
.
Client
(
cmd
)
c
heckErr
(
err
)
util
.
C
heckErr
(
err
)
kubectl
.
GetVersion
(
out
,
client
)
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment