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
8c1b6873
Commit
8c1b6873
authored
Apr 25, 2018
by
David Eads
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update more commands for iostreams
parent
3fb88a23
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
241 additions
and
262 deletions
+241
-262
cmd.go
pkg/kubectl/cmd/cmd.go
+6
-6
cmd_test.go
pkg/kubectl/cmd/cmd_test.go
+2
-1
explain.go
pkg/kubectl/cmd/explain.go
+18
-6
expose.go
pkg/kubectl/cmd/expose.go
+12
-11
expose_test.go
pkg/kubectl/cmd/expose_test.go
+3
-3
BUILD
pkg/kubectl/cmd/resource/BUILD
+2
-0
get.go
pkg/kubectl/cmd/resource/get.go
+8
-7
get_test.go
pkg/kubectl/cmd/resource/get_test.go
+47
-71
run.go
pkg/kubectl/cmd/run.go
+5
-9
run_test.go
pkg/kubectl/cmd/run_test.go
+8
-13
BUILD
pkg/kubectl/cmd/set/BUILD
+1
-0
set.go
pkg/kubectl/cmd/set/set.go
+9
-10
set_env.go
pkg/kubectl/cmd/set/set_env.go
+10
-13
set_env_test.go
pkg/kubectl/cmd/set/set_env_test.go
+14
-15
set_image.go
pkg/kubectl/cmd/set/set_image.go
+6
-8
set_image_test.go
pkg/kubectl/cmd/set/set_image_test.go
+16
-14
set_resources.go
pkg/kubectl/cmd/set/set_resources.go
+7
-8
set_resources_test.go
pkg/kubectl/cmd/set/set_resources_test.go
+16
-14
set_selector.go
pkg/kubectl/cmd/set/set_selector.go
+8
-8
set_selector_test.go
pkg/kubectl/cmd/set/set_selector_test.go
+3
-4
set_serviceaccount.go
pkg/kubectl/cmd/set/set_serviceaccount.go
+8
-10
set_serviceaccount_test.go
pkg/kubectl/cmd/set/set_serviceaccount_test.go
+20
-19
set_subject.go
pkg/kubectl/cmd/set/set_subject.go
+10
-7
set_test.go
pkg/kubectl/cmd/set/set_test.go
+2
-5
No files found.
pkg/kubectl/cmd/cmd.go
View file @
8c1b6873
...
...
@@ -255,17 +255,17 @@ func NewKubectlCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cob
Message
:
"Basic Commands (Beginner):"
,
Commands
:
[]
*
cobra
.
Command
{
create
.
NewCmdCreate
(
f
,
ioStreams
),
NewCmdExposeService
(
f
,
out
),
NewCmdRun
(
f
,
i
n
,
out
,
err
),
set
.
NewCmdSet
(
f
,
i
n
,
out
,
err
),
deprecatedAlias
(
"run-container"
,
NewCmdRun
(
f
,
i
n
,
out
,
err
)),
NewCmdExposeService
(
f
,
ioStreams
),
NewCmdRun
(
f
,
i
oStreams
),
set
.
NewCmdSet
(
f
,
i
oStreams
),
deprecatedAlias
(
"run-container"
,
NewCmdRun
(
f
,
i
oStreams
)),
},
},
{
Message
:
"Basic Commands (Intermediate):"
,
Commands
:
[]
*
cobra
.
Command
{
resource
.
NewCmdGet
(
f
,
out
,
err
),
NewCmdExplain
(
f
,
out
,
err
),
resource
.
NewCmdGet
(
f
,
ioStreams
),
NewCmdExplain
(
f
,
ioStreams
),
NewCmdEdit
(
f
,
ioStreams
),
NewCmdDelete
(
f
,
out
,
err
),
},
...
...
pkg/kubectl/cmd/cmd_test.go
View file @
8c1b6873
...
...
@@ -43,6 +43,7 @@ import (
"k8s.io/kubernetes/pkg/kubectl/cmd/resource"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
"k8s.io/kubernetes/pkg/util/strings"
...
...
@@ -253,7 +254,7 @@ func Example_printServiceWithLabels() {
NegotiatedSerializer
:
ns
,
Client
:
nil
,
}
cmd
:=
resource
.
NewCmdGet
(
tf
,
os
.
Stdout
,
os
.
Stderr
)
cmd
:=
resource
.
NewCmdGet
(
tf
,
genericclioptions
.
NewTestIOStreamsDiscard
()
)
svc
:=
&
api
.
ServiceList
{
Items
:
[]
api
.
Service
{
{
...
...
pkg/kubectl/cmd/explain.go
View file @
8c1b6873
...
...
@@ -18,7 +18,6 @@ package cmd
import
(
"fmt"
"io"
"github.com/spf13/cobra"
...
...
@@ -26,6 +25,7 @@ import (
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/explain"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
)
...
...
@@ -49,8 +49,20 @@ var (
kubectl explain pods.spec.containers`
))
)
type
ExplainOptions
struct
{
genericclioptions
.
IOStreams
}
func
NewExplainOptions
(
streams
genericclioptions
.
IOStreams
)
*
ExplainOptions
{
return
&
ExplainOptions
{
IOStreams
:
streams
,
}
}
// NewCmdExplain returns a cobra command for swagger docs
func
NewCmdExplain
(
f
cmdutil
.
Factory
,
out
,
cmdErr
io
.
Writer
)
*
cobra
.
Command
{
func
NewCmdExplain
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
NewExplainOptions
(
streams
)
cmd
:=
&
cobra
.
Command
{
Use
:
"explain RESOURCE"
,
DisableFlagsInUseLine
:
true
,
...
...
@@ -58,7 +70,7 @@ func NewCmdExplain(f cmdutil.Factory, out, cmdErr io.Writer) *cobra.Command {
Long
:
explainLong
+
"
\n\n
"
+
cmdutil
.
ValidResourceTypeList
(
f
),
Example
:
explainExamples
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
err
:=
RunExplain
(
f
,
out
,
cmdErr
,
cmd
,
args
)
err
:=
o
.
RunExplain
(
f
,
cmd
,
args
)
cmdutil
.
CheckErr
(
err
)
},
}
...
...
@@ -68,9 +80,9 @@ func NewCmdExplain(f cmdutil.Factory, out, cmdErr io.Writer) *cobra.Command {
}
// RunExplain executes the appropriate steps to print a model's documentation
func
RunExplain
(
f
cmdutil
.
Factory
,
out
,
cmdErr
io
.
Writer
,
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
func
(
o
*
ExplainOptions
)
RunExplain
(
f
cmdutil
.
Factory
,
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
if
len
(
args
)
==
0
{
fmt
.
Fprintf
(
cmdErr
,
"You must specify the type of resource to explain. %s
\n\n
"
,
cmdutil
.
ValidResourceTypeList
(
f
))
fmt
.
Fprintf
(
o
.
ErrOut
,
"You must specify the type of resource to explain. %s
\n\n
"
,
cmdutil
.
ValidResourceTypeList
(
f
))
return
cmdutil
.
UsageErrorf
(
cmd
,
"Required resource not specified."
)
}
if
len
(
args
)
>
1
{
...
...
@@ -120,5 +132,5 @@ func RunExplain(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, ar
return
fmt
.
Errorf
(
"Couldn't find resource for %q"
,
gvk
)
}
return
explain
.
PrintModelDescription
(
fieldsPath
,
out
,
schema
,
gvk
,
recursive
)
return
explain
.
PrintModelDescription
(
fieldsPath
,
o
.
O
ut
,
schema
,
gvk
,
recursive
)
}
pkg/kubectl/cmd/expose.go
View file @
8c1b6873
...
...
@@ -17,7 +17,6 @@ limitations under the License.
package
cmd
import
(
"io"
"regexp"
"strings"
...
...
@@ -79,18 +78,20 @@ type ExposeServiceOptions struct {
RecordFlags
*
genericclioptions
.
RecordFlags
Recorder
genericclioptions
.
Recorder
genericclioptions
.
IOStreams
}
func
NewExposeServiceOptions
()
*
ExposeServiceOptions
{
func
NewExposeServiceOptions
(
streams
genericclioptions
.
IOStreams
)
*
ExposeServiceOptions
{
return
&
ExposeServiceOptions
{
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
Recorder
:
genericclioptions
.
NoopRecorder
{},
IOStreams
:
streams
,
}
}
func
NewCmdExposeService
(
f
cmdutil
.
Factory
,
out
io
.
Writer
)
*
cobra
.
Command
{
o
:=
NewExposeServiceOptions
()
func
NewCmdExposeService
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
NewExposeServiceOptions
(
streams
)
validArgs
:=
[]
string
{}
resources
:=
regexp
.
MustCompile
(
`\s*,`
)
.
Split
(
exposeResources
,
-
1
)
...
...
@@ -106,7 +107,7 @@ func NewCmdExposeService(f cmdutil.Factory, out io.Writer) *cobra.Command {
Example
:
exposeExample
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
cmdutil
.
CheckErr
(
o
.
Complete
(
f
,
cmd
))
cmdutil
.
CheckErr
(
o
.
RunExpose
(
f
,
out
,
cmd
,
args
))
cmdutil
.
CheckErr
(
o
.
RunExpose
(
f
,
cmd
,
args
))
},
ValidArgs
:
validArgs
,
ArgAliases
:
kubectl
.
ResourceAliases
(
validArgs
),
...
...
@@ -150,7 +151,7 @@ func (o *ExposeServiceOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) e
return
err
}
func
(
o
*
ExposeServiceOptions
)
RunExpose
(
f
cmdutil
.
Factory
,
out
io
.
Writer
,
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
func
(
o
*
ExposeServiceOptions
)
RunExpose
(
f
cmdutil
.
Factory
,
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
namespace
,
enforceNamespace
,
err
:=
f
.
DefaultNamespace
()
if
err
!=
nil
{
return
err
...
...
@@ -284,9 +285,9 @@ func (o *ExposeServiceOptions) RunExpose(f cmdutil.Factory, out io.Writer, cmd *
info
.
Refresh
(
object
,
true
)
if
cmdutil
.
GetDryRunFlag
(
cmd
)
{
if
len
(
cmdutil
.
GetFlagString
(
cmd
,
"output"
))
>
0
{
return
cmdutil
.
PrintObject
(
cmd
,
object
,
out
)
return
cmdutil
.
PrintObject
(
cmd
,
object
,
o
.
O
ut
)
}
cmdutil
.
PrintSuccess
(
false
,
out
,
info
.
Object
,
true
,
"exposed"
)
cmdutil
.
PrintSuccess
(
false
,
o
.
O
ut
,
info
.
Object
,
true
,
"exposed"
)
return
nil
}
if
err
:=
kubectl
.
CreateOrUpdateAnnotation
(
cmdutil
.
GetFlagBool
(
cmd
,
cmdutil
.
ApplyAnnotationsFlag
),
info
.
Object
,
cmdutil
.
InternalVersionJSONEncoder
());
err
!=
nil
{
...
...
@@ -300,10 +301,10 @@ func (o *ExposeServiceOptions) RunExpose(f cmdutil.Factory, out io.Writer, cmd *
}
if
len
(
cmdutil
.
GetFlagString
(
cmd
,
"output"
))
>
0
{
return
cmdutil
.
PrintObject
(
cmd
,
object
,
out
)
return
cmdutil
.
PrintObject
(
cmd
,
object
,
o
.
O
ut
)
}
cmdutil
.
PrintSuccess
(
false
,
out
,
info
.
Object
,
false
,
"exposed"
)
cmdutil
.
PrintSuccess
(
false
,
o
.
O
ut
,
info
.
Object
,
false
,
"exposed"
)
return
nil
})
if
err
!=
nil
{
...
...
pkg/kubectl/cmd/expose_test.go
View file @
8c1b6873
...
...
@@ -17,7 +17,6 @@ limitations under the License.
package
cmd
import
(
"bytes"
"fmt"
"net/http"
"strings"
...
...
@@ -31,6 +30,7 @@ import (
"k8s.io/kubernetes/pkg/api/legacyscheme"
api
"k8s.io/kubernetes/pkg/apis/core"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
...
...
@@ -489,9 +489,9 @@ func TestRunExposeService(t *testing.T) {
}),
}
tf
.
Namespace
=
test
.
ns
buf
:=
bytes
.
NewBuffer
([]
byte
{})
cmd
:=
NewCmdExposeService
(
tf
,
buf
)
ioStreams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
()
cmd
:=
NewCmdExposeService
(
tf
,
ioStreams
)
cmd
.
SetOutput
(
buf
)
for
flag
,
value
:=
range
test
.
flags
{
cmd
.
Flags
()
.
Set
(
flag
,
value
)
...
...
pkg/kubectl/cmd/resource/BUILD
View file @
8c1b6873
...
...
@@ -11,6 +11,7 @@ go_library(
"//pkg/kubectl/cmd/templates:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/cmd/util/openapi:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library",
"//pkg/printers:go_default_library",
...
...
@@ -50,6 +51,7 @@ go_test(
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/cmd/util/openapi:go_default_library",
"//pkg/kubectl/cmd/util/openapi/testing:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
...
...
pkg/kubectl/cmd/resource/get.go
View file @
8c1b6873
...
...
@@ -43,6 +43,7 @@ import (
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
...
...
@@ -51,8 +52,6 @@ import (
// GetOptions contains the input to the get command.
type
GetOptions
struct
{
Out
,
ErrOut
io
.
Writer
resource
.
FilenameOptions
Raw
string
...
...
@@ -75,6 +74,8 @@ type GetOptions struct {
Export
bool
IncludeUninitialized
bool
genericclioptions
.
IOStreams
}
var
(
...
...
@@ -126,18 +127,18 @@ const (
)
// NewGetOptions returns a GetOptions with default chunk size 500.
func
NewGetOptions
(
out
io
.
Writer
,
errOut
io
.
Writer
)
*
GetOptions
{
func
NewGetOptions
(
streams
genericclioptions
.
IOStreams
)
*
GetOptions
{
return
&
GetOptions
{
Out
:
out
,
ErrOut
:
errOut
,
ChunkSize
:
500
,
IOStreams
:
streams
,
}
}
// NewCmdGet creates a command object for the generic "get" action, which
// retrieves one or more resources from a server.
func
NewCmdGet
(
f
cmdutil
.
Factory
,
out
io
.
Writer
,
errOut
io
.
Writer
)
*
cobra
.
Command
{
options
:=
NewGetOptions
(
out
,
errOut
)
func
NewCmdGet
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
options
:=
NewGetOptions
(
streams
)
validArgs
:=
cmdutil
.
ValidArgList
(
f
)
cmd
:=
&
cobra
.
Command
{
...
...
pkg/kubectl/cmd/resource/get_test.go
View file @
8c1b6873
This diff is collapsed.
Click to expand it.
pkg/kubectl/cmd/run.go
View file @
8c1b6873
...
...
@@ -118,12 +118,10 @@ type RunOptions struct {
Schedule
string
TTY
bool
In
io
.
Reader
Out
io
.
Writer
ErrOut
io
.
Writer
genericclioptions
.
IOStreams
}
func
NewRunOptions
(
in
io
.
Reader
,
out
,
errOut
io
.
Writer
)
*
RunOptions
{
func
NewRunOptions
(
streams
genericclioptions
.
IOStreams
)
*
RunOptions
{
return
&
RunOptions
{
PrintFlags
:
printers
.
NewPrintFlags
(
"created"
),
DeleteFlags
:
NewDeleteFlags
(
"to use to replace the resource."
),
...
...
@@ -131,14 +129,12 @@ func NewRunOptions(in io.Reader, out, errOut io.Writer) *RunOptions {
Recorder
:
genericclioptions
.
NoopRecorder
{},
In
:
in
,
Out
:
out
,
ErrOut
:
errOut
,
IOStreams
:
streams
,
}
}
func
NewCmdRun
(
f
cmdutil
.
Factory
,
in
io
.
Reader
,
out
,
errOut
io
.
Writer
)
*
cobra
.
Command
{
o
:=
NewRunOptions
(
in
,
out
,
errOut
)
func
NewCmdRun
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
NewRunOptions
(
streams
)
cmd
:=
&
cobra
.
Command
{
Use
:
"run NAME --image=image [--env=
\"
key=value
\"
] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]"
,
...
...
pkg/kubectl/cmd/run_test.go
View file @
8c1b6873
...
...
@@ -194,7 +194,7 @@ func TestRunArgsFollowDashRules(t *testing.T) {
tf
.
Namespace
=
"test"
tf
.
ClientConfigVal
=
&
restclient
.
Config
{}
cmd
:=
NewCmdRun
(
tf
,
os
.
Stdin
,
os
.
Stdout
,
os
.
Stderr
)
cmd
:=
NewCmdRun
(
tf
,
genericclioptions
.
NewTestIOStreamsDiscard
()
)
cmd
.
Flags
()
.
Set
(
"image"
,
"nginx"
)
cmd
.
Flags
()
.
Set
(
"generator"
,
"run/v1"
)
...
...
@@ -210,9 +210,7 @@ func TestRunArgsFollowDashRules(t *testing.T) {
PrintFlags
:
printFlags
,
DeleteOptions
:
deleteFlags
.
ToOptions
(
os
.
Stdout
,
os
.
Stderr
),
In
:
os
.
Stdin
,
Out
:
os
.
Stdout
,
ErrOut
:
os
.
Stderr
,
IOStreams
:
genericclioptions
.
NewTestIOStreamsDiscard
(),
Image
:
"nginx"
,
Generator
:
"run/v1"
,
...
...
@@ -375,14 +373,13 @@ func TestGenerateService(t *testing.T) {
return
}
ioStreams
,
_
,
buff
,
_
:=
genericclioptions
.
NewTestIOStreams
()
deleteFlags
:=
NewDeleteFlags
(
"to use to replace the resource."
)
buff
:=
&
bytes
.
Buffer
{}
opts
:=
&
RunOptions
{
PrintFlags
:
printFlags
,
DeleteOptions
:
deleteFlags
.
ToOptions
(
os
.
Stdout
,
os
.
Stderr
),
Out
:
buff
,
ErrOut
:
buff
,
IOStreams
:
ioStreams
,
Port
:
test
.
port
,
Recorder
:
genericclioptions
.
NoopRecorder
{},
...
...
@@ -519,19 +516,17 @@ func TestRunValidations(t *testing.T) {
}
tf
.
Namespace
=
"test"
tf
.
ClientConfigVal
=
defaultClientConfig
()
inBuf
:=
bytes
.
NewReader
([]
byte
{})
outBuf
:=
bytes
.
NewBuffer
([]
byte
{})
errBuf
:=
bytes
.
NewBuffer
([]
byte
{})
cmd
:=
NewCmdRun
(
tf
,
inBuf
,
outBuf
,
errBuf
)
streams
,
_
,
_
,
bufErr
:=
genericclioptions
.
NewTestIOStreams
()
cmd
:=
NewCmdRun
(
tf
,
streams
)
for
flagName
,
flagValue
:=
range
test
.
flags
{
cmd
.
Flags
()
.
Set
(
flagName
,
flagValue
)
}
cmd
.
Run
(
cmd
,
test
.
args
)
var
err
error
if
errBuf
.
Len
()
>
0
{
err
=
fmt
.
Errorf
(
"%v"
,
errBuf
.
String
())
if
bufErr
.
Len
()
>
0
{
err
=
fmt
.
Errorf
(
"%v"
,
bufErr
.
String
())
}
if
err
!=
nil
&&
len
(
test
.
expectedErr
)
>
0
{
if
!
strings
.
Contains
(
err
.
Error
(),
test
.
expectedErr
)
{
...
...
pkg/kubectl/cmd/set/BUILD
View file @
8c1b6873
...
...
@@ -66,6 +66,7 @@ go_test(
"//pkg/apis/rbac:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/printers:go_default_library",
...
...
pkg/kubectl/cmd/set/set.go
View file @
8c1b6873
...
...
@@ -17,11 +17,10 @@ limitations under the License.
package
set
import
(
"io"
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
)
...
...
@@ -32,22 +31,22 @@ var (
These commands help you make changes to existing application resources.`
)
)
func
NewCmdSet
(
f
cmdutil
.
Factory
,
in
io
.
Reader
,
out
,
err
io
.
Writer
)
*
cobra
.
Command
{
func
NewCmdSet
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
cmd
:=
&
cobra
.
Command
{
Use
:
"set SUBCOMMAND"
,
DisableFlagsInUseLine
:
true
,
Short
:
i18n
.
T
(
"Set specific features on objects"
),
Long
:
set_long
,
Run
:
cmdutil
.
DefaultSubCommandRun
(
err
),
Run
:
cmdutil
.
DefaultSubCommandRun
(
streams
.
ErrOut
),
}
// add subcommands
cmd
.
AddCommand
(
NewCmdImage
(
f
,
out
,
err
))
cmd
.
AddCommand
(
NewCmdResources
(
f
,
out
,
err
))
cmd
.
AddCommand
(
NewCmdSelector
(
f
,
out
))
cmd
.
AddCommand
(
NewCmdSubject
(
f
,
out
,
err
))
cmd
.
AddCommand
(
NewCmdServiceAccount
(
f
,
out
,
err
))
cmd
.
AddCommand
(
NewCmdEnv
(
f
,
in
,
out
,
err
))
cmd
.
AddCommand
(
NewCmdImage
(
f
,
streams
))
cmd
.
AddCommand
(
NewCmdResources
(
f
,
streams
))
cmd
.
AddCommand
(
NewCmdSelector
(
f
,
streams
))
cmd
.
AddCommand
(
NewCmdSubject
(
f
,
streams
))
cmd
.
AddCommand
(
NewCmdServiceAccount
(
f
,
streams
))
cmd
.
AddCommand
(
NewCmdEnv
(
f
,
streams
))
return
cmd
}
pkg/kubectl/cmd/set/set_env.go
View file @
8c1b6873
...
...
@@ -19,7 +19,6 @@ package set
import
(
"errors"
"fmt"
"io"
"regexp"
"sort"
"strings"
...
...
@@ -36,6 +35,7 @@ import (
"k8s.io/kubernetes/pkg/printers"
utilerrors
"k8s.io/apimachinery/pkg/util/errors"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
)
var
(
...
...
@@ -94,10 +94,6 @@ var (
type
EnvOptions
struct
{
PrintFlags
*
printers
.
PrintFlags
Out
io
.
Writer
Err
io
.
Writer
In
io
.
Reader
resource
.
FilenameOptions
EnvParams
[]
string
EnvArgs
[]
string
...
...
@@ -123,25 +119,26 @@ type EnvOptions struct {
Infos
[]
*
resource
.
Info
UpdatePodSpecForObject
func
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
genericclioptions
.
IOStreams
}
// NewEnvOptions returns an EnvOptions indicating all containers in the selected
// pod templates are selected by default and allowing environment to be overwritten
func
NewEnvOptions
(
in
io
.
Reader
,
out
,
errout
io
.
Writer
)
*
EnvOptions
{
func
NewEnvOptions
(
streams
genericclioptions
.
IOStreams
)
*
EnvOptions
{
return
&
EnvOptions
{
PrintFlags
:
printers
.
NewPrintFlags
(
"env updated"
),
Out
:
out
,
Err
:
errout
,
In
:
in
,
ContainerSelector
:
"*"
,
Overwrite
:
true
,
IOStreams
:
streams
,
}
}
// NewCmdEnv implements the OpenShift cli env command
func
NewCmdEnv
(
f
cmdutil
.
Factory
,
in
io
.
Reader
,
out
,
errout
io
.
Writer
)
*
cobra
.
Command
{
options
:=
NewEnvOptions
(
in
,
out
,
errout
)
func
NewCmdEnv
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
options
:=
NewEnvOptions
(
streams
)
cmd
:=
&
cobra
.
Command
{
Use
:
"env RESOURCE/NAME KEY_1=VAL_1 ... KEY_N=VAL_N"
,
DisableFlagsInUseLine
:
true
,
...
...
@@ -346,7 +343,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
resolutionErrorsEncountered
:=
false
containers
,
_
:=
selectContainers
(
spec
.
Containers
,
o
.
ContainerSelector
)
if
len
(
containers
)
==
0
{
fmt
.
Fprintf
(
o
.
Err
,
"warning: %s/%s does not have any containers matching %q
\n
"
,
info
.
Mapping
.
Resource
,
info
.
Name
,
o
.
ContainerSelector
)
fmt
.
Fprintf
(
o
.
Err
Out
,
"warning: %s/%s does not have any containers matching %q
\n
"
,
info
.
Mapping
.
Resource
,
info
.
Name
,
o
.
ContainerSelector
)
return
nil
}
for
_
,
c
:=
range
containers
{
...
...
@@ -397,7 +394,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
}
sort
.
Strings
(
errs
)
for
_
,
err
:=
range
errs
{
fmt
.
Fprintln
(
o
.
Err
,
err
)
fmt
.
Fprintln
(
o
.
Err
Out
,
err
)
}
}
}
...
...
pkg/kubectl/cmd/set/set_env_test.go
View file @
8c1b6873
...
...
@@ -17,11 +17,9 @@ limitations under the License.
package
set
import
(
"bytes"
"fmt"
"io/ioutil"
"net/http"
"os"
"path"
"strings"
"testing"
...
...
@@ -43,6 +41,7 @@ import (
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
...
...
@@ -65,8 +64,8 @@ func TestSetEnvLocal(t *testing.T) {
outputFormat
:=
"name"
buf
:=
bytes
.
NewBuffer
([]
byte
{}
)
cmd
:=
NewCmdEnv
(
tf
,
os
.
Stdin
,
buf
,
buf
)
streams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
(
)
cmd
:=
NewCmdEnv
(
tf
,
streams
)
cmd
.
SetOutput
(
buf
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
...
...
@@ -80,8 +79,8 @@ func TestSetEnvLocal(t *testing.T) {
},
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"
}},
Out
:
buf
,
Local
:
true
,
Local
:
true
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
[]
string
{
"env=prod"
})
if
err
==
nil
{
...
...
@@ -114,8 +113,8 @@ func TestSetMultiResourcesEnvLocal(t *testing.T) {
outputFormat
:=
"name"
buf
:=
bytes
.
NewBuffer
([]
byte
{}
)
cmd
:=
NewCmdEnv
(
tf
,
os
.
Stdin
,
buf
,
buf
)
streams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
(
)
cmd
:=
NewCmdEnv
(
tf
,
streams
)
cmd
.
SetOutput
(
buf
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
...
...
@@ -129,8 +128,8 @@ func TestSetMultiResourcesEnvLocal(t *testing.T) {
},
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/fixtures/pkg/kubectl/cmd/set/multi-resource-yaml.yaml"
}},
Out
:
buf
,
Local
:
true
,
Local
:
true
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
[]
string
{
"env=prod"
})
if
err
==
nil
{
...
...
@@ -507,9 +506,8 @@ func TestSetEnvRemote(t *testing.T) {
outputFormat
:=
"yaml"
out
:=
new
(
bytes
.
Buffer
)
cmd
:=
NewCmdEnv
(
tf
,
out
,
out
,
out
)
cmd
.
SetOutput
(
out
)
streams
:=
genericclioptions
.
NewTestIOStreamsDiscard
()
cmd
:=
NewCmdEnv
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
opts
:=
EnvOptions
{
PrintFlags
:
&
printers
.
PrintFlags
{
...
...
@@ -518,8 +516,9 @@ func TestSetEnvRemote(t *testing.T) {
OutputFormat
:
&
outputFormat
,
},
Out
:
out
,
Local
:
false
}
Local
:
false
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
input
.
args
)
assert
.
NoError
(
t
,
err
)
err
=
opts
.
RunEnv
(
tf
)
...
...
pkg/kubectl/cmd/set/set_image.go
View file @
8c1b6873
...
...
@@ -18,7 +18,6 @@ package set
import
(
"fmt"
"io"
"k8s.io/kubernetes/pkg/printers"
...
...
@@ -45,8 +44,6 @@ type SetImageOptions struct {
Infos
[]
*
resource
.
Info
Selector
string
Out
io
.
Writer
Err
io
.
Writer
DryRun
bool
All
bool
Output
string
...
...
@@ -59,6 +56,8 @@ type SetImageOptions struct {
UpdatePodSpecForObject
func
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
Resources
[]
string
ContainerImages
map
[
string
]
string
genericclioptions
.
IOStreams
}
var
(
...
...
@@ -85,20 +84,19 @@ var (
kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml`
)
)
func
NewImageOptions
(
out
,
errOut
io
.
Writer
)
*
SetImageOptions
{
func
NewImageOptions
(
streams
genericclioptions
.
IOStreams
)
*
SetImageOptions
{
return
&
SetImageOptions
{
PrintFlags
:
printers
.
NewPrintFlags
(
"image updated"
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
Out
:
out
,
Err
:
errOut
,
IOStreams
:
streams
,
}
}
func
NewCmdImage
(
f
cmdutil
.
Factory
,
out
,
errOut
io
.
Writer
)
*
cobra
.
Command
{
o
:=
NewImageOptions
(
out
,
errOut
)
func
NewCmdImage
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
NewImageOptions
(
streams
)
cmd
:=
&
cobra
.
Command
{
Use
:
"image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N"
,
...
...
pkg/kubectl/cmd/set/set_image_test.go
View file @
8c1b6873
...
...
@@ -17,7 +17,6 @@ limitations under the License.
package
set
import
(
"bytes"
"fmt"
"io/ioutil"
"net/http"
...
...
@@ -42,6 +41,7 @@ import (
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
...
...
@@ -65,8 +65,8 @@ func TestImageLocal(t *testing.T) {
outputFormat
:=
"name"
buf
:=
bytes
.
NewBuffer
([]
byte
{}
)
cmd
:=
NewCmdImage
(
tf
,
buf
,
buf
)
streams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
(
)
cmd
:=
NewCmdImage
(
tf
,
streams
)
cmd
.
SetOutput
(
buf
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
...
...
@@ -80,8 +80,9 @@ func TestImageLocal(t *testing.T) {
},
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"
}},
Out
:
buf
,
Local
:
true
}
Local
:
true
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
[]
string
{
"cassandra=thingy"
})
if
err
==
nil
{
err
=
opts
.
Validate
()
...
...
@@ -187,8 +188,8 @@ func TestSetMultiResourcesImageLocal(t *testing.T) {
outputFormat
:=
"name"
buf
:=
bytes
.
NewBuffer
([]
byte
{}
)
cmd
:=
NewCmdImage
(
tf
,
buf
,
buf
)
streams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
(
)
cmd
:=
NewCmdImage
(
tf
,
streams
)
cmd
.
SetOutput
(
buf
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
...
...
@@ -202,8 +203,9 @@ func TestSetMultiResourcesImageLocal(t *testing.T) {
},
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/fixtures/pkg/kubectl/cmd/set/multi-resource-yaml.yaml"
}},
Out
:
buf
,
Local
:
true
}
Local
:
true
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
[]
string
{
"*=thingy"
})
if
err
==
nil
{
err
=
opts
.
Validate
()
...
...
@@ -583,9 +585,8 @@ func TestSetImageRemote(t *testing.T) {
outputFormat
:=
"yaml"
out
:=
new
(
bytes
.
Buffer
)
cmd
:=
NewCmdImage
(
tf
,
out
,
out
)
cmd
.
SetOutput
(
out
)
streams
:=
genericclioptions
.
NewTestIOStreamsDiscard
()
cmd
:=
NewCmdImage
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
opts
:=
SetImageOptions
{
PrintFlags
:
&
printers
.
PrintFlags
{
...
...
@@ -595,8 +596,9 @@ func TestSetImageRemote(t *testing.T) {
OutputFormat
:
&
outputFormat
,
},
Out
:
out
,
Local
:
false
}
Local
:
false
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
input
.
args
)
assert
.
NoError
(
t
,
err
)
err
=
opts
.
Run
()
...
...
pkg/kubectl/cmd/set/set_resources.go
View file @
8c1b6873
...
...
@@ -18,7 +18,6 @@ package set
import
(
"fmt"
"io"
"strings"
"k8s.io/kubernetes/pkg/printers"
...
...
@@ -69,8 +68,6 @@ type SetResourcesOptions struct {
RecordFlags
*
genericclioptions
.
RecordFlags
Infos
[]
*
resource
.
Info
Out
io
.
Writer
Err
io
.
Writer
Selector
string
ContainerSelector
string
Output
string
...
...
@@ -88,25 +85,27 @@ type SetResourcesOptions struct {
UpdatePodSpecForObject
func
(
obj
runtime
.
Object
,
fn
func
(
*
v1
.
PodSpec
)
error
)
(
bool
,
error
)
Resources
[]
string
genericclioptions
.
IOStreams
}
// NewResourcesOptions returns a ResourcesOptions indicating all containers in the selected
// pod templates are selected by default.
func
NewResourcesOptions
(
out
io
.
Writer
,
errOut
io
.
Writer
)
*
SetResourcesOptions
{
func
NewResourcesOptions
(
streams
genericclioptions
.
IOStreams
)
*
SetResourcesOptions
{
return
&
SetResourcesOptions
{
PrintFlags
:
printers
.
NewPrintFlags
(
"resource requirements updated"
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
Out
:
out
,
Err
:
errOut
,
ContainerSelector
:
"*"
,
IOStreams
:
streams
,
}
}
func
NewCmdResources
(
f
cmdutil
.
Factory
,
out
io
.
Writer
,
errOut
io
.
Writer
)
*
cobra
.
Command
{
o
:=
NewResourcesOptions
(
out
,
errOut
)
func
NewCmdResources
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
NewResourcesOptions
(
streams
)
resourceTypesWithPodTemplate
:=
[]
string
{}
for
_
,
resource
:=
range
f
.
SuggestedPodTemplateResources
()
{
...
...
pkg/kubectl/cmd/set/set_resources_test.go
View file @
8c1b6873
...
...
@@ -17,7 +17,6 @@ limitations under the License.
package
set
import
(
"bytes"
"fmt"
"io/ioutil"
"net/http"
...
...
@@ -42,6 +41,7 @@ import (
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
...
...
@@ -64,8 +64,8 @@ func TestResourcesLocal(t *testing.T) {
outputFormat
:=
"name"
buf
:=
bytes
.
NewBuffer
([]
byte
{}
)
cmd
:=
NewCmdResources
(
tf
,
buf
,
buf
)
streams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
(
)
cmd
:=
NewCmdResources
(
tf
,
streams
)
cmd
.
SetOutput
(
buf
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
...
...
@@ -79,11 +79,12 @@ func TestResourcesLocal(t *testing.T) {
},
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"
}},
Out
:
buf
,
Local
:
true
,
Limits
:
"cpu=200m,memory=512Mi"
,
Requests
:
"cpu=200m,memory=512Mi"
,
ContainerSelector
:
"*"
}
ContainerSelector
:
"*"
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
[]
string
{})
if
err
==
nil
{
...
...
@@ -118,8 +119,8 @@ func TestSetMultiResourcesLimitsLocal(t *testing.T) {
outputFormat
:=
"name"
buf
:=
bytes
.
NewBuffer
([]
byte
{}
)
cmd
:=
NewCmdResources
(
tf
,
buf
,
buf
)
streams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
(
)
cmd
:=
NewCmdResources
(
tf
,
streams
)
cmd
.
SetOutput
(
buf
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
...
...
@@ -133,11 +134,12 @@ func TestSetMultiResourcesLimitsLocal(t *testing.T) {
},
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/fixtures/pkg/kubectl/cmd/set/multi-resource-yaml.yaml"
}},
Out
:
buf
,
Local
:
true
,
Limits
:
"cpu=200m,memory=512Mi"
,
Requests
:
"cpu=200m,memory=512Mi"
,
ContainerSelector
:
"*"
}
ContainerSelector
:
"*"
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
[]
string
{})
if
err
==
nil
{
...
...
@@ -501,9 +503,8 @@ func TestSetResourcesRemote(t *testing.T) {
outputFormat
:=
"yaml"
buf
:=
new
(
bytes
.
Buffer
)
cmd
:=
NewCmdResources
(
tf
,
buf
,
buf
)
cmd
.
SetOutput
(
buf
)
streams
:=
genericclioptions
.
NewTestIOStreamsDiscard
()
cmd
:=
NewCmdResources
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
opts
:=
SetResourcesOptions
{
PrintFlags
:
&
printers
.
PrintFlags
{
...
...
@@ -513,9 +514,10 @@ func TestSetResourcesRemote(t *testing.T) {
OutputFormat
:
&
outputFormat
,
},
Out
:
buf
,
Limits
:
"cpu=200m,memory=512Mi"
,
ContainerSelector
:
"*"
}
ContainerSelector
:
"*"
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
input
.
args
)
if
err
==
nil
{
err
=
opts
.
Validate
()
...
...
pkg/kubectl/cmd/set/set_selector.go
View file @
8c1b6873
...
...
@@ -18,7 +18,6 @@ package set
import
(
"fmt"
"io"
"k8s.io/kubernetes/pkg/printers"
...
...
@@ -53,7 +52,6 @@ type SetSelectorOptions struct {
resources
[]
string
selector
*
metav1
.
LabelSelector
out
io
.
Writer
ClientForMapping
func
(
mapping
*
meta
.
RESTMapping
)
(
resource
.
RESTClient
,
error
)
PrintObj
printers
.
ResourcePrinterFunc
...
...
@@ -61,6 +59,8 @@ type SetSelectorOptions struct {
builder
*
resource
.
Builder
mapper
meta
.
RESTMapper
genericclioptions
.
IOStreams
}
var
(
...
...
@@ -77,20 +77,20 @@ var (
kubectl create deployment my-dep -o yaml --dry-run | kubectl label --local -f - environment=qa -o yaml | kubectl create -f -`
)
)
func
NewSelectorOptions
(
out
io
.
Writer
)
*
SetSelectorOptions
{
func
NewSelectorOptions
(
streams
genericclioptions
.
IOStreams
)
*
SetSelectorOptions
{
return
&
SetSelectorOptions
{
PrintFlags
:
printers
.
NewPrintFlags
(
"selector updated"
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
out
:
out
,
IOStreams
:
streams
,
}
}
// NewCmdSelector is the "set selector" command.
func
NewCmdSelector
(
f
cmdutil
.
Factory
,
out
io
.
Writer
)
*
cobra
.
Command
{
o
:=
NewSelectorOptions
(
out
)
func
NewCmdSelector
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
NewSelectorOptions
(
streams
)
cmd
:=
&
cobra
.
Command
{
Use
:
"selector (-f FILENAME | TYPE NAME) EXPRESSIONS [--resource-version=version]"
,
...
...
@@ -226,7 +226,7 @@ func (o *SetSelectorOptions) RunSelector() error {
return
patch
.
Err
}
if
o
.
local
||
o
.
dryrun
{
return
o
.
PrintObj
(
info
.
Object
,
o
.
o
ut
)
return
o
.
PrintObj
(
info
.
Object
,
o
.
O
ut
)
}
patched
,
err
:=
resource
.
NewHelper
(
info
.
Client
,
info
.
Mapping
)
.
Patch
(
info
.
Namespace
,
info
.
Name
,
types
.
StrategicMergePatchType
,
patch
.
Patch
)
...
...
@@ -235,7 +235,7 @@ func (o *SetSelectorOptions) RunSelector() error {
}
info
.
Refresh
(
patched
,
true
)
return
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(),
o
.
o
ut
)
return
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(),
o
.
O
ut
)
})
}
...
...
pkg/kubectl/cmd/set/set_selector_test.go
View file @
8c1b6873
...
...
@@ -17,7 +17,6 @@ limitations under the License.
package
set
import
(
"bytes"
"net/http"
"reflect"
"strings"
...
...
@@ -34,6 +33,7 @@ import (
"k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
)
func
TestUpdateSelectorForObjectTypes
(
t
*
testing
.
T
)
{
...
...
@@ -331,9 +331,8 @@ func TestSelectorTest(t *testing.T) {
tf
.
Namespace
=
"test"
tf
.
ClientConfigVal
=
&
restclient
.
Config
{
ContentConfig
:
restclient
.
ContentConfig
{
GroupVersion
:
&
schema
.
GroupVersion
{
Version
:
""
}}}
buf
:=
bytes
.
NewBuffer
([]
byte
{})
cmd
:=
NewCmdSelector
(
tf
,
buf
)
cmd
.
SetOutput
(
buf
)
streams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
()
cmd
:=
NewCmdSelector
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
"name"
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
cmd
.
Flags
()
.
Set
(
"filename"
,
"../../../../test/e2e/testing-manifests/statefulset/cassandra/service.yaml"
)
...
...
pkg/kubectl/cmd/set/set_serviceaccount.go
View file @
8c1b6873
...
...
@@ -19,7 +19,6 @@ package set
import
(
"errors"
"fmt"
"io"
"k8s.io/kubernetes/pkg/printers"
...
...
@@ -62,8 +61,6 @@ type SetServiceAccountOptions struct {
RecordFlags
*
genericclioptions
.
RecordFlags
fileNameOptions
resource
.
FilenameOptions
out
io
.
Writer
err
io
.
Writer
dryRun
bool
shortOutput
bool
all
bool
...
...
@@ -75,23 +72,24 @@ type SetServiceAccountOptions struct {
PrintObj
printers
.
ResourcePrinterFunc
Recorder
genericclioptions
.
Recorder
genericclioptions
.
IOStreams
}
func
NewSetServiceAccountOptions
(
out
,
errOut
io
.
Writer
)
*
SetServiceAccountOptions
{
func
NewSetServiceAccountOptions
(
streams
genericclioptions
.
IOStreams
)
*
SetServiceAccountOptions
{
return
&
SetServiceAccountOptions
{
PrintFlags
:
printers
.
NewPrintFlags
(
"serviceaccount updated"
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
out
:
out
,
err
:
errOut
,
IOStreams
:
streams
,
}
}
// NewCmdServiceAccount returns the "set serviceaccount" command.
func
NewCmdServiceAccount
(
f
cmdutil
.
Factory
,
out
,
errOut
io
.
Writer
)
*
cobra
.
Command
{
o
:=
NewSetServiceAccountOptions
(
out
,
errOut
)
func
NewCmdServiceAccount
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
NewSetServiceAccountOptions
(
streams
)
cmd
:=
&
cobra
.
Command
{
Use
:
"serviceaccount (-f FILENAME | TYPE NAME) SERVICE_ACCOUNT"
,
...
...
@@ -199,7 +197,7 @@ func (o *SetServiceAccountOptions) Run() error {
continue
}
if
o
.
local
||
o
.
dryRun
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(),
o
.
o
ut
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
patch
.
Info
.
AsVersioned
(),
o
.
O
ut
);
err
!=
nil
{
return
err
}
continue
...
...
@@ -211,7 +209,7 @@ func (o *SetServiceAccountOptions) Run() error {
}
info
.
Refresh
(
patched
,
true
)
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(),
o
.
o
ut
);
err
!=
nil
{
if
err
:=
o
.
PrintObj
(
info
.
AsVersioned
(),
o
.
O
ut
);
err
!=
nil
{
return
err
}
}
...
...
pkg/kubectl/cmd/set/set_serviceaccount_test.go
View file @
8c1b6873
...
...
@@ -42,6 +42,7 @@ import (
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
...
...
@@ -83,9 +84,8 @@ func TestSetServiceAccountLocal(t *testing.T) {
outputFormat
:=
"yaml"
tf
.
Namespace
=
"test"
out
:=
new
(
bytes
.
Buffer
)
cmd
:=
NewCmdServiceAccount
(
tf
,
out
,
out
)
cmd
.
SetOutput
(
out
)
streams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
()
cmd
:=
NewCmdServiceAccount
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
testapi
.
Default
=
testapi
.
Groups
[
input
.
apiGroup
]
...
...
@@ -98,13 +98,14 @@ func TestSetServiceAccountLocal(t *testing.T) {
},
fileNameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
input
.
yaml
}},
out
:
out
,
local
:
true
}
local
:
true
,
IOStreams
:
streams
,
}
err
:=
saConfig
.
Complete
(
tf
,
cmd
,
[]
string
{
serviceAccount
})
assert
.
NoError
(
t
,
err
)
err
=
saConfig
.
Run
()
assert
.
NoError
(
t
,
err
)
assert
.
Contains
(
t
,
out
.
String
(),
"serviceAccountName: "
+
serviceAccount
,
fmt
.
Sprintf
(
"serviceaccount not updated for %s"
,
input
.
yaml
))
assert
.
Contains
(
t
,
buf
.
String
(),
"serviceAccountName: "
+
serviceAccount
,
fmt
.
Sprintf
(
"serviceaccount not updated for %s"
,
input
.
yaml
))
})
}
}
...
...
@@ -128,9 +129,8 @@ func TestSetServiceAccountMultiLocal(t *testing.T) {
outputFormat
:=
"name"
buf
:=
bytes
.
NewBuffer
([]
byte
{})
cmd
:=
NewCmdServiceAccount
(
tf
,
buf
,
buf
)
cmd
.
SetOutput
(
buf
)
streams
,
_
,
buf
,
_
:=
genericclioptions
.
NewTestIOStreams
()
cmd
:=
NewCmdServiceAccount
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
opts
:=
SetServiceAccountOptions
{
...
...
@@ -142,8 +142,9 @@ func TestSetServiceAccountMultiLocal(t *testing.T) {
},
fileNameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/fixtures/pkg/kubectl/cmd/set/multi-resource-yaml.yaml"
}},
out
:
buf
,
local
:
true
}
local
:
true
,
IOStreams
:
streams
,
}
err
:=
opts
.
Complete
(
tf
,
cmd
,
[]
string
{
serviceAccount
})
if
err
==
nil
{
...
...
@@ -373,9 +374,8 @@ func TestSetServiceAccountRemote(t *testing.T) {
outputFormat
:=
"yaml"
out
:=
new
(
bytes
.
Buffer
)
cmd
:=
NewCmdServiceAccount
(
tf
,
out
,
out
)
cmd
.
SetOutput
(
out
)
streams
:=
genericclioptions
.
NewTestIOStreamsDiscard
()
cmd
:=
NewCmdServiceAccount
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
saConfig
:=
SetServiceAccountOptions
{
PrintFlags
:
&
printers
.
PrintFlags
{
...
...
@@ -385,8 +385,9 @@ func TestSetServiceAccountRemote(t *testing.T) {
OutputFormat
:
&
outputFormat
,
},
out
:
out
,
local
:
false
}
local
:
false
,
IOStreams
:
streams
,
}
err
:=
saConfig
.
Complete
(
tf
,
cmd
,
input
.
args
)
assert
.
NoError
(
t
,
err
)
err
=
saConfig
.
Run
()
...
...
@@ -420,9 +421,8 @@ func TestServiceAccountValidation(t *testing.T) {
outputFormat
:=
""
tf
.
Namespace
=
"test"
out
:=
bytes
.
NewBuffer
([]
byte
{})
cmd
:=
NewCmdServiceAccount
(
tf
,
out
,
out
)
cmd
.
SetOutput
(
out
)
streams
:=
genericclioptions
.
NewTestIOStreamsDiscard
()
cmd
:=
NewCmdServiceAccount
(
tf
,
streams
)
saConfig
:=
&
SetServiceAccountOptions
{
PrintFlags
:
&
printers
.
PrintFlags
{
...
...
@@ -431,6 +431,7 @@ func TestServiceAccountValidation(t *testing.T) {
OutputFormat
:
&
outputFormat
,
},
IOStreams
:
streams
,
}
err
:=
saConfig
.
Complete
(
tf
,
cmd
,
input
.
args
)
assert
.
EqualError
(
t
,
err
,
input
.
errorString
)
...
...
pkg/kubectl/cmd/set/set_subject.go
View file @
8c1b6873
...
...
@@ -18,7 +18,6 @@ package set
import
(
"fmt"
"io"
"strings"
"k8s.io/kubernetes/pkg/printers"
...
...
@@ -32,6 +31,7 @@ import (
"k8s.io/kubernetes/pkg/apis/rbac"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
)
...
...
@@ -61,8 +61,6 @@ type SubjectOptions struct {
resource
.
FilenameOptions
Infos
[]
*
resource
.
Info
Out
io
.
Writer
Err
io
.
Writer
Selector
string
ContainerSelector
string
Output
string
...
...
@@ -75,15 +73,20 @@ type SubjectOptions struct {
ServiceAccounts
[]
string
PrintObj
printers
.
ResourcePrinterFunc
genericclioptions
.
IOStreams
}
func
New
CmdSubject
(
f
cmdutil
.
Factory
,
out
io
.
Writer
,
errOut
io
.
Writer
)
*
cobra
.
Command
{
options
:=
&
SubjectOptions
{
func
New
SubjectOptions
(
streams
genericclioptions
.
IOStreams
)
*
SubjectOptions
{
return
&
SubjectOptions
{
PrintFlags
:
printers
.
NewPrintFlags
(
"subjects updated"
),
Out
:
out
,
Err
:
errOut
,
IOStreams
:
streams
,
}
}
func
NewCmdSubject
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
options
:=
NewSubjectOptions
(
streams
)
cmd
:=
&
cobra
.
Command
{
Use
:
"subject (-f FILENAME | TYPE NAME) [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run]"
,
...
...
pkg/kubectl/cmd/set/set_test.go
View file @
8c1b6873
...
...
@@ -17,20 +17,17 @@ limitations under the License.
package
set
import
(
"bytes"
"testing"
"github.com/spf13/cobra"
clientcmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"
o
s"
"
k8s.io/kubernetes/pkg/kubectl/genericclioption
s"
)
func
TestLocalAndDryRunFlags
(
t
*
testing
.
T
)
{
out
:=
&
bytes
.
Buffer
{}
errout
:=
&
bytes
.
Buffer
{}
f
:=
clientcmdutil
.
NewFactory
(
nil
)
setCmd
:=
NewCmdSet
(
f
,
os
.
Stdin
,
out
,
errout
)
setCmd
:=
NewCmdSet
(
f
,
genericclioptions
.
NewTestIOStreamsDiscard
()
)
ensureLocalAndDryRunFlagsOnChildren
(
t
,
setCmd
,
""
)
}
...
...
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