add fieldSelector for kubectl get
This commit is contained in:
@@ -54,6 +54,7 @@ type Builder struct {
|
||||
dir bool
|
||||
|
||||
labelSelector *string
|
||||
fieldSelector *string
|
||||
selectAll bool
|
||||
includeUninitialized bool
|
||||
limitChunks int64
|
||||
@@ -296,6 +297,22 @@ func (b *Builder) LabelSelector(selector string) *Builder {
|
||||
return b
|
||||
}
|
||||
|
||||
// FieldSelectorParam defines a selector that should be applied to the object types to load.
|
||||
// This will not affect files loaded from disk or URL. If the parameter is empty it is
|
||||
// a no-op - to select all resources.
|
||||
func (b *Builder) FieldSelectorParam(s string) *Builder {
|
||||
s = strings.TrimSpace(s)
|
||||
if len(s) == 0 {
|
||||
return b
|
||||
}
|
||||
if b.selectAll {
|
||||
b.errs = append(b.errs, fmt.Errorf("found non-empty field selector %q with previously set 'all' parameter. ", s))
|
||||
return b
|
||||
}
|
||||
b.fieldSelector = &s
|
||||
return b
|
||||
}
|
||||
|
||||
// ExportParam accepts the export boolean for these resources
|
||||
func (b *Builder) ExportParam(export bool) *Builder {
|
||||
b.export = export
|
||||
@@ -350,7 +367,7 @@ func (b *Builder) RequestChunksOf(chunkSize int64) *Builder {
|
||||
|
||||
// SelectEverythingParam
|
||||
func (b *Builder) SelectAllParam(selectAll bool) *Builder {
|
||||
if selectAll && b.labelSelector != nil {
|
||||
if selectAll && (b.labelSelector != nil || b.fieldSelector != nil) {
|
||||
b.errs = append(b.errs, fmt.Errorf("setting 'all' parameter but found a non empty selector. "))
|
||||
return b
|
||||
}
|
||||
@@ -595,7 +612,7 @@ func (b *Builder) visitorResult() *Result {
|
||||
}
|
||||
|
||||
// visit selectors
|
||||
if b.labelSelector != nil {
|
||||
if b.labelSelector != nil || b.fieldSelector != nil {
|
||||
return b.visitBySelector()
|
||||
}
|
||||
|
||||
@@ -635,6 +652,14 @@ func (b *Builder) visitBySelector() *Result {
|
||||
return result
|
||||
}
|
||||
|
||||
var labelSelector, fieldSelector string
|
||||
if b.labelSelector != nil {
|
||||
labelSelector = *b.labelSelector
|
||||
}
|
||||
if b.fieldSelector != nil {
|
||||
fieldSelector = *b.fieldSelector
|
||||
}
|
||||
|
||||
visitors := []Visitor{}
|
||||
for _, mapping := range mappings {
|
||||
client, err := b.mapper.ClientForMapping(mapping)
|
||||
@@ -646,7 +671,7 @@ func (b *Builder) visitBySelector() *Result {
|
||||
if mapping.Scope.Name() != meta.RESTScopeNameNamespace {
|
||||
selectorNamespace = ""
|
||||
}
|
||||
visitors = append(visitors, NewSelector(client, mapping, selectorNamespace, *b.labelSelector, b.export, b.includeUninitialized, b.limitChunks))
|
||||
visitors = append(visitors, NewSelector(client, mapping, selectorNamespace, labelSelector, fieldSelector, b.export, b.includeUninitialized, b.limitChunks))
|
||||
}
|
||||
if b.continueOnError {
|
||||
result.visitor = EagerVisitorList(visitors)
|
||||
|
Reference in New Issue
Block a user