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
d1603c95
Commit
d1603c95
authored
May 02, 2018
by
juanvallejo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
move PrintOptions to genericclioptions
parent
3693ed09
Hide whitespace changes
Inline
Side-by-side
Showing
77 changed files
with
475 additions
and
409 deletions
+475
-409
.golint_failures
hack/.golint_failures
+2
-0
import-restrictions.yaml
hack/import-restrictions.yaml
+1
-0
BUILD
pkg/kubectl/cmd/BUILD
+2
-0
annotate.go
pkg/kubectl/cmd/annotate.go
+3
-3
apply.go
pkg/kubectl/cmd/apply.go
+7
-11
apply_set_last_applied.go
pkg/kubectl/cmd/apply_set_last_applied.go
+3
-3
BUILD
pkg/kubectl/cmd/auth/BUILD
+1
-1
reconcile.go
pkg/kubectl/cmd/auth/reconcile.go
+3
-3
autoscale.go
pkg/kubectl/cmd/autoscale.go
+6
-11
certificates.go
pkg/kubectl/cmd/certificates.go
+4
-4
clusterinfo_dump.go
pkg/kubectl/cmd/clusterinfo_dump.go
+3
-3
cmd_printing_test.go
pkg/kubectl/cmd/cmd_printing_test.go
+7
-5
BUILD
pkg/kubectl/cmd/config/BUILD
+1
-0
flags.go
pkg/kubectl/cmd/config/flags.go
+12
-10
convert.go
pkg/kubectl/cmd/convert.go
+3
-3
BUILD
pkg/kubectl/cmd/create/BUILD
+1
-0
flags.go
pkg/kubectl/cmd/create/flags.go
+12
-10
drain.go
pkg/kubectl/cmd/drain.go
+18
-17
drain_test.go
pkg/kubectl/cmd/drain_test.go
+2
-2
expose.go
pkg/kubectl/cmd/expose.go
+3
-3
BUILD
pkg/kubectl/cmd/get/BUILD
+0
-1
get.go
pkg/kubectl/cmd/get/get.go
+1
-1
get_flags.go
pkg/kubectl/cmd/get/get_flags.go
+13
-12
humanreadable_flags.go
pkg/kubectl/cmd/get/humanreadable_flags.go
+2
-1
humanreadable_flags_test.go
pkg/kubectl/cmd/get/humanreadable_flags_test.go
+3
-3
label.go
pkg/kubectl/cmd/label.go
+6
-10
patch.go
pkg/kubectl/cmd/patch.go
+6
-10
replace.go
pkg/kubectl/cmd/replace.go
+3
-4
rollingupdate.go
pkg/kubectl/cmd/rollingupdate.go
+6
-11
BUILD
pkg/kubectl/cmd/rollout/BUILD
+1
-1
rollout_pause.go
pkg/kubectl/cmd/rollout/rollout_pause.go
+6
-11
rollout_resume.go
pkg/kubectl/cmd/rollout/rollout_resume.go
+6
-11
rollout_undo.go
pkg/kubectl/cmd/rollout/rollout_undo.go
+7
-11
run.go
pkg/kubectl/cmd/run.go
+4
-5
run_test.go
pkg/kubectl/cmd/run_test.go
+2
-3
scale.go
pkg/kubectl/cmd/scale.go
+4
-4
BUILD
pkg/kubectl/cmd/set/BUILD
+1
-2
set_env.go
pkg/kubectl/cmd/set/set_env.go
+3
-3
set_env_test.go
pkg/kubectl/cmd/set/set_env_test.go
+3
-4
set_image.go
pkg/kubectl/cmd/set/set_image.go
+3
-3
set_image_test.go
pkg/kubectl/cmd/set/set_image_test.go
+4
-5
set_resources.go
pkg/kubectl/cmd/set/set_resources.go
+3
-4
set_resources_test.go
pkg/kubectl/cmd/set/set_resources_test.go
+3
-5
set_selector.go
pkg/kubectl/cmd/set/set_selector.go
+3
-4
set_serviceaccount.go
pkg/kubectl/cmd/set/set_serviceaccount.go
+3
-4
set_serviceaccount_test.go
pkg/kubectl/cmd/set/set_serviceaccount_test.go
+4
-6
set_subject.go
pkg/kubectl/cmd/set/set_subject.go
+3
-3
taint.go
pkg/kubectl/cmd/taint.go
+6
-11
BUILD
pkg/kubectl/cmd/util/editor/BUILD
+1
-1
editoptions.go
pkg/kubectl/cmd/util/editor/editoptions.go
+6
-10
BUILD
pkg/kubectl/genericclioptions/BUILD
+19
-1
json_yaml_flags.go
pkg/kubectl/genericclioptions/json_yaml_flags.go
+7
-5
json_yaml_flags_test.go
pkg/kubectl/genericclioptions/json_yaml_flags_test.go
+4
-5
name_flags.go
pkg/kubectl/genericclioptions/name_flags.go
+5
-3
name_flags_test.go
pkg/kubectl/genericclioptions/name_flags_test.go
+4
-5
print_flags.go
pkg/kubectl/genericclioptions/print_flags.go
+5
-44
BUILD
pkg/kubectl/genericclioptions/printers/BUILD
+41
-0
interface.go
pkg/kubectl/genericclioptions/printers/interface.go
+32
-0
json.go
pkg/kubectl/genericclioptions/printers/json.go
+4
-4
name.go
pkg/kubectl/genericclioptions/printers/name.go
+2
-2
sourcechecker.go
pkg/kubectl/genericclioptions/printers/sourcechecker.go
+60
-0
sourcechecker_test.go
pkg/kubectl/genericclioptions/printers/sourcechecker_test.go
+0
-0
typesetter.go
pkg/kubectl/genericclioptions/printers/typesetter.go
+0
-0
BUILD
pkg/printers/BUILD
+8
-28
customcolumn.go
pkg/printers/customcolumn.go
+3
-2
customcolumn_flags.go
pkg/printers/customcolumn_flags.go
+4
-4
customcolumn_flags_test.go
pkg/printers/customcolumn_flags_test.go
+5
-5
customcolumn_test.go
pkg/printers/customcolumn_test.go
+18
-19
BUILD
pkg/printers/internalversion/BUILD
+2
-0
printers_test.go
pkg/printers/internalversion/printers_test.go
+8
-5
jsonpath.go
pkg/printers/jsonpath.go
+3
-2
jsonpath_flags.go
pkg/printers/jsonpath_flags.go
+4
-2
jsonpath_flags_test.go
pkg/printers/jsonpath_flags_test.go
+7
-7
kube_template_flags.go
pkg/printers/kube_template_flags.go
+6
-2
template.go
pkg/printers/template.go
+3
-2
template_flags.go
pkg/printers/template_flags.go
+4
-2
template_flags_test.go
pkg/printers/template_flags_test.go
+7
-7
No files found.
hack/.golint_failures
View file @
d1603c95
...
...
@@ -152,6 +152,7 @@ pkg/kubectl/cmd/util/editor
pkg/kubectl/cmd/util/jsonmerge
pkg/kubectl/cmd/util/sanity
pkg/kubectl/genericclioptions
pkg/kubectl/genericclioptions/printers
pkg/kubectl/genericclioptions/resource
pkg/kubectl/metricsutil
pkg/kubectl/util
...
...
@@ -222,6 +223,7 @@ pkg/kubemark
pkg/master
pkg/master/controller/crdregistration
pkg/master/tunneler
pkg/printers
pkg/printers/internalversion
pkg/printers/storage
pkg/probe
...
...
hack/import-restrictions.yaml
View file @
d1603c95
...
...
@@ -23,6 +23,7 @@
-
k8s.io/client-go
# TODO this one should be tightened. We depend on it for testing, but we should instead create our own scheme
-
k8s.io/api/core/v1
-
k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers
-
baseImportPath
:
"
./vendor/k8s.io/apimachinery/"
allowedImports
:
...
...
pkg/kubectl/cmd/BUILD
View file @
d1603c95
...
...
@@ -79,6 +79,7 @@ go_library(
"//pkg/kubectl/cmd/util/openapi:go_default_library",
"//pkg/kubectl/explain:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/metricsutil:go_default_library",
"//pkg/kubectl/plugins:go_default_library",
...
...
@@ -201,6 +202,7 @@ go_test(
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/cmd/util/openapi:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/plugins:go_default_library",
"//pkg/kubectl/polymorphichelpers:go_default_library",
...
...
pkg/kubectl/cmd/annotate.go
View file @
d1603c95
...
...
@@ -35,15 +35,15 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
// AnnotateOptions have the data required to perform the annotate operation
type
AnnotateOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
PrintObj
printers
.
ResourcePrinterFunc
// Filename options
...
...
@@ -111,7 +111,7 @@ var (
func
NewAnnotateOptions
(
ioStreams
genericclioptions
.
IOStreams
)
*
AnnotateOptions
{
return
&
AnnotateOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"annotated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"annotated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
...
...
pkg/kubectl/cmd/apply.go
View file @
d1603c95
...
...
@@ -49,19 +49,19 @@ import (
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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/kubectl/validation"
"k8s.io/kubernetes/pkg/printers"
)
type
ApplyOptions
struct
{
RecordFlags
*
genericclioptions
.
RecordFlags
Recorder
genericclioptions
.
Recorder
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
DeleteFlags
*
DeleteFlags
DeleteOptions
*
DeleteOptions
...
...
@@ -131,7 +131,7 @@ func NewApplyOptions(ioStreams genericclioptions.IOStreams) *ApplyOptions {
return
&
ApplyOptions
{
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
DeleteFlags
:
NewDeleteFlags
(
"that contains the configuration to apply"
),
PrintFlags
:
printer
s
.
NewPrintFlags
(
"created"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"created"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
Overwrite
:
true
,
OpenApiPatch
:
true
,
...
...
@@ -191,17 +191,13 @@ func (o *ApplyOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) error {
o
.
DryRun
=
cmdutil
.
GetDryRunFlag
(
cmd
)
// allow for a success message operation to be specified at print time
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
if
o
.
DryRun
{
o
.
PrintFlags
.
Complete
(
"%s (dry run)"
)
}
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
var
err
error
...
...
@@ -592,7 +588,7 @@ type pruner struct {
scaler
scaleclient
.
ScalesGetter
toPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
toPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
out
io
.
Writer
}
...
...
pkg/kubectl/cmd/apply_set_last_applied.go
View file @
d1603c95
...
...
@@ -31,16 +31,16 @@ import (
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
type
SetLastAppliedOptions
struct
{
CreateAnnotation
bool
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
PrintObj
printers
.
ResourcePrinterFunc
FilenameOptions
resource
.
FilenameOptions
...
...
@@ -83,7 +83,7 @@ var (
func
NewSetLastAppliedOptions
(
ioStreams
genericclioptions
.
IOStreams
)
*
SetLastAppliedOptions
{
return
&
SetLastAppliedOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"configured"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"configured"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
}
}
...
...
pkg/kubectl/cmd/auth/BUILD
View file @
d1603c95
...
...
@@ -25,9 +25,9 @@ go_library(
"//pkg/kubectl/cmd/templates:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/registry/rbac/reconciliation:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
...
...
pkg/kubectl/cmd/auth/reconcile.go
View file @
d1603c95
...
...
@@ -29,16 +29,16 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
"k8s.io/kubernetes/pkg/registry/rbac/reconciliation"
)
// ReconcileOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of
// referencing the cmd.Flags()
type
ReconcileOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
FilenameOptions
*
resource
.
FilenameOptions
Visitor
resource
.
Visitor
...
...
@@ -64,7 +64,7 @@ var (
func
NewReconcileOptions
(
ioStreams
genericclioptions
.
IOStreams
)
*
ReconcileOptions
{
return
&
ReconcileOptions
{
FilenameOptions
:
&
resource
.
FilenameOptions
{},
PrintFlags
:
printer
s
.
NewPrintFlags
(
"reconciled"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"reconciled"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
}
}
...
...
pkg/kubectl/cmd/autoscale.go
View file @
d1603c95
...
...
@@ -31,10 +31,10 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
var
(
...
...
@@ -58,8 +58,8 @@ type AutoscaleOptions struct {
RecordFlags
*
genericclioptions
.
RecordFlags
Recorder
genericclioptions
.
Recorder
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
Name
string
Generator
string
...
...
@@ -83,7 +83,7 @@ type AutoscaleOptions struct {
func
NewAutoscaleOptions
(
ioStreams
genericclioptions
.
IOStreams
)
*
AutoscaleOptions
{
return
&
AutoscaleOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"autoscaled"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"autoscaled"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
FilenameOptions
:
&
resource
.
FilenameOptions
{},
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
...
...
@@ -170,18 +170,13 @@ func (o *AutoscaleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
return
err
}
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
if
o
.
dryRun
{
o
.
PrintFlags
.
Complete
(
"%s (dry run)"
)
}
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
return
nil
...
...
pkg/kubectl/cmd/certificates.go
View file @
d1603c95
...
...
@@ -29,10 +29,10 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
"github.com/spf13/cobra"
)
...
...
@@ -57,7 +57,7 @@ func NewCmdCertificate(f cmdutil.Factory, ioStreams genericclioptions.IOStreams)
type
CertificateOptions
struct
{
resource
.
FilenameOptions
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
PrintObj
printers
.
ResourcePrinterFunc
csrNames
[]
string
...
...
@@ -100,7 +100,7 @@ func (o *CertificateOptions) Validate() error {
func
NewCmdCertificateApprove
(
f
cmdutil
.
Factory
,
ioStreams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
options
:=
CertificateOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"approved"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"approved"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
}
cmd
:=
&
cobra
.
Command
{
...
...
@@ -157,7 +157,7 @@ func (o *CertificateOptions) RunCertificateApprove(force bool) error {
func
NewCmdCertificateDeny
(
f
cmdutil
.
Factory
,
ioStreams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
options
:=
CertificateOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"denied"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"denied"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
}
cmd
:=
&
cobra
.
Command
{
...
...
pkg/kubectl/cmd/clusterinfo_dump.go
View file @
d1603c95
...
...
@@ -31,14 +31,14 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/polymorphichelpers"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
type
ClusterInfoDumpOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
PrintObj
printers
.
ResourcePrinterFunc
OutputDir
string
...
...
@@ -57,7 +57,7 @@ type ClusterInfoDumpOptions struct {
// NewCmdCreateSecret groups subcommands to create various types of secrets
func
NewCmdClusterInfoDump
(
f
cmdutil
.
Factory
,
ioStreams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
&
ClusterInfoDumpOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
}
...
...
pkg/kubectl/cmd/cmd_printing_test.go
View file @
d1603c95
...
...
@@ -24,6 +24,8 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
genericprinters
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
...
...
@@ -81,7 +83,7 @@ func TestIllegalPackageSourceCheckerThroughPrintFlags(t *testing.T) {
}
for
_
,
tc
:=
range
testCases
{
printFlags
:=
printer
s
.
NewPrintFlags
(
"succeeded"
)
.
WithTypeSetter
(
scheme
.
Scheme
)
printFlags
:=
genericclioption
s
.
NewPrintFlags
(
"succeeded"
)
.
WithTypeSetter
(
scheme
.
Scheme
)
printFlags
.
OutputFormat
=
&
tc
.
output
printer
,
err
:=
printFlags
.
ToPrinter
()
...
...
@@ -97,7 +99,7 @@ func TestIllegalPackageSourceCheckerThroughPrintFlags(t *testing.T) {
t
.
Fatalf
(
"unexpected error %v"
,
err
)
}
if
!
printers
.
IsInternalObjectError
(
err
)
{
if
!
generic
printers
.
IsInternalObjectError
(
err
)
{
t
.
Fatalf
(
"unexpected error - expecting internal object printer error, got %q"
,
err
)
}
continue
...
...
@@ -143,13 +145,13 @@ func TestIllegalPackageSourceCheckerDirectlyThroughPrinters(t *testing.T) {
{
name
:
"json printer: object containing package path beginning with forbidden prefix is rejected"
,
expectInternalObjErr
:
true
,
printer
:
&
printers
.
JSONPrinter
{},
printer
:
&
generic
printers
.
JSONPrinter
{},
obj
:
internalPod
(),
},
{
name
:
"yaml printer: object containing package path beginning with forbidden prefix is rejected"
,
expectInternalObjErr
:
true
,
printer
:
&
printers
.
YAMLPrinter
{},
printer
:
&
generic
printers
.
YAMLPrinter
{},
obj
:
internalPod
(),
},
{
...
...
@@ -187,7 +189,7 @@ func TestIllegalPackageSourceCheckerDirectlyThroughPrinters(t *testing.T) {
t
.
Fatalf
(
"unexpected error %v"
,
err
)
}
if
!
printers
.
IsInternalObjectError
(
err
)
{
if
!
generic
printers
.
IsInternalObjectError
(
err
)
{
t
.
Fatalf
(
"unexpected error - expecting internal object printer error, got %q"
,
err
)
}
continue
...
...
pkg/kubectl/cmd/config/BUILD
View file @
d1603c95
...
...
@@ -33,6 +33,7 @@ go_library(
"//pkg/kubectl/cmd/templates:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library",
"//pkg/printers:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
...
...
pkg/kubectl/cmd/config/flags.go
View file @
d1603c95
...
...
@@ -20,6 +20,8 @@ import (
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
genericprinters
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
"k8s.io/kubernetes/pkg/printers"
)
...
...
@@ -27,11 +29,11 @@ import (
// used across all config commands, and provides a method
// of retrieving a known printer based on flag values provided.
type
kubectlConfigPrintFlags
struct
{
JSONYamlPrintFlags
*
printer
s
.
JSONYamlPrintFlags
NamePrintFlags
*
printer
s
.
NamePrintFlags
JSONYamlPrintFlags
*
genericclioption
s
.
JSONYamlPrintFlags
NamePrintFlags
*
genericclioption
s
.
NamePrintFlags
TemplateFlags
*
printers
.
KubeTemplatePrintFlags
TypeSetter
*
printers
.
TypeSetterPrinter
TypeSetter
*
generic
printers
.
TypeSetterPrinter
OutputFormat
*
string
}
...
...
@@ -46,19 +48,19 @@ func (f *kubectlConfigPrintFlags) ToPrinter() (printers.ResourcePrinter, error)
outputFormat
=
*
f
.
OutputFormat
}
if
p
,
err
:=
f
.
JSONYamlPrintFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
JSONYamlPrintFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
f
.
TypeSetter
.
WrapToPrinter
(
p
,
err
)
}
if
p
,
err
:=
f
.
NamePrintFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
NamePrintFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
f
.
TypeSetter
.
WrapToPrinter
(
p
,
err
)
}
if
p
,
err
:=
f
.
TemplateFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
TemplateFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
f
.
TypeSetter
.
WrapToPrinter
(
p
,
err
)
}
return
nil
,
printer
s
.
NoCompatiblePrinterError
{
Options
:
f
}
return
nil
,
genericclioption
s
.
NoCompatiblePrinterError
{
Options
:
f
}
}
func
(
f
*
kubectlConfigPrintFlags
)
AddFlags
(
cmd
*
cobra
.
Command
)
{
...
...
@@ -83,10 +85,10 @@ func newKubeConfigPrintFlags(scheme runtime.ObjectTyper) *kubectlConfigPrintFlag
return
&
kubectlConfigPrintFlags
{
OutputFormat
:
&
outputFormat
,
JSONYamlPrintFlags
:
printer
s
.
NewJSONYamlPrintFlags
(),
NamePrintFlags
:
printer
s
.
NewNamePrintFlags
(
""
),
JSONYamlPrintFlags
:
genericclioption
s
.
NewJSONYamlPrintFlags
(),
NamePrintFlags
:
genericclioption
s
.
NewNamePrintFlags
(
""
),
TemplateFlags
:
printers
.
NewKubeTemplatePrintFlags
(),
TypeSetter
:
printers
.
NewTypeSetter
(
scheme
),
TypeSetter
:
generic
printers
.
NewTypeSetter
(
scheme
),
}
}
pkg/kubectl/cmd/convert.go
View file @
d1603c95
...
...
@@ -27,9 +27,9 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
"github.com/golang/glog"
"github.com/spf13/cobra"
...
...
@@ -89,7 +89,7 @@ func NewCmdConvert(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *co
// ConvertOptions have the data required to perform the convert operation
type
ConvertOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
PrintObj
printers
.
ResourcePrinterFunc
resource
.
FilenameOptions
...
...
@@ -103,7 +103,7 @@ type ConvertOptions struct {
func
NewConvertOptions
(
ioStreams
genericclioptions
.
IOStreams
)
*
ConvertOptions
{
return
&
ConvertOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"converted"
)
.
WithTypeSetter
(
scheme
.
Scheme
)
.
WithDefaultOutput
(
"yaml"
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"converted"
)
.
WithTypeSetter
(
scheme
.
Scheme
)
.
WithDefaultOutput
(
"yaml"
),
local
:
true
,
IOStreams
:
ioStreams
,
}
...
...
pkg/kubectl/cmd/create/BUILD
View file @
d1603c95
...
...
@@ -29,6 +29,7 @@ go_library(
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/cmd/util/editor:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library",
...
...
pkg/kubectl/cmd/create/flags.go
View file @
d1603c95
...
...
@@ -18,8 +18,10 @@ package create
import
(
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/apimachinery/pkg/runtime"
genericprinters
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
"k8s.io/kubernetes/pkg/printers"
)
...
...
@@ -27,11 +29,11 @@ import (
// used across all create commands, and provides a method
// of retrieving a known printer based on flag values provided.
type
PrintFlags
struct
{
JSONYamlPrintFlags
*
printer
s
.
JSONYamlPrintFlags
NamePrintFlags
*
printer
s
.
NamePrintFlags
JSONYamlPrintFlags
*
genericclioption
s
.
JSONYamlPrintFlags
NamePrintFlags
*
genericclioption
s
.
NamePrintFlags
TemplateFlags
*
printers
.
KubeTemplatePrintFlags
TypeSetter
*
printers
.
TypeSetterPrinter
TypeSetter
*
generic
printers
.
TypeSetterPrinter
OutputFormat
*
string
}
...
...
@@ -46,19 +48,19 @@ func (f *PrintFlags) ToPrinter() (printers.ResourcePrinter, error) {
outputFormat
=
*
f
.
OutputFormat
}
if
p
,
err
:=
f
.
JSONYamlPrintFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
JSONYamlPrintFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
f
.
TypeSetter
.
WrapToPrinter
(
p
,
err
)
}
if
p
,
err
:=
f
.
NamePrintFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
NamePrintFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
f
.
TypeSetter
.
WrapToPrinter
(
p
,
err
)
}
if
p
,
err
:=
f
.
TemplateFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
TemplateFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
f
.
TypeSetter
.
WrapToPrinter
(
p
,
err
)
}
return
nil
,
printer
s
.
NoCompatiblePrinterError
{
Options
:
f
}
return
nil
,
genericclioption
s
.
NoCompatiblePrinterError
{
Options
:
f
}
}
func
(
f
*
PrintFlags
)
AddFlags
(
cmd
*
cobra
.
Command
)
{
...
...
@@ -77,10 +79,10 @@ func NewPrintFlags(operation string, scheme runtime.ObjectTyper) *PrintFlags {
return
&
PrintFlags
{
OutputFormat
:
&
outputFormat
,
JSONYamlPrintFlags
:
printer
s
.
NewJSONYamlPrintFlags
(),
NamePrintFlags
:
printer
s
.
NewNamePrintFlags
(
operation
),
JSONYamlPrintFlags
:
genericclioption
s
.
NewJSONYamlPrintFlags
(),
NamePrintFlags
:
genericclioption
s
.
NewNamePrintFlags
(
operation
),
TemplateFlags
:
printers
.
NewKubeTemplatePrintFlags
(),
TypeSetter
:
printers
.
NewTypeSetter
(
scheme
),
TypeSetter
:
generic
printers
.
NewTypeSetter
(
scheme
),
}
}
pkg/kubectl/cmd/drain.go
View file @
d1603c95
...
...
@@ -40,21 +40,21 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/kubernetes"
restclient
"k8s.io/client-go/rest"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl"
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
type
DrainOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinterFunc
,
error
)
Namespace
string
...
...
@@ -108,7 +108,7 @@ var (
func
NewCmdCordon
(
f
cmdutil
.
Factory
,
ioStreams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
options
:=
&
DrainOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"cordoned"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"cordoned"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
}
...
...
@@ -140,7 +140,7 @@ var (
func
NewCmdUncordon
(
f
cmdutil
.
Factory
,
ioStreams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
options
:=
&
DrainOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"uncordoned"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"uncordoned"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
}
...
...
@@ -196,7 +196,7 @@ var (
func
NewDrainOptions
(
f
cmdutil
.
Factory
,
ioStreams
genericclioptions
.
IOStreams
)
*
DrainOptions
{
return
&
DrainOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"drained"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"drained"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
backOff
:
clockwork
.
NewRealClock
(),
...
...
@@ -279,6 +279,7 @@ func (o *DrainOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
}
...
...
@@ -319,7 +320,7 @@ func (o *DrainOptions) RunDrain() error {
return
err
}
print
er
,
err
:=
o
.
ToPrinter
(
"drained"
)
print
Obj
,
err
:=
o
.
ToPrinter
(
"drained"
)
if
err
!=
nil
{
return
err
}
...
...
@@ -334,7 +335,7 @@ func (o *DrainOptions) RunDrain() error {
}
if
err
==
nil
||
o
.
DryRun
{
drainedNodes
.
Insert
(
info
.
Name
)
print
er
.
Print
Obj
(
info
.
Object
,
o
.
Out
)
printObj
(
info
.
Object
,
o
.
Out
)
}
else
{
fmt
.
Fprintf
(
o
.
ErrOut
,
"error: unable to drain node %q, aborting command...
\n\n
"
,
info
.
Name
)
remainingNodes
:=
[]
string
{}
...
...
@@ -650,7 +651,7 @@ func (o *DrainOptions) waitForDelete(pods []corev1.Pod, interval, timeout time.D
}
else
{
verbStr
=
"deleted"
}
print
er
,
err
:=
o
.
ToPrinter
(
verbStr
)
print
Obj
,
err
:=
o
.
ToPrinter
(
verbStr
)
if
err
!=
nil
{
return
pods
,
err
}
...
...
@@ -660,7 +661,7 @@ func (o *DrainOptions) waitForDelete(pods []corev1.Pod, interval, timeout time.D
for
i
,
pod
:=
range
pods
{
p
,
err
:=
getPodFn
(
pod
.
Namespace
,
pod
.
Name
)
if
apierrors
.
IsNotFound
(
err
)
||
(
p
!=
nil
&&
p
.
ObjectMeta
.
UID
!=
pod
.
ObjectMeta
.
UID
)
{
print
er
.
Print
Obj
(
&
pod
,
o
.
Out
)
printObj
(
&
pod
,
o
.
Out
)
continue
}
else
if
err
!=
nil
{
return
false
,
err
...
...
@@ -736,12 +737,12 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error {
}
unsched
:=
node
.
Spec
.
Unschedulable
if
unsched
==
desired
{
print
er
,
err
:=
o
.
ToPrinter
(
already
(
desired
))
print
Obj
,
err
:=
o
.
ToPrinter
(
already
(
desired
))
if
err
!=
nil
{
fmt
.
Printf
(
"error: %v"
,
err
)
continue
}
print
er
.
Print
Obj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
nodeInfo
.
Object
,
nodeInfo
.
Mapping
),
o
.
Out
)
printObj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
nodeInfo
.
Object
,
nodeInfo
.
Mapping
),
o
.
Out
)
}
else
{
if
!
o
.
DryRun
{
helper
:=
resource
.
NewHelper
(
o
.
restClient
,
nodeInfo
.
Mapping
)
...
...
@@ -762,20 +763,20 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error {
continue
}
}
print
er
,
err
:=
o
.
ToPrinter
(
changed
(
desired
))
print
Obj
,
err
:=
o
.
ToPrinter
(
changed
(
desired
))
if
err
!=
nil
{
fmt
.
Fprintf
(
o
.
ErrOut
,
"%v"
,
err
)
continue
}
print
er
.
Print
Obj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
nodeInfo
.
Object
,
nodeInfo
.
Mapping
),
o
.
Out
)
printObj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
nodeInfo
.
Object
,
nodeInfo
.
Mapping
),
o
.
Out
)
}
}
else
{
print
er
,
err
:=
o
.
ToPrinter
(
"skipped"
)
print
Obj
,
err
:=
o
.
ToPrinter
(
"skipped"
)
if
err
!=
nil
{
fmt
.
Fprintf
(
o
.
ErrOut
,
"%v"
,
err
)
continue
}
print
er
.
Print
Obj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
nodeInfo
.
Object
,
nodeInfo
.
Mapping
),
o
.
Out
)
printObj
(
cmdutil
.
AsDefaultVersionedOrOriginal
(
nodeInfo
.
Object
,
nodeInfo
.
Mapping
),
o
.
Out
)
}
}
...
...
pkg/kubectl/cmd/drain_test.go
View file @
d1603c95
...
...
@@ -50,8 +50,8 @@ import (
"k8s.io/kubernetes/pkg/apis/extensions"
cmdtesting
"k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
const
(
...
...
@@ -834,7 +834,7 @@ func TestDeletePods(t *testing.T) {
defer
tf
.
Cleanup
()
o
:=
DrainOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"drained"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"drained"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
}
o
.
Out
=
os
.
Stdout
...
...
pkg/kubectl/cmd/expose.go
View file @
d1603c95
...
...
@@ -35,10 +35,10 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
var
(
...
...
@@ -84,7 +84,7 @@ var (
type
ExposeServiceOptions
struct
{
FilenameOptions
resource
.
FilenameOptions
RecordFlags
*
genericclioptions
.
RecordFlags
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
PrintObj
printers
.
ResourcePrinterFunc
DryRun
bool
...
...
@@ -111,7 +111,7 @@ type ExposeServiceOptions struct {
func
NewExposeServiceOptions
(
ioStreams
genericclioptions
.
IOStreams
)
*
ExposeServiceOptions
{
return
&
ExposeServiceOptions
{
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
PrintFlags
:
printer
s
.
NewPrintFlags
(
"exposed"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"exposed"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
Recorder
:
genericclioptions
.
NoopRecorder
{},
IOStreams
:
ioStreams
,
...
...
pkg/kubectl/cmd/get/BUILD
View file @
d1603c95
...
...
@@ -77,7 +77,6 @@ go_test(
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/printers:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
...
...
pkg/kubectl/cmd/get/get.go
View file @
d1603c95
...
...
@@ -133,7 +133,7 @@ const (
// NewGetOptions returns a GetOptions with default chunk size 500.
func
NewGetOptions
(
parent
string
,
streams
genericclioptions
.
IOStreams
)
*
GetOptions
{
return
&
GetOptions
{
PrintFlags
:
NewGetPrintFlags
(
legacyscheme
.
Scheme
),
PrintFlags
:
NewGetPrintFlags
(),
CmdParent
:
parent
,
IOStreams
:
streams
,
...
...
pkg/kubectl/cmd/get/get_flags.go
View file @
d1603c95
...
...
@@ -22,17 +22,17 @@ import (
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/printers"
)
// PrintFlags composes common printer flag structs
// used in the Get command.
type
PrintFlags
struct
{
JSONYamlPrintFlags
*
printer
s
.
JSONYamlPrintFlags
NamePrintFlags
*
printer
s
.
NamePrintFlags
JSONYamlPrintFlags
*
genericclioption
s
.
JSONYamlPrintFlags
NamePrintFlags
*
genericclioption
s
.
NamePrintFlags
TemplateFlags
*
printers
.
KubeTemplatePrintFlags
CustomColumnsFlags
*
printers
.
CustomColumnsPrintFlags
HumanReadableFlags
*
HumanPrintFlags
...
...
@@ -107,27 +107,27 @@ func (f *PrintFlags) ToPrinter() (printers.ResourcePrinter, error) {
f
.
CustomColumnsFlags
.
TemplateArgument
=
*
f
.
TemplateFlags
.
TemplateArgument
}
if
p
,
err
:=
f
.
JSONYamlPrintFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
JSONYamlPrintFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
p
,
err
}
if
p
,
err
:=
f
.
HumanReadableFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
HumanReadableFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
p
,
err
}
if
p
,
err
:=
f
.
TemplateFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
TemplateFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
p
,
err
}
if
p
,
err
:=
f
.
CustomColumnsFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
CustomColumnsFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
p
,
err
}
if
p
,
err
:=
f
.
NamePrintFlags
.
ToPrinter
(
outputFormat
);
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
NamePrintFlags
.
ToPrinter
(
outputFormat
);
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
return
p
,
err
}
return
nil
,
printer
s
.
NoCompatiblePrinterError
{
Options
:
f
}
return
nil
,
genericclioption
s
.
NoCompatiblePrinterError
{
Options
:
f
}
}
// AddFlags receives a *cobra.Command reference and binds
...
...
@@ -153,7 +153,7 @@ func (f *PrintFlags) AddFlags(cmd *cobra.Command) {
// NewGetPrintFlags returns flags associated with humanreadable,
// template, and "name" printing, with default values set.
func
NewGetPrintFlags
(
scheme
runtime
.
ObjectConvertor
)
*
PrintFlags
{
func
NewGetPrintFlags
()
*
PrintFlags
{
outputFormat
:=
""
noHeaders
:=
false
...
...
@@ -161,9 +161,10 @@ func NewGetPrintFlags(scheme runtime.ObjectConvertor) *PrintFlags {
OutputFormat
:
&
outputFormat
,
NoHeaders
:
&
noHeaders
,
JSONYamlPrintFlags
:
printer
s
.
NewJSONYamlPrintFlags
(),
NamePrintFlags
:
printer
s
.
NewNamePrintFlags
(
""
),
JSONYamlPrintFlags
:
genericclioption
s
.
NewJSONYamlPrintFlags
(),
NamePrintFlags
:
genericclioption
s
.
NewNamePrintFlags
(
""
),
TemplateFlags
:
printers
.
NewKubeTemplatePrintFlags
(),
HumanReadableFlags
:
NewHumanPrintFlags
(),
CustomColumnsFlags
:
printers
.
NewCustomColumnsPrintFlags
(),
}
...
...
pkg/kubectl/cmd/get/humanreadable_flags.go
View file @
d1603c95
...
...
@@ -18,6 +18,7 @@ package get
import
(
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/kubernetes/pkg/kubectl/scheme"
...
...
@@ -63,7 +64,7 @@ func (f *HumanPrintFlags) EnsureWithNamespace() error {
// handling human-readable output.
func
(
f
*
HumanPrintFlags
)
ToPrinter
(
outputFormat
string
)
(
printers
.
ResourcePrinter
,
error
)
{
if
len
(
outputFormat
)
>
0
&&
outputFormat
!=
"wide"
{
return
nil
,
printer
s
.
NoCompatiblePrinterError
{
Options
:
f
}
return
nil
,
genericclioption
s
.
NoCompatiblePrinterError
{
Options
:
f
}
}
decoder
:=
scheme
.
Codecs
.
UniversalDecoder
()
...
...
pkg/kubectl/cmd/get/humanreadable_flags_test.go
View file @
d1603c95
...
...
@@ -25,7 +25,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/
printer
s"
"k8s.io/kubernetes/pkg/
kubectl/genericclioption
s"
)
func
TestHumanReadablePrinterSupportsExpectedOptions
(
t
*
testing
.
T
)
{
...
...
@@ -119,12 +119,12 @@ func TestHumanReadablePrinterSupportsExpectedOptions(t *testing.T) {
p
,
err
:=
printFlags
.
ToPrinter
(
tc
.
outputFormat
)
if
tc
.
expectNoMatch
{
if
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected no printer matches for output format %q"
,
tc
.
outputFormat
)
}
return
}
if
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected to match template printer for output format %q"
,
tc
.
outputFormat
)
}
...
...
pkg/kubectl/cmd/label.go
View file @
d1603c95
...
...
@@ -37,10 +37,10 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
// LabelOptions have the data required to perform the label operation
...
...
@@ -49,8 +49,8 @@ type LabelOptions struct {
resource
.
FilenameOptions
RecordFlags
*
genericclioptions
.
RecordFlags
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
// Common user flags
overwrite
bool
...
...
@@ -115,7 +115,7 @@ func NewLabelOptions(ioStreams genericclioptions.IOStreams) *LabelOptions {
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
PrintFlags
:
printer
s
.
NewPrintFlags
(
"labeled"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"labeled"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
}
...
...
@@ -168,17 +168,13 @@ func (o *LabelOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
o
.
outputFormat
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
o
.
dryrun
=
cmdutil
.
GetDryRunFlag
(
cmd
)
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
if
o
.
dryrun
{
o
.
PrintFlags
.
Complete
(
"%s (dry run)"
)
}
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
resources
,
labelArgs
,
err
:=
cmdutil
.
GetResourcesAndPairs
(
args
,
"label"
)
...
...
pkg/kubectl/cmd/patch.go
View file @
d1603c95
...
...
@@ -36,10 +36,10 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
var
patchTypes
=
map
[
string
]
types
.
PatchType
{
"json"
:
types
.
JSONPatchType
,
"merge"
:
types
.
MergePatchType
,
"strategic"
:
types
.
StrategicMergePatchType
}
...
...
@@ -50,8 +50,8 @@ type PatchOptions struct {
resource
.
FilenameOptions
RecordFlags
*
genericclioptions
.
RecordFlags
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
Recorder
genericclioptions
.
Recorder
Local
bool
...
...
@@ -98,7 +98,7 @@ func NewPatchOptions(ioStreams genericclioptions.IOStreams) *PatchOptions {
return
&
PatchOptions
{
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
PrintFlags
:
printer
s
.
NewPrintFlags
(
"patched"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"patched"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
ioStreams
,
}
}
...
...
@@ -143,17 +143,13 @@ func (o *PatchOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
o
.
outputFormat
=
cmdutil
.
GetFlagString
(
cmd
,
"output"
)
o
.
dryRun
=
cmdutil
.
GetFlagBool
(
cmd
,
"dry-run"
)
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
if
o
.
dryRun
{
o
.
PrintFlags
.
Complete
(
"%s (dry run)"
)
}
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
o
.
namespace
,
o
.
enforceNamespace
,
err
=
f
.
DefaultNamespace
()
...
...
pkg/kubectl/cmd/replace.go
View file @
d1603c95
...
...
@@ -36,7 +36,6 @@ import (
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/kubectl/validation"
"k8s.io/kubernetes/pkg/printers"
)
var
(
...
...
@@ -65,7 +64,7 @@ var (
)
type
ReplaceOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
DeleteFlags
*
DeleteFlags
RecordFlags
*
genericclioptions
.
RecordFlags
...
...
@@ -94,9 +93,9 @@ func NewReplaceOptions(streams genericclioptions.IOStreams) *ReplaceOptions {
return
&
ReplaceOptions
{
// TODO(juanvallejo): figure out why we only support the "name" outputFormat in this command
// we only support "-o name" for this command, so only register the name printer
PrintFlags
:
&
printer
s
.
PrintFlags
{
PrintFlags
:
&
genericclioption
s
.
PrintFlags
{
OutputFormat
:
&
outputFormat
,
NamePrintFlags
:
printer
s
.
NewNamePrintFlags
(
"replaced"
),
NamePrintFlags
:
genericclioption
s
.
NewNamePrintFlags
(
"replaced"
),
},
DeleteFlags
:
NewDeleteFlags
(
"to use to replace the resource."
),
...
...
pkg/kubectl/cmd/rollingupdate.go
View file @
d1603c95
...
...
@@ -37,12 +37,12 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/kubectl/validation"
"k8s.io/kubernetes/pkg/printers"
)
var
(
...
...
@@ -107,15 +107,15 @@ type RollingUpdateOptions struct {
FindNewName
func
(
*
api
.
ReplicationController
)
string
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
genericclioptions
.
IOStreams
}
func
NewRollingUpdateOptions
(
streams
genericclioptions
.
IOStreams
)
*
RollingUpdateOptions
{
return
&
RollingUpdateOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"rolling updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"rolling updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
FilenameOptions
:
&
resource
.
FilenameOptions
{},
DeploymentKey
:
"deployment"
,
Timeout
:
timeout
,
...
...
@@ -226,18 +226,13 @@ func (o *RollingUpdateOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, a
o
.
Builder
=
f
.
NewBuilder
()
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
if
o
.
DryRun
{
o
.
PrintFlags
.
Complete
(
"%s (dry run)"
)
}
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
return
nil
}
...
...
pkg/kubectl/cmd/rollout/BUILD
View file @
d1603c95
...
...
@@ -25,11 +25,11 @@ go_library(
"//pkg/kubectl/cmd/templates:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/polymorphichelpers:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/util/interrupt:go_default_library",
"//vendor/github.com/renstrom/dedent:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
...
...
pkg/kubectl/cmd/rollout/rollout_pause.go
View file @
d1603c95
...
...
@@ -28,18 +28,18 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
// PauseConfig is the start of the data required to perform the operation. As new fields are added, add them here instead of
// referencing the cmd.Flags()
type
PauseConfig
struct
{
resource
.
FilenameOptions
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
Pauser
func
(
info
*
resource
.
Info
)
([]
byte
,
error
)
Infos
[]
*
resource
.
Info
...
...
@@ -64,7 +64,7 @@ var (
func
NewCmdRolloutPause
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
&
PauseConfig
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"paused"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"paused"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
streams
,
}
...
...
@@ -122,14 +122,9 @@ func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, args
return
err
}
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
o
.
Infos
,
err
=
r
.
Infos
()
...
...
pkg/kubectl/cmd/rollout/rollout_resume.go
View file @
d1603c95
...
...
@@ -28,18 +28,18 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
// ResumeConfig is the start of the data required to perform the operation. As new fields are added, add them here instead of
// referencing the cmd.Flags()
type
ResumeConfig
struct
{
resource
.
FilenameOptions
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
Resumer
func
(
object
*
resource
.
Info
)
([]
byte
,
error
)
Infos
[]
*
resource
.
Info
...
...
@@ -62,7 +62,7 @@ var (
func
NewCmdRolloutResume
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
o
:=
&
ResumeConfig
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"resumed"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"resumed"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
streams
,
}
...
...
@@ -106,14 +106,9 @@ func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, arg
return
err
}
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
r
:=
f
.
NewBuilder
()
.
...
...
pkg/kubectl/cmd/rollout/rollout_undo.go
View file @
d1603c95
...
...
@@ -26,10 +26,11 @@ import (
"k8s.io/kubernetes/pkg/kubectl"
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
// UndoOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of
...
...
@@ -37,8 +38,8 @@ import (
type
UndoOptions
struct
{
resource
.
FilenameOptions
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
Rollbackers
[]
kubectl
.
Rollbacker
Infos
[]
*
resource
.
Info
...
...
@@ -65,7 +66,7 @@ var (
func
NewCmdRolloutUndo
(
f
cmdutil
.
Factory
,
out
io
.
Writer
)
*
cobra
.
Command
{
o
:=
&
UndoOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithTypeSetter
(
scheme
.
Scheme
),
ToRevision
:
int64
(
0
),
}
...
...
@@ -112,17 +113,12 @@ func (o *UndoOptions) CompleteUndo(f cmdutil.Factory, cmd *cobra.Command, out io
return
err
}
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
if
o
.
DryRun
{
o
.
PrintFlags
.
Complete
(
"%s (dry run)"
)
}
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
r
:=
f
.
NewBuilder
()
.
...
...
pkg/kubectl/cmd/run.go
View file @
d1603c95
...
...
@@ -20,12 +20,11 @@ import (
"fmt"
"io"
"k8s.io/client-go/dynamic"
"k8s.io/kubernetes/pkg/printers"
"github.com/docker/distribution/reference"
"github.com/spf13/cobra"
"k8s.io/client-go/dynamic"
"github.com/golang/glog"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
...
...
@@ -98,7 +97,7 @@ type RunObject struct {
}
type
RunOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
DeleteFlags
*
DeleteFlags
DeleteOptions
*
DeleteOptions
RecordFlags
*
genericclioptions
.
RecordFlags
...
...
@@ -127,7 +126,7 @@ type RunOptions struct {
func
NewRunOptions
(
streams
genericclioptions
.
IOStreams
)
*
RunOptions
{
return
&
RunOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"created"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"created"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
DeleteFlags
:
NewDeleteFlags
(
"to use to replace the resource."
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
...
...
pkg/kubectl/cmd/run_test.go
View file @
d1603c95
...
...
@@ -42,7 +42,6 @@ import (
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
// This init should be removed after switching this command and its tests to user external types.
...
...
@@ -198,7 +197,7 @@ func TestRunArgsFollowDashRules(t *testing.T) {
cmd
.
Flags
()
.
Set
(
"image"
,
"nginx"
)
cmd
.
Flags
()
.
Set
(
"generator"
,
"run/v1"
)
printFlags
:=
printer
s
.
NewPrintFlags
(
"created"
)
.
WithTypeSetter
(
scheme
.
Scheme
)
printFlags
:=
genericclioption
s
.
NewPrintFlags
(
"created"
)
.
WithTypeSetter
(
scheme
.
Scheme
)
printer
,
err
:=
printFlags
.
ToPrinter
()
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
...
...
@@ -366,7 +365,7 @@ func TestGenerateService(t *testing.T) {
}),
}
printFlags
:=
printer
s
.
NewPrintFlags
(
"created"
)
.
WithTypeSetter
(
scheme
.
Scheme
)
printFlags
:=
genericclioption
s
.
NewPrintFlags
(
"created"
)
.
WithTypeSetter
(
scheme
.
Scheme
)
printer
,
err
:=
printFlags
.
ToPrinter
()
if
err
!=
nil
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
...
...
pkg/kubectl/cmd/scale.go
View file @
d1603c95
...
...
@@ -33,9 +33,9 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
var
(
...
...
@@ -68,7 +68,7 @@ var (
type
ScaleOptions
struct
{
FilenameOptions
resource
.
FilenameOptions
RecordFlags
*
genericclioptions
.
RecordFlags
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
PrintObj
printers
.
ResourcePrinterFunc
Selector
string
...
...
@@ -98,9 +98,9 @@ func NewScaleOptions(ioStreams genericclioptions.IOStreams) *ScaleOptions {
return
&
ScaleOptions
{
// TODO(juanvallejo): figure out why we only support the "name" outputFormat in this command
// we only support "-o name" for this command, so only register the name printer
PrintFlags
:
&
printer
s
.
PrintFlags
{
PrintFlags
:
&
genericclioption
s
.
PrintFlags
{
OutputFormat
:
&
outputFormat
,
NamePrintFlags
:
printer
s
.
NewNamePrintFlags
(
"scaled"
),
NamePrintFlags
:
genericclioption
s
.
NewNamePrintFlags
(
"scaled"
),
},
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
CurrentReplicas
:
-
1
,
...
...
pkg/kubectl/cmd/set/BUILD
View file @
d1603c95
...
...
@@ -25,10 +25,10 @@ go_library(
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/cmd/util/env:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library",
"//pkg/printers:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
...
...
@@ -69,7 +69,6 @@ go_test(
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/printers:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/stretchr/testify/assert:go_default_library",
"//vendor/k8s.io/api/apps/v1:go_default_library",
...
...
pkg/kubectl/cmd/set/set_env.go
View file @
d1603c95
...
...
@@ -34,9 +34,9 @@ import (
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
envutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util/env"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
var
(
...
...
@@ -93,7 +93,7 @@ var (
)
type
EnvOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
resource
.
FilenameOptions
EnvParams
[]
string
...
...
@@ -126,7 +126,7 @@ type EnvOptions struct {
// pod templates are selected by default and allowing environment to be overwritten
func
NewEnvOptions
(
streams
genericclioptions
.
IOStreams
)
*
EnvOptions
{
return
&
EnvOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"env updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"env updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
ContainerSelector
:
"*"
,
Overwrite
:
true
,
...
...
pkg/kubectl/cmd/set/set_env_test.go
View file @
d1603c95
...
...
@@ -42,7 +42,6 @@ import (
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
func
TestSetEnvLocal
(
t
*
testing
.
T
)
{
...
...
@@ -63,7 +62,7 @@ func TestSetEnvLocal(t *testing.T) {
streams
,
_
,
buf
,
bufErr
:=
genericclioptions
.
NewTestIOStreams
()
opts
:=
NewEnvOptions
(
streams
)
opts
.
PrintFlags
=
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
)
opts
.
PrintFlags
=
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
)
opts
.
FilenameOptions
=
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"
},
}
...
...
@@ -101,7 +100,7 @@ func TestSetMultiResourcesEnvLocal(t *testing.T) {
outputFormat
:=
"name"
streams
,
_
,
buf
,
bufErr
:=
genericclioptions
.
NewTestIOStreams
()
opts
:=
NewEnvOptions
(
streams
)
opts
.
PrintFlags
=
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
)
opts
.
PrintFlags
=
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
)
opts
.
FilenameOptions
=
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/fixtures/pkg/kubectl/cmd/set/multi-resource-yaml.yaml"
},
}
...
...
@@ -483,7 +482,7 @@ func TestSetEnvRemote(t *testing.T) {
outputFormat
:=
"yaml"
streams
:=
genericclioptions
.
NewTestIOStreamsDiscard
()
opts
:=
NewEnvOptions
(
streams
)
opts
.
PrintFlags
=
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
)
opts
.
PrintFlags
=
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
)
opts
.
Local
=
false
opts
.
IOStreams
=
streams
err
:=
opts
.
Complete
(
tf
,
NewCmdEnv
(
tf
,
streams
),
input
.
args
)
...
...
pkg/kubectl/cmd/set/set_image.go
View file @
d1603c95
...
...
@@ -29,10 +29,10 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
// ImageOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of
...
...
@@ -40,7 +40,7 @@ import (
type
SetImageOptions
struct
{
resource
.
FilenameOptions
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
RecordFlags
*
genericclioptions
.
RecordFlags
Infos
[]
*
resource
.
Info
...
...
@@ -87,7 +87,7 @@ var (
func
NewImageOptions
(
streams
genericclioptions
.
IOStreams
)
*
SetImageOptions
{
return
&
SetImageOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"image updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"image updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
...
...
pkg/kubectl/cmd/set/set_image_test.go
View file @
d1603c95
...
...
@@ -43,7 +43,6 @@ import (
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/printers"
)
func
TestImageLocal
(
t
*
testing
.
T
)
{
...
...
@@ -70,7 +69,7 @@ func TestImageLocal(t *testing.T) {
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
opts
:=
SetImageOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"
}},
Local
:
true
,
...
...
@@ -92,7 +91,7 @@ func TestImageLocal(t *testing.T) {
}
func
TestSetImageValidation
(
t
*
testing
.
T
)
{
printFlags
:=
printer
s
.
NewPrintFlags
(
""
)
.
WithTypeSetter
(
scheme
.
Scheme
)
printFlags
:=
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithTypeSetter
(
scheme
.
Scheme
)
testCases
:=
[]
struct
{
name
string
...
...
@@ -183,7 +182,7 @@ func TestSetMultiResourcesImageLocal(t *testing.T) {
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
opts
:=
SetImageOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/fixtures/pkg/kubectl/cmd/set/multi-resource-yaml.yaml"
}},
Local
:
true
,
...
...
@@ -570,7 +569,7 @@ func TestSetImageRemote(t *testing.T) {
cmd
:=
NewCmdImage
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
opts
:=
SetImageOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
Local
:
false
,
IOStreams
:
streams
,
...
...
pkg/kubectl/cmd/set/set_resources.go
View file @
d1603c95
...
...
@@ -20,8 +20,6 @@ import (
"fmt"
"strings"
"k8s.io/kubernetes/pkg/printers"
"github.com/spf13/cobra"
"k8s.io/api/core/v1"
...
...
@@ -33,6 +31,7 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
...
...
@@ -65,7 +64,7 @@ var (
type
SetResourcesOptions
struct
{
resource
.
FilenameOptions
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
RecordFlags
*
genericclioptions
.
RecordFlags
Infos
[]
*
resource
.
Info
...
...
@@ -94,7 +93,7 @@ type SetResourcesOptions struct {
// pod templates are selected by default.
func
NewResourcesOptions
(
streams
genericclioptions
.
IOStreams
)
*
SetResourcesOptions
{
return
&
SetResourcesOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"resource requirements updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"resource requirements updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
...
...
pkg/kubectl/cmd/set/set_resources_test.go
View file @
d1603c95
...
...
@@ -24,8 +24,6 @@ import (
"strings"
"testing"
"k8s.io/kubernetes/pkg/printers"
"github.com/stretchr/testify/assert"
appsv1
"k8s.io/api/apps/v1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
...
...
@@ -70,7 +68,7 @@ func TestResourcesLocal(t *testing.T) {
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
opts
:=
SetResourcesOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/e2e/testing-manifests/statefulset/cassandra/controller.yaml"
}},
Local
:
true
,
...
...
@@ -119,7 +117,7 @@ func TestSetMultiResourcesLimitsLocal(t *testing.T) {
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
opts
:=
SetResourcesOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
FilenameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/fixtures/pkg/kubectl/cmd/set/multi-resource-yaml.yaml"
}},
Local
:
true
,
...
...
@@ -494,7 +492,7 @@ func TestSetResourcesRemote(t *testing.T) {
cmd
:=
NewCmdResources
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
opts
:=
SetResourcesOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
Limits
:
"cpu=200m,memory=512Mi"
,
ContainerSelector
:
"*"
,
...
...
pkg/kubectl/cmd/set/set_selector.go
View file @
d1603c95
...
...
@@ -19,8 +19,6 @@ package set
import
(
"fmt"
"k8s.io/kubernetes/pkg/printers"
"github.com/golang/glog"
"github.com/spf13/cobra"
"k8s.io/api/core/v1"
...
...
@@ -32,6 +30,7 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
...
...
@@ -42,7 +41,7 @@ import (
type
SetSelectorOptions
struct
{
fileOptions
resource
.
FilenameOptions
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
RecordFlags
*
genericclioptions
.
RecordFlags
local
bool
...
...
@@ -79,7 +78,7 @@ var (
func
NewSelectorOptions
(
streams
genericclioptions
.
IOStreams
)
*
SetSelectorOptions
{
return
&
SetSelectorOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"selector updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"selector updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
...
...
pkg/kubectl/cmd/set/set_serviceaccount.go
View file @
d1603c95
...
...
@@ -20,8 +20,6 @@ import (
"errors"
"fmt"
"k8s.io/kubernetes/pkg/printers"
"github.com/spf13/cobra"
"github.com/golang/glog"
...
...
@@ -32,6 +30,7 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
...
...
@@ -58,7 +57,7 @@ var (
// serviceAccountConfig encapsulates the data required to perform the operation.
type
SetServiceAccountOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
RecordFlags
*
genericclioptions
.
RecordFlags
fileNameOptions
resource
.
FilenameOptions
...
...
@@ -79,7 +78,7 @@ type SetServiceAccountOptions struct {
func
NewSetServiceAccountOptions
(
streams
genericclioptions
.
IOStreams
)
*
SetServiceAccountOptions
{
return
&
SetServiceAccountOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"serviceaccount updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"serviceaccount updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
RecordFlags
:
genericclioptions
.
NewRecordFlags
(),
Recorder
:
genericclioptions
.
NoopRecorder
{},
...
...
pkg/kubectl/cmd/set/set_serviceaccount_test.go
View file @
d1603c95
...
...
@@ -25,8 +25,6 @@ import (
"path"
"testing"
"k8s.io/kubernetes/pkg/printers"
"github.com/stretchr/testify/assert"
appsv1
"k8s.io/api/apps/v1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
...
...
@@ -90,7 +88,7 @@ func TestSetServiceAccountLocal(t *testing.T) {
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
testapi
.
Default
=
testapi
.
Groups
[
input
.
apiGroup
]
saConfig
:=
SetServiceAccountOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
fileNameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
input
.
yaml
}},
local
:
true
,
...
...
@@ -128,7 +126,7 @@ func TestSetServiceAccountMultiLocal(t *testing.T) {
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
cmd
.
Flags
()
.
Set
(
"local"
,
"true"
)
opts
:=
SetServiceAccountOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
fileNameOptions
:
resource
.
FilenameOptions
{
Filenames
:
[]
string
{
"../../../../test/fixtures/pkg/kubectl/cmd/set/multi-resource-yaml.yaml"
}},
local
:
true
,
...
...
@@ -365,7 +363,7 @@ func TestSetServiceAccountRemote(t *testing.T) {
cmd
:=
NewCmdServiceAccount
(
tf
,
streams
)
cmd
.
Flags
()
.
Set
(
"output"
,
outputFormat
)
saConfig
:=
SetServiceAccountOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
local
:
false
,
IOStreams
:
streams
,
...
...
@@ -407,7 +405,7 @@ func TestServiceAccountValidation(t *testing.T) {
cmd
:=
NewCmdServiceAccount
(
tf
,
streams
)
saConfig
:=
&
SetServiceAccountOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithDefaultOutput
(
outputFormat
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
streams
,
}
err
:=
saConfig
.
Complete
(
tf
,
cmd
,
input
.
args
)
...
...
pkg/kubectl/cmd/set/set_subject.go
View file @
d1603c95
...
...
@@ -31,10 +31,10 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
)
var
(
...
...
@@ -57,7 +57,7 @@ type updateSubjects func(existings []rbacv1.Subject, targets []rbacv1.Subject) (
// SubjectOptions is the start of the data required to perform the operation. As new fields are added, add them here instead of
// referencing the cmd.Flags
type
SubjectOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
PrintFlags
*
genericclioption
s
.
PrintFlags
resource
.
FilenameOptions
...
...
@@ -82,7 +82,7 @@ type SubjectOptions struct {
func
NewSubjectOptions
(
streams
genericclioptions
.
IOStreams
)
*
SubjectOptions
{
return
&
SubjectOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"subjects updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"subjects updated"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
streams
,
}
...
...
pkg/kubectl/cmd/taint.go
View file @
d1603c95
...
...
@@ -34,17 +34,17 @@ import (
"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/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers"
taintutils
"k8s.io/kubernetes/pkg/util/taints"
)
// TaintOptions have the data required to perform the taint operation
type
TaintOptions
struct
{
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
resources
[]
string
taintsToAdd
[]
v1
.
Taint
...
...
@@ -87,7 +87,7 @@ var (
func
NewCmdTaint
(
f
cmdutil
.
Factory
,
streams
genericclioptions
.
IOStreams
)
*
cobra
.
Command
{
options
:=
&
TaintOptions
{
PrintFlags
:
printer
s
.
NewPrintFlags
(
"tainted"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"tainted"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
IOStreams
:
streams
,
}
...
...
@@ -148,14 +148,9 @@ func (o *TaintOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
}
}
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
if
len
(
o
.
resources
)
<
1
{
...
...
pkg/kubectl/cmd/util/editor/BUILD
View file @
d1603c95
...
...
@@ -19,11 +19,11 @@ go_library(
"//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/kubectl/genericclioptions/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/util/crlf:go_default_library",
"//pkg/kubectl/util/term:go_default_library",
"//pkg/printers:go_default_library",
"//vendor/github.com/evanphx/json-patch:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
...
...
pkg/kubectl/cmd/util/editor/editoptions.go
View file @
d1603c95
...
...
@@ -46,10 +46,10 @@ import (
"k8s.io/kubernetes/pkg/kubectl"
cmdutil
"k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/crlf"
"k8s.io/kubernetes/pkg/printers"
)
// EditOptions contains all the options for running edit cli command.
...
...
@@ -57,8 +57,8 @@ type EditOptions struct {
resource
.
FilenameOptions
RecordFlags
*
genericclioptions
.
RecordFlags
PrintFlags
*
printer
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
PrintFlags
*
genericclioption
s
.
PrintFlags
ToPrinter
func
(
string
)
(
printers
.
ResourcePrinter
,
error
)
Output
string
OutputPatch
bool
...
...
@@ -88,7 +88,7 @@ func NewEditOptions(editMode EditMode, ioStreams genericclioptions.IOStreams) *E
EditMode
:
editMode
,
PrintFlags
:
printer
s
.
NewPrintFlags
(
"edited"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
PrintFlags
:
genericclioption
s
.
NewPrintFlags
(
"edited"
)
.
WithTypeSetter
(
scheme
.
Scheme
),
WindowsLineEndings
:
goruntime
.
GOOS
==
"windows"
,
...
...
@@ -163,13 +163,9 @@ func (o *EditOptions) Complete(f cmdutil.Factory, args []string, cmd *cobra.Comm
Do
()
}
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
Func
,
error
)
{
o
.
ToPrinter
=
func
(
operation
string
)
(
printers
.
ResourcePrinter
,
error
)
{
o
.
PrintFlags
.
NamePrintFlags
.
Operation
=
operation
printer
,
err
:=
o
.
PrintFlags
.
ToPrinter
()
if
err
!=
nil
{
return
nil
,
err
}
return
printer
.
PrintObj
,
nil
return
o
.
PrintFlags
.
ToPrinter
()
}
o
.
CmdNamespace
=
cmdNamespace
...
...
pkg/kubectl/genericclioptions/BUILD
View file @
d1603c95
load("@io_bazel_rules_go//go:def.bzl", "go_library")
load("@io_bazel_rules_go//go:def.bzl", "go_library"
, "go_test"
)
go_library(
name = "go_default_library",
...
...
@@ -7,11 +7,15 @@ go_library(
"config_flags_fake.go",
"doc.go",
"io_options.go",
"json_yaml_flags.go",
"name_flags.go",
"print_flags.go",
"record_flags.go",
],
importpath = "k8s.io/kubernetes/pkg/kubectl/genericclioptions",
visibility = ["//visibility:public"],
deps = [
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//vendor/github.com/evanphx/json-patch:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/pflag:go_default_library",
...
...
@@ -37,8 +41,22 @@ filegroup(
name = "all-srcs",
srcs = [
":package-srcs",
"//pkg/kubectl/genericclioptions/printers:all-srcs",
"//pkg/kubectl/genericclioptions/resource:all-srcs",
],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
go_test(
name = "go_default_test",
srcs = [
"json_yaml_flags_test.go",
"name_flags_test.go",
],
embed = [":go_default_library"],
deps = [
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
],
)
pkg/
printer
s/json_yaml_flags.go
→
pkg/
kubectl/genericclioption
s/json_yaml_flags.go
View file @
d1603c95
...
...
@@ -14,12 +14,14 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
printer
s
package
genericclioption
s
import
(
"strings"
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
)
// JSONYamlPrintFlags provides default flags necessary for json/yaml printing.
...
...
@@ -32,15 +34,15 @@ type JSONYamlPrintFlags struct {
// handling --output=(yaml|json) printing.
// Returns false if the specified outputFormat does not match a supported format.
// Supported Format types can be found in pkg/printers/printers.go
func
(
f
*
JSONYamlPrintFlags
)
ToPrinter
(
outputFormat
string
)
(
ResourcePrinter
,
error
)
{
var
printer
ResourcePrinter
func
(
f
*
JSONYamlPrintFlags
)
ToPrinter
(
outputFormat
string
)
(
printers
.
ResourcePrinter
,
error
)
{
var
printer
printers
.
ResourcePrinter
outputFormat
=
strings
.
ToLower
(
outputFormat
)
switch
outputFormat
{
case
"json"
:
printer
=
&
JSONPrinter
{}
printer
=
&
printers
.
JSONPrinter
{}
case
"yaml"
:
printer
=
&
YAMLPrinter
{}
printer
=
&
printers
.
YAMLPrinter
{}
default
:
return
nil
,
NoCompatiblePrinterError
{
Options
:
f
,
OutputFormat
:
&
outputFormat
}
}
...
...
pkg/
printer
s/json_yaml_flags_test.go
→
pkg/
kubectl/genericclioption
s/json_yaml_flags_test.go
View file @
d1603c95
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
printers_test
package
genericclioptions
import
(
"bytes"
...
...
@@ -23,7 +23,6 @@ import (
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/printers"
)
func
TestPrinterSupportsExpectedJSONYamlFormats
(
t
*
testing
.
T
)
{
...
...
@@ -62,16 +61,16 @@ func TestPrinterSupportsExpectedJSONYamlFormats(t *testing.T) {
for
_
,
tc
:=
range
testCases
{
t
.
Run
(
tc
.
name
,
func
(
t
*
testing
.
T
)
{
printFlags
:=
printers
.
JSONYamlPrintFlags
{}
printFlags
:=
JSONYamlPrintFlags
{}
p
,
err
:=
printFlags
.
ToPrinter
(
tc
.
outputFormat
)
if
tc
.
expectNoMatch
{
if
!
printers
.
IsNoCompatiblePrinterError
(
err
)
{
if
!
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected no printer matches for output format %q"
,
tc
.
outputFormat
)
}
return
}
if
printers
.
IsNoCompatiblePrinterError
(
err
)
{
if
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected to match template printer for output format %q"
,
tc
.
outputFormat
)
}
if
err
!=
nil
{
...
...
pkg/
printer
s/name_flags.go
→
pkg/
kubectl/genericclioption
s/name_flags.go
View file @
d1603c95
...
...
@@ -14,13 +14,15 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
printer
s
package
genericclioption
s
import
(
"fmt"
"strings"
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
)
// NamePrintFlags provides default flags necessary for printing
...
...
@@ -42,8 +44,8 @@ func (f *NamePrintFlags) Complete(successTemplate string) error {
// handling --output=name printing.
// Returns false if the specified outputFormat does not match a supported format.
// Supported format types can be found in pkg/printers/printers.go
func
(
f
*
NamePrintFlags
)
ToPrinter
(
outputFormat
string
)
(
ResourcePrinter
,
error
)
{
namePrinter
:=
&
NamePrinter
{
func
(
f
*
NamePrintFlags
)
ToPrinter
(
outputFormat
string
)
(
printers
.
ResourcePrinter
,
error
)
{
namePrinter
:=
&
printers
.
NamePrinter
{
Operation
:
f
.
Operation
,
}
...
...
pkg/
printer
s/name_flags_test.go
→
pkg/
kubectl/genericclioption
s/name_flags_test.go
View file @
d1603c95
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
printers_test
package
genericclioptions
import
(
"bytes"
...
...
@@ -23,7 +23,6 @@ import (
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/printers"
)
func
TestNamePrinterSupportsExpectedFormats
(
t
*
testing
.
T
)
{
...
...
@@ -78,18 +77,18 @@ func TestNamePrinterSupportsExpectedFormats(t *testing.T) {
for
_
,
tc
:=
range
testCases
{
t
.
Run
(
tc
.
name
,
func
(
t
*
testing
.
T
)
{
printFlags
:=
printers
.
NamePrintFlags
{
printFlags
:=
NamePrintFlags
{
Operation
:
tc
.
operation
,
}
p
,
err
:=
printFlags
.
ToPrinter
(
tc
.
outputFormat
)
if
tc
.
expectNoMatch
{
if
!
printers
.
IsNoCompatiblePrinterError
(
err
)
{
if
!
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected no printer matches for output format %q"
,
tc
.
outputFormat
)
}
return
}
if
printers
.
IsNoCompatiblePrinterError
(
err
)
{
if
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected to match name printer for output format %q"
,
tc
.
outputFormat
)
}
...
...
pkg/
printers/
flags.go
→
pkg/
kubectl/genericclioptions/print_
flags.go
View file @
d1603c95
...
...
@@ -14,28 +14,16 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
printer
s
package
genericclioption
s
import
(
"fmt"
"strings"
"github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
)
var
(
internalObjectPrinterErr
=
"a versioned object must be passed to a printer"
// disallowedPackagePrefixes contains regular expression templates
// for object package paths that are not allowed by printers.
disallowedPackagePrefixes
=
[]
string
{
"k8s.io/kubernetes/pkg/apis/"
,
}
)
var
internalObjectPreventer
=
&
illegalPackageSourceChecker
{
disallowedPackagePrefixes
}
type
NoCompatiblePrinterError
struct
{
OutputFormat
*
string
Options
interface
{}
...
...
@@ -59,14 +47,6 @@ func IsNoCompatiblePrinterError(err error) bool {
return
ok
}
func
IsInternalObjectError
(
err
error
)
bool
{
if
err
==
nil
{
return
false
}
return
err
.
Error
()
==
internalObjectPrinterErr
}
// PrintFlags composes common printer flag structs
// used across all commands, and provides a method
// of retrieving a known printer based on flag values provided.
...
...
@@ -74,7 +54,7 @@ type PrintFlags struct {
JSONYamlPrintFlags
*
JSONYamlPrintFlags
NamePrintFlags
*
NamePrintFlags
TypeSetterPrinter
*
TypeSetterPrinter
TypeSetterPrinter
*
printers
.
TypeSetterPrinter
OutputFormat
*
string
}
...
...
@@ -83,7 +63,7 @@ func (f *PrintFlags) Complete(successTemplate string) error {
return
f
.
NamePrintFlags
.
Complete
(
successTemplate
)
}
func
(
f
*
PrintFlags
)
ToPrinter
()
(
ResourcePrinter
,
error
)
{
func
(
f
*
PrintFlags
)
ToPrinter
()
(
printers
.
ResourcePrinter
,
error
)
{
outputFormat
:=
""
if
f
.
OutputFormat
!=
nil
{
outputFormat
=
*
f
.
OutputFormat
...
...
@@ -121,7 +101,7 @@ func (f *PrintFlags) WithDefaultOutput(output string) *PrintFlags {
// WithTypeSetter sets a wrapper than will surround the returned printer with a printer to type resources
func
(
f
*
PrintFlags
)
WithTypeSetter
(
scheme
*
runtime
.
Scheme
)
*
PrintFlags
{
f
.
TypeSetterPrinter
=
NewTypeSetter
(
scheme
)
f
.
TypeSetterPrinter
=
printers
.
NewTypeSetter
(
scheme
)
return
f
}
...
...
@@ -135,22 +115,3 @@ func NewPrintFlags(operation string) *PrintFlags {
NamePrintFlags
:
NewNamePrintFlags
(
operation
),
}
}
// illegalPackageSourceChecker compares a given
// object's package path, and determines if the
// object originates from a disallowed source.
type
illegalPackageSourceChecker
struct
{
// disallowedPrefixes is a slice of disallowed package path
// prefixes for a given runtime.Object that we are printing.
disallowedPrefixes
[]
string
}
func
(
c
*
illegalPackageSourceChecker
)
IsForbidden
(
pkgPath
string
)
bool
{
for
_
,
forbiddenPrefix
:=
range
c
.
disallowedPrefixes
{
if
strings
.
HasPrefix
(
pkgPath
,
forbiddenPrefix
)
{
return
true
}
}
return
false
}
pkg/kubectl/genericclioptions/printers/BUILD
0 → 100644
View file @
d1603c95
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
go_library(
name = "go_default_library",
srcs = [
"interface.go",
"json.go",
"name.go",
"sourcechecker.go",
"typesetter.go",
],
importpath = "k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers",
visibility = ["//visibility:public"],
deps = [
"//vendor/github.com/ghodss/yaml:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
],
)
go_test(
name = "go_default_test",
srcs = ["sourcechecker_test.go"],
embed = [":go_default_library"],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)
pkg/kubectl/genericclioptions/printers/interface.go
0 → 100644
View file @
d1603c95
/*
Copyright 2018 The Kubernetes Authors.
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
printers
import
(
"io"
"k8s.io/apimachinery/pkg/runtime"
)
// ResourcePrinterFunc is a function that can print objects
type
ResourcePrinterFunc
func
(
runtime
.
Object
,
io
.
Writer
)
error
// ResourcePrinter is an interface that knows how to print runtime objects.
type
ResourcePrinter
interface
{
// Print receives a runtime object, formats it and prints it to a writer.
PrintObj
(
runtime
.
Object
,
io
.
Writer
)
error
}
pkg/printers/json.go
→
pkg/
kubectl/genericclioptions/
printers/json.go
View file @
d1603c95
...
...
@@ -36,8 +36,8 @@ func (p *JSONPrinter) PrintObj(obj runtime.Object, w io.Writer) error {
// we use reflect.Indirect here in order to obtain the actual value from a pointer.
// we need an actual value in order to retrieve the package path for an object.
// using reflect.Indirect indiscriminately is valid here, as all runtime.Objects are supposed to be pointers.
if
i
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
i
nternalObjectPrinterErr
)
if
I
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
I
nternalObjectPrinterErr
)
}
switch
obj
:=
obj
.
(
type
)
{
...
...
@@ -78,8 +78,8 @@ func (p *YAMLPrinter) PrintObj(obj runtime.Object, w io.Writer) error {
// we use reflect.Indirect here in order to obtain the actual value from a pointer.
// we need an actual value in order to retrieve the package path for an object.
// using reflect.Indirect indiscriminately is valid here, as all runtime.Objects are supposed to be pointers.
if
i
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
i
nternalObjectPrinterErr
)
if
I
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
I
nternalObjectPrinterErr
)
}
switch
obj
:=
obj
.
(
type
)
{
...
...
pkg/printers/name.go
→
pkg/
kubectl/genericclioptions/
printers/name.go
View file @
d1603c95
...
...
@@ -45,8 +45,8 @@ func (p *NamePrinter) PrintObj(obj runtime.Object, w io.Writer) error {
// we use reflect.Indirect here in order to obtain the actual value from a pointer.
// using reflect.Indirect indiscriminately is valid here, as all runtime.Objects are supposed to be pointers.
// we need an actual value in order to retrieve the package path for an object.
if
i
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
i
nternalObjectPrinterErr
)
if
I
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
I
nternalObjectPrinterErr
)
}
if
meta
.
IsListType
(
obj
)
{
...
...
pkg/kubectl/genericclioptions/printers/sourcechecker.go
0 → 100644
View file @
d1603c95
/*
Copyright 2018 The Kubernetes Authors.
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
printers
import
(
"strings"
)
var
(
InternalObjectPrinterErr
=
"a versioned object must be passed to a printer"
// disallowedPackagePrefixes contains regular expression templates
// for object package paths that are not allowed by printers.
disallowedPackagePrefixes
=
[]
string
{
"k8s.io/kubernetes/pkg/apis/"
,
}
)
var
InternalObjectPreventer
=
&
illegalPackageSourceChecker
{
disallowedPackagePrefixes
}
func
IsInternalObjectError
(
err
error
)
bool
{
if
err
==
nil
{
return
false
}
return
err
.
Error
()
==
InternalObjectPrinterErr
}
// illegalPackageSourceChecker compares a given
// object's package path, and determines if the
// object originates from a disallowed source.
type
illegalPackageSourceChecker
struct
{
// disallowedPrefixes is a slice of disallowed package path
// prefixes for a given runtime.Object that we are printing.
disallowedPrefixes
[]
string
}
func
(
c
*
illegalPackageSourceChecker
)
IsForbidden
(
pkgPath
string
)
bool
{
for
_
,
forbiddenPrefix
:=
range
c
.
disallowedPrefixes
{
if
strings
.
HasPrefix
(
pkgPath
,
forbiddenPrefix
)
{
return
true
}
}
return
false
}
pkg/
printers/flags
_test.go
→
pkg/
kubectl/genericclioptions/printers/sourcechecker
_test.go
View file @
d1603c95
File moved
pkg/printers/typesetter.go
→
pkg/
kubectl/genericclioptions/
printers/typesetter.go
View file @
d1603c95
File moved
pkg/printers/BUILD
View file @
d1603c95
...
...
@@ -11,25 +11,20 @@ go_library(
srcs = [
"customcolumn.go",
"customcolumn_flags.go",
"flags.go",
"humanreadable.go",
"interface.go",
"json.go",
"json_yaml_flags.go",
"jsonpath.go",
"jsonpath_flags.go",
"kube_template_flags.go",
"name.go",
"name_flags.go",
"tabwriter.go",
"template.go",
"template_flags.go",
"typesetter.go",
],
importpath = "k8s.io/kubernetes/pkg/printers",
deps = [
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//vendor/github.com/ghodss/yaml:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
...
...
@@ -43,26 +38,6 @@ go_library(
],
)
go_test(
name = "go_default_xtest",
srcs = [
"customcolumn_flags_test.go",
"customcolumn_test.go",
"json_yaml_flags_test.go",
"jsonpath_flags_test.go",
"name_flags_test.go",
"template_flags_test.go",
],
deps = [
":go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/core:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
...
...
@@ -83,13 +58,18 @@ filegroup(
go_test(
name = "go_default_test",
srcs = [
"flags_test.go",
"customcolumn_flags_test.go",
"customcolumn_test.go",
"humanreadable_test.go",
"jsonpath_flags_test.go",
"template_flags_test.go",
"template_test.go",
],
embed = [":go_default_library"],
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/apis/core:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library",
...
...
pkg/printers/customcolumn.go
View file @
d1603c95
...
...
@@ -29,6 +29,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/util/jsonpath"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
)
var
jsonRegexp
=
regexp
.
MustCompile
(
"^
\\
{
\\
.?([^{}]+)
\\
}$|^
\\
.?([^{}]+)$"
)
...
...
@@ -154,8 +155,8 @@ func (s *CustomColumnsPrinter) PrintObj(obj runtime.Object, out io.Writer) error
// we use reflect.Indirect here in order to obtain the actual value from a pointer.
// we need an actual value in order to retrieve the package path for an object.
// using reflect.Indirect indiscriminately is valid here, as all runtime.Objects are supposed to be pointers.
if
i
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
i
nternalObjectPrinterErr
)
if
printers
.
I
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
printers
.
I
nternalObjectPrinterErr
)
}
if
w
,
found
:=
out
.
(
*
tabwriter
.
Writer
);
!
found
{
...
...
pkg/printers/customcolumn_flags.go
View file @
d1603c95
...
...
@@ -23,6 +23,7 @@ import (
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/scheme"
)
...
...
@@ -39,7 +40,7 @@ type CustomColumnsPrintFlags struct {
// Supported format types can be found in pkg/printers/printers.go
func
(
f
*
CustomColumnsPrintFlags
)
ToPrinter
(
templateFormat
string
)
(
ResourcePrinter
,
error
)
{
if
len
(
templateFormat
)
==
0
{
return
nil
,
NoCompatiblePrinterError
{}
return
nil
,
genericclioptions
.
NoCompatiblePrinterError
{}
}
templateValue
:=
""
...
...
@@ -63,7 +64,7 @@ func (f *CustomColumnsPrintFlags) ToPrinter(templateFormat string) (ResourcePrin
}
if
_
,
supportedFormat
:=
supportedFormats
[
templateFormat
];
!
supportedFormat
{
return
nil
,
NoCompatiblePrinterError
{}
return
nil
,
genericclioptions
.
NoCompatiblePrinterError
{}
}
if
len
(
templateValue
)
==
0
{
...
...
@@ -82,8 +83,7 @@ func (f *CustomColumnsPrintFlags) ToPrinter(templateFormat string) (ResourcePrin
return
p
,
err
}
p
,
err
:=
NewCustomColumnsPrinterFromSpec
(
templateValue
,
decoder
,
f
.
NoHeaders
)
return
p
,
err
return
NewCustomColumnsPrinterFromSpec
(
templateValue
,
decoder
,
f
.
NoHeaders
)
}
// AddFlags receives a *cobra.Command reference and binds
...
...
pkg/printers/customcolumn_flags_test.go
View file @
d1603c95
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
printers
_test
package
printers
import
(
"bytes"
...
...
@@ -26,7 +26,7 @@ import (
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/
printer
s"
"k8s.io/kubernetes/pkg/
kubectl/genericclioption
s"
)
func
TestPrinterSupportsExpectedCustomColumnFormats
(
t
*
testing
.
T
)
{
...
...
@@ -94,18 +94,18 @@ func TestPrinterSupportsExpectedCustomColumnFormats(t *testing.T) {
for
_
,
tc
:=
range
testCases
{
t
.
Run
(
tc
.
name
,
func
(
t
*
testing
.
T
)
{
printFlags
:=
printers
.
CustomColumnsPrintFlags
{
printFlags
:=
CustomColumnsPrintFlags
{
TemplateArgument
:
tc
.
templateArg
,
}
p
,
err
:=
printFlags
.
ToPrinter
(
tc
.
outputFormat
)
if
tc
.
expectNoMatch
{
if
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected no printer matches for output format %q"
,
tc
.
outputFormat
)
}
return
}
if
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected to match template printer for output format %q"
,
tc
.
outputFormat
)
}
...
...
pkg/printers/customcolumn_test.go
View file @
d1603c95
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
printers
_test
package
printers
import
(
"bytes"
...
...
@@ -27,7 +27,6 @@ import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api
"k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/printers"
)
func
TestMassageJSONPath
(
t
*
testing
.
T
)
{
...
...
@@ -48,7 +47,7 @@ func TestMassageJSONPath(t *testing.T) {
}
for
_
,
test
:=
range
tests
{
t
.
Run
(
test
.
input
,
func
(
t
*
testing
.
T
)
{
output
,
err
:=
printers
.
RelaxedJSONPathExpression
(
test
.
input
)
output
,
err
:=
RelaxedJSONPathExpression
(
test
.
input
)
if
err
!=
nil
&&
!
test
.
expectErr
{
t
.
Errorf
(
"unexpected error: %v"
,
err
)
return
...
...
@@ -69,7 +68,7 @@ func TestMassageJSONPath(t *testing.T) {
func
TestNewColumnPrinterFromSpec
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
spec
string
expectedColumns
[]
printers
.
Column
expectedColumns
[]
Column
expectErr
bool
name
string
noHeaders
bool
...
...
@@ -97,7 +96,7 @@ func TestNewColumnPrinterFromSpec(t *testing.T) {
{
spec
:
"NAME:metadata.name,API_VERSION:apiVersion"
,
name
:
"ok"
,
expectedColumns
:
[]
printers
.
Column
{
expectedColumns
:
[]
Column
{
{
Header
:
"NAME"
,
FieldSpec
:
"{.metadata.name}"
,
...
...
@@ -116,7 +115,7 @@ func TestNewColumnPrinterFromSpec(t *testing.T) {
}
for
_
,
test
:=
range
tests
{
t
.
Run
(
test
.
name
,
func
(
t
*
testing
.
T
)
{
printer
,
err
:=
printers
.
NewCustomColumnsPrinterFromSpec
(
test
.
spec
,
legacyscheme
.
Codecs
.
UniversalDecoder
(),
test
.
noHeaders
)
printer
,
err
:=
NewCustomColumnsPrinterFromSpec
(
test
.
spec
,
legacyscheme
.
Codecs
.
UniversalDecoder
(),
test
.
noHeaders
)
if
test
.
expectErr
{
if
err
==
nil
{
t
.
Errorf
(
"[%s] unexpected non-error"
,
test
.
name
)
...
...
@@ -164,7 +163,7 @@ const exampleTemplateTwo = `NAME API_VERSION
func
TestNewColumnPrinterFromTemplate
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
spec
string
expectedColumns
[]
printers
.
Column
expectedColumns
[]
Column
expectErr
bool
name
string
}{
...
...
@@ -191,7 +190,7 @@ func TestNewColumnPrinterFromTemplate(t *testing.T) {
{
spec
:
exampleTemplateOne
,
name
:
"ok"
,
expectedColumns
:
[]
printers
.
Column
{
expectedColumns
:
[]
Column
{
{
Header
:
"NAME"
,
FieldSpec
:
"{.metadata.name}"
,
...
...
@@ -205,7 +204,7 @@ func TestNewColumnPrinterFromTemplate(t *testing.T) {
{
spec
:
exampleTemplateTwo
,
name
:
"ok-2"
,
expectedColumns
:
[]
printers
.
Column
{
expectedColumns
:
[]
Column
{
{
Header
:
"NAME"
,
FieldSpec
:
"{.metadata.name}"
,
...
...
@@ -220,7 +219,7 @@ func TestNewColumnPrinterFromTemplate(t *testing.T) {
for
_
,
test
:=
range
tests
{
t
.
Run
(
test
.
name
,
func
(
t
*
testing
.
T
)
{
reader
:=
bytes
.
NewBufferString
(
test
.
spec
)
printer
,
err
:=
printers
.
NewCustomColumnsPrinterFromTemplate
(
reader
,
legacyscheme
.
Codecs
.
UniversalDecoder
())
printer
,
err
:=
NewCustomColumnsPrinterFromTemplate
(
reader
,
legacyscheme
.
Codecs
.
UniversalDecoder
())
if
test
.
expectErr
{
if
err
==
nil
{
t
.
Errorf
(
"[%s] unexpected non-error"
,
test
.
name
)
...
...
@@ -241,12 +240,12 @@ func TestNewColumnPrinterFromTemplate(t *testing.T) {
func
TestColumnPrint
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
columns
[]
printers
.
Column
columns
[]
Column
obj
runtime
.
Object
expectedOutput
string
}{
{
columns
:
[]
printers
.
Column
{
columns
:
[]
Column
{
{
Header
:
"NAME"
,
FieldSpec
:
"{.metadata.name}"
,
...
...
@@ -258,7 +257,7 @@ foo
`
,
},
{
columns
:
[]
printers
.
Column
{
columns
:
[]
Column
{
{
Header
:
"NAME"
,
FieldSpec
:
"{.metadata.name}"
,
...
...
@@ -276,7 +275,7 @@ bar
`
,
},
{
columns
:
[]
printers
.
Column
{
columns
:
[]
Column
{
{
Header
:
"NAME"
,
FieldSpec
:
"{.metadata.name}"
,
...
...
@@ -292,7 +291,7 @@ foo baz
`
,
},
{
columns
:
[]
printers
.
Column
{
columns
:
[]
Column
{
{
Header
:
"NAME"
,
FieldSpec
:
"{.metadata.name}"
,
...
...
@@ -315,7 +314,7 @@ foo baz <none>
for
_
,
test
:=
range
tests
{
t
.
Run
(
test
.
expectedOutput
,
func
(
t
*
testing
.
T
)
{
printer
:=
&
printers
.
CustomColumnsPrinter
{
printer
:=
&
CustomColumnsPrinter
{
Columns
:
test
.
columns
,
Decoder
:
legacyscheme
.
Codecs
.
UniversalDecoder
(),
}
...
...
@@ -332,7 +331,7 @@ foo baz <none>
// this mimics how resource/get.go calls the customcolumn printer
func
TestIndividualPrintObjOnExistingTabWriter
(
t
*
testing
.
T
)
{
columns
:=
[]
printers
.
Column
{
columns
:=
[]
Column
{
{
Header
:
"NAME"
,
FieldSpec
:
"{.metadata.name}"
,
...
...
@@ -356,8 +355,8 @@ bar bar bar
`
buffer
:=
&
bytes
.
Buffer
{}
tabWriter
:=
printers
.
GetNewTabWriter
(
buffer
)
printer
:=
&
printers
.
CustomColumnsPrinter
{
tabWriter
:=
GetNewTabWriter
(
buffer
)
printer
:=
&
CustomColumnsPrinter
{
Columns
:
columns
,
Decoder
:
legacyscheme
.
Codecs
.
UniversalDecoder
(),
}
...
...
pkg/printers/internalversion/BUILD
View file @
d1603c95
...
...
@@ -27,6 +27,8 @@ go_test(
"//pkg/apis/storage:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/kubectl/genericclioptions:go_default_library",
"//pkg/kubectl/genericclioptions/printers:go_default_library",
"//pkg/printers:go_default_library",
"//pkg/util/pointer:go_default_library",
"//vendor/github.com/ghodss/yaml:go_default_library",
...
...
pkg/printers/internalversion/printers_test.go
View file @
d1603c95
...
...
@@ -50,6 +50,8 @@ import (
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/apis/policy"
"k8s.io/kubernetes/pkg/apis/storage"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
genericprinters
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
"k8s.io/kubernetes/pkg/printers"
)
...
...
@@ -255,11 +257,11 @@ func testPrinter(t *testing.T, printer printers.ResourcePrinter, unmarshalFunc f
}
func
TestYAMLPrinter
(
t
*
testing
.
T
)
{
testPrinter
(
t
,
printers
.
NewTypeSetter
(
legacyscheme
.
Scheme
)
.
ToPrinter
(
&
printers
.
YAMLPrinter
{}),
yaml
.
Unmarshal
)
testPrinter
(
t
,
genericprinters
.
NewTypeSetter
(
legacyscheme
.
Scheme
)
.
ToPrinter
(
&
generic
printers
.
YAMLPrinter
{}),
yaml
.
Unmarshal
)
}
func
TestJSONPrinter
(
t
*
testing
.
T
)
{
testPrinter
(
t
,
printers
.
NewTypeSetter
(
legacyscheme
.
Scheme
)
.
ToPrinter
(
&
printers
.
JSONPrinter
{}),
json
.
Unmarshal
)
testPrinter
(
t
,
genericprinters
.
NewTypeSetter
(
legacyscheme
.
Scheme
)
.
ToPrinter
(
&
generic
printers
.
JSONPrinter
{}),
json
.
Unmarshal
)
}
func
TestFormatResourceName
(
t
*
testing
.
T
)
{
...
...
@@ -385,7 +387,7 @@ func TestNamePrinter(t *testing.T) {
"pod/bar
\n
"
},
}
printFlags
:=
printer
s
.
NewPrintFlags
(
""
)
.
WithTypeSetter
(
legacyscheme
.
Scheme
)
.
WithDefaultOutput
(
"name"
)
printFlags
:=
genericclioption
s
.
NewPrintFlags
(
""
)
.
WithTypeSetter
(
legacyscheme
.
Scheme
)
.
WithDefaultOutput
(
"name"
)
printer
,
err
:=
printFlags
.
ToPrinter
()
if
err
!=
nil
{
t
.
Fatalf
(
"unexpected err: %v"
,
err
)
...
...
@@ -548,8 +550,9 @@ func TestPrinters(t *testing.T) {
}
genericPrinters
:=
map
[
string
]
printers
.
ResourcePrinter
{
"json"
:
printers
.
NewTypeSetter
(
legacyscheme
.
Scheme
)
.
ToPrinter
(
&
printers
.
JSONPrinter
{}),
"yaml"
:
printers
.
NewTypeSetter
(
legacyscheme
.
Scheme
)
.
ToPrinter
(
&
printers
.
YAMLPrinter
{}),
// TODO(juanvallejo): move "generic printer" tests to pkg/kubectl/genericclioptions/printers
"json"
:
genericprinters
.
NewTypeSetter
(
legacyscheme
.
Scheme
)
.
ToPrinter
(
&
genericprinters
.
JSONPrinter
{}),
"yaml"
:
genericprinters
.
NewTypeSetter
(
legacyscheme
.
Scheme
)
.
ToPrinter
(
&
genericprinters
.
YAMLPrinter
{}),
"template"
:
templatePrinter
,
"template2"
:
templatePrinter2
,
"jsonpath"
:
jsonpathPrinter
,
...
...
pkg/printers/jsonpath.go
View file @
d1603c95
...
...
@@ -25,6 +25,7 @@ import (
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/util/jsonpath"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
)
// exists returns true if it would be possible to call the index function
...
...
@@ -118,8 +119,8 @@ func (j *JSONPathPrinter) PrintObj(obj runtime.Object, w io.Writer) error {
// we use reflect.Indirect here in order to obtain the actual value from a pointer.
// we need an actual value in order to retrieve the package path for an object.
// using reflect.Indirect indiscriminately is valid here, as all runtime.Objects are supposed to be pointers.
if
i
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
i
nternalObjectPrinterErr
)
if
printers
.
I
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
printers
.
I
nternalObjectPrinterErr
)
}
var
queryObj
interface
{}
=
obj
...
...
pkg/printers/jsonpath_flags.go
View file @
d1603c95
...
...
@@ -22,6 +22,8 @@ import (
"strings"
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
)
// JSONPathPrintFlags provides default flags necessary for template printing.
...
...
@@ -39,7 +41,7 @@ type JSONPathPrintFlags struct {
// Returns false if the specified templateFormat does not match a template format.
func
(
f
*
JSONPathPrintFlags
)
ToPrinter
(
templateFormat
string
)
(
ResourcePrinter
,
error
)
{
if
(
f
.
TemplateArgument
==
nil
||
len
(
*
f
.
TemplateArgument
)
==
0
)
&&
len
(
templateFormat
)
==
0
{
return
nil
,
NoCompatiblePrinterError
{
Options
:
f
,
OutputFormat
:
&
templateFormat
}
return
nil
,
genericclioptions
.
NoCompatiblePrinterError
{
Options
:
f
,
OutputFormat
:
&
templateFormat
}
}
templateValue
:=
""
...
...
@@ -66,7 +68,7 @@ func (f *JSONPathPrintFlags) ToPrinter(templateFormat string) (ResourcePrinter,
}
if
_
,
supportedFormat
:=
templateFormats
[
templateFormat
];
!
supportedFormat
{
return
nil
,
NoCompatiblePrinterError
{
Options
:
f
,
OutputFormat
:
&
templateFormat
}
return
nil
,
genericclioptions
.
NoCompatiblePrinterError
{
Options
:
f
,
OutputFormat
:
&
templateFormat
}
}
if
len
(
templateValue
)
==
0
{
...
...
pkg/printers/jsonpath_flags_test.go
View file @
d1603c95
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
printers
_test
package
printers
import
(
"bytes"
...
...
@@ -26,7 +26,7 @@ import (
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/
printer
s"
"k8s.io/kubernetes/pkg/
kubectl/genericclioption
s"
)
func
TestPrinterSupportsExpectedJSONPathFormats
(
t
*
testing
.
T
)
{
...
...
@@ -99,18 +99,18 @@ func TestPrinterSupportsExpectedJSONPathFormats(t *testing.T) {
templateArg
=
nil
}
printFlags
:=
printers
.
JSONPathPrintFlags
{
printFlags
:=
JSONPathPrintFlags
{
TemplateArgument
:
templateArg
,
}
p
,
err
:=
printFlags
.
ToPrinter
(
tc
.
outputFormat
)
if
tc
.
expectNoMatch
{
if
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected no printer matches for output format %q"
,
tc
.
outputFormat
)
}
return
}
if
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected to match template printer for output format %q"
,
tc
.
outputFormat
)
}
...
...
@@ -177,14 +177,14 @@ func TestJSONPathPrinterDefaultsAllowMissingKeysToTrue(t *testing.T) {
for
_
,
tc
:=
range
testCases
{
t
.
Run
(
tc
.
name
,
func
(
t
*
testing
.
T
)
{
printFlags
:=
printers
.
JSONPathPrintFlags
{
printFlags
:=
JSONPathPrintFlags
{
TemplateArgument
:
&
tc
.
templateArg
,
AllowMissingKeys
:
tc
.
allowMissingKeys
,
}
outputFormat
:=
"jsonpath"
p
,
err
:=
printFlags
.
ToPrinter
(
outputFormat
)
if
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected to match template printer for output format %q"
,
outputFormat
)
}
if
err
!=
nil
{
...
...
pkg/printers/kube_template_flags.go
View file @
d1603c95
...
...
@@ -16,7 +16,11 @@ limitations under the License.
package
printers
import
"github.com/spf13/cobra"
import
(
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
)
// KubeTemplatePrintFlags composes print flags that provide both a JSONPath and a go-template printer.
// This is necessary if dealing with cases that require support both both printers, since both sets of flags
...
...
@@ -30,7 +34,7 @@ type KubeTemplatePrintFlags struct {
}
func
(
f
*
KubeTemplatePrintFlags
)
ToPrinter
(
outputFormat
string
)
(
ResourcePrinter
,
error
)
{
if
p
,
err
:=
f
.
JSONPathPrintFlags
.
ToPrinter
(
outputFormat
);
!
IsNoCompatiblePrinterError
(
err
)
{
if
p
,
err
:=
f
.
JSONPathPrintFlags
.
ToPrinter
(
outputFormat
);
!
genericclioptions
.
IsNoCompatiblePrinterError
(
err
)
{
return
p
,
err
}
return
f
.
GoTemplatePrintFlags
.
ToPrinter
(
outputFormat
)
...
...
pkg/printers/template.go
View file @
d1603c95
...
...
@@ -25,6 +25,7 @@ import (
"text/template"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
)
// GoTemplatePrinter is an implementation of ResourcePrinter which formats data with a Go Template.
...
...
@@ -60,8 +61,8 @@ func (p *GoTemplatePrinter) AllowMissingKeys(allow bool) {
// PrintObj formats the obj with the Go Template.
func
(
p
*
GoTemplatePrinter
)
PrintObj
(
obj
runtime
.
Object
,
w
io
.
Writer
)
error
{
if
i
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
i
nternalObjectPrinterErr
)
if
printers
.
I
nternalObjectPreventer
.
IsForbidden
(
reflect
.
Indirect
(
reflect
.
ValueOf
(
obj
))
.
Type
()
.
PkgPath
())
{
return
fmt
.
Errorf
(
printers
.
I
nternalObjectPrinterErr
)
}
var
data
[]
byte
...
...
pkg/printers/template_flags.go
View file @
d1603c95
...
...
@@ -22,6 +22,8 @@ import (
"strings"
"github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
)
// GoTemplatePrintFlags provides default flags necessary for template printing.
...
...
@@ -39,7 +41,7 @@ type GoTemplatePrintFlags struct {
// Returns false if the specified templateFormat does not match a template format.
func
(
f
*
GoTemplatePrintFlags
)
ToPrinter
(
templateFormat
string
)
(
ResourcePrinter
,
error
)
{
if
(
f
.
TemplateArgument
==
nil
||
len
(
*
f
.
TemplateArgument
)
==
0
)
&&
len
(
templateFormat
)
==
0
{
return
nil
,
NoCompatiblePrinterError
{
Options
:
f
,
OutputFormat
:
&
templateFormat
}
return
nil
,
genericclioptions
.
NoCompatiblePrinterError
{
Options
:
f
,
OutputFormat
:
&
templateFormat
}
}
templateValue
:=
""
...
...
@@ -68,7 +70,7 @@ func (f *GoTemplatePrintFlags) ToPrinter(templateFormat string) (ResourcePrinter
}
if
_
,
supportedFormat
:=
supportedFormats
[
templateFormat
];
!
supportedFormat
{
return
nil
,
NoCompatiblePrinterError
{
Options
:
f
,
OutputFormat
:
&
templateFormat
}
return
nil
,
genericclioptions
.
NoCompatiblePrinterError
{
Options
:
f
,
OutputFormat
:
&
templateFormat
}
}
if
len
(
templateValue
)
==
0
{
...
...
pkg/printers/template_flags_test.go
View file @
d1603c95
...
...
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
package
printers
_test
package
printers
import
(
"bytes"
...
...
@@ -26,7 +26,7 @@ import (
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/
printer
s"
"k8s.io/kubernetes/pkg/
kubectl/genericclioption
s"
)
func
TestPrinterSupportsExpectedTemplateFormats
(
t
*
testing
.
T
)
{
...
...
@@ -99,18 +99,18 @@ func TestPrinterSupportsExpectedTemplateFormats(t *testing.T) {
templateArg
=
nil
}
printFlags
:=
printers
.
GoTemplatePrintFlags
{
printFlags
:=
GoTemplatePrintFlags
{
TemplateArgument
:
templateArg
,
}
p
,
err
:=
printFlags
.
ToPrinter
(
tc
.
outputFormat
)
if
tc
.
expectNoMatch
{
if
!
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
!
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected no printer matches for output format %q"
,
tc
.
outputFormat
)
}
return
}
if
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected to match template printer for output format %q"
,
tc
.
outputFormat
)
}
...
...
@@ -171,14 +171,14 @@ func TestTemplatePrinterDefaultsAllowMissingKeysToTrue(t *testing.T) {
for
_
,
tc
:=
range
testCases
{
t
.
Run
(
tc
.
name
,
func
(
t
*
testing
.
T
)
{
printFlags
:=
printers
.
GoTemplatePrintFlags
{
printFlags
:=
GoTemplatePrintFlags
{
TemplateArgument
:
&
tc
.
templateArg
,
AllowMissingKeys
:
tc
.
allowMissingKeys
,
}
outputFormat
:=
"template"
p
,
err
:=
printFlags
.
ToPrinter
(
outputFormat
)
if
printer
s
.
IsNoCompatiblePrinterError
(
err
)
{
if
genericclioption
s
.
IsNoCompatiblePrinterError
(
err
)
{
t
.
Fatalf
(
"expected to match template printer for output format %q"
,
outputFormat
)
}
if
err
!=
nil
{
...
...
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