mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-06 03:33:26 +00:00
kubectl delete resource : remove all resources
This commit is contained in:
@@ -42,7 +42,8 @@ type Builder struct {
|
||||
stream bool
|
||||
dir bool
|
||||
|
||||
selector labels.Selector
|
||||
selector labels.Selector
|
||||
selectAll bool
|
||||
|
||||
resources []string
|
||||
|
||||
@@ -171,6 +172,10 @@ func (b *Builder) SelectorParam(s string) *Builder {
|
||||
if selector.Empty() {
|
||||
return b
|
||||
}
|
||||
if b.selectAll {
|
||||
b.errs = append(b.errs, fmt.Errorf("found non empty selector %q with previously set 'all' parameter. ", s))
|
||||
return b
|
||||
}
|
||||
return b.Selector(selector)
|
||||
}
|
||||
|
||||
@@ -202,19 +207,29 @@ func (b *Builder) RequireNamespace() *Builder {
|
||||
return b
|
||||
}
|
||||
|
||||
// SelectEverythingParam
|
||||
func (b *Builder) SelectAllParam(selectAll bool) *Builder {
|
||||
if selectAll && b.selector != nil {
|
||||
b.errs = append(b.errs, fmt.Errorf("setting 'all' parameter but found a non empty selector. "))
|
||||
return b
|
||||
}
|
||||
b.selectAll = selectAll
|
||||
return b
|
||||
}
|
||||
|
||||
// ResourceTypeOrNameArgs indicates that the builder should accept one or two arguments
|
||||
// of the form `(<type1>[,<type2>,...]|<type> <name>)`. When one argument is received, the types
|
||||
// provided will be retrieved from the server (and be comma delimited). When two arguments are
|
||||
// received, they must be a single type and name. If more than two arguments are provided an
|
||||
// error is set.
|
||||
func (b *Builder) ResourceTypeOrNameArgs(args ...string) *Builder {
|
||||
// error is set. The allowEmptySelector permits to select all the resources (via Everything func).
|
||||
func (b *Builder) ResourceTypeOrNameArgs(allowEmptySelector bool, args ...string) *Builder {
|
||||
switch len(args) {
|
||||
case 2:
|
||||
b.name = args[1]
|
||||
b.ResourceTypes(SplitResourceArgument(args[0])...)
|
||||
case 1:
|
||||
b.ResourceTypes(SplitResourceArgument(args[0])...)
|
||||
if b.selector == nil {
|
||||
if b.selector == nil && allowEmptySelector {
|
||||
b.selector = labels.Everything()
|
||||
}
|
||||
case 0:
|
||||
@@ -291,6 +306,10 @@ func (b *Builder) visitorResult() *Result {
|
||||
return &Result{err: errors.NewAggregate(b.errs)}
|
||||
}
|
||||
|
||||
if b.selectAll {
|
||||
b.selector = labels.Everything()
|
||||
}
|
||||
|
||||
// visit selectors
|
||||
if b.selector != nil {
|
||||
if len(b.name) != 0 {
|
||||
|
@@ -315,7 +315,7 @@ func TestResourceByName(t *testing.T) {
|
||||
t.Errorf("unexpected non-error")
|
||||
}
|
||||
|
||||
b.ResourceTypeOrNameArgs("pods", "foo")
|
||||
b.ResourceTypeOrNameArgs(true, "pods", "foo")
|
||||
|
||||
err := b.Do().IntoSingular(&singular).Visit(test.Handle)
|
||||
if err != nil || !singular || len(test.Infos) != 1 {
|
||||
@@ -341,7 +341,7 @@ func TestResourceByNameAndEmptySelector(t *testing.T) {
|
||||
})).
|
||||
NamespaceParam("test").
|
||||
SelectorParam("").
|
||||
ResourceTypeOrNameArgs("pods", "foo")
|
||||
ResourceTypeOrNameArgs(true, "pods", "foo")
|
||||
|
||||
singular := false
|
||||
infos, err := b.Do().IntoSingular(&singular).Infos()
|
||||
@@ -378,7 +378,7 @@ func TestSelector(t *testing.T) {
|
||||
t.Errorf("unexpected non-error")
|
||||
}
|
||||
|
||||
b.ResourceTypeOrNameArgs("pods,service")
|
||||
b.ResourceTypeOrNameArgs(true, "pods,service")
|
||||
|
||||
err := b.Do().IntoSingular(&singular).Visit(test.Handle)
|
||||
if err != nil || singular || len(test.Infos) != 3 {
|
||||
@@ -408,7 +408,7 @@ func TestSingleResourceType(t *testing.T) {
|
||||
b := NewBuilder(latest.RESTMapper, api.Scheme, fakeClient()).
|
||||
SelectorParam("a=b").
|
||||
SingleResourceType().
|
||||
ResourceTypeOrNameArgs("pods,services")
|
||||
ResourceTypeOrNameArgs(true, "pods,services")
|
||||
|
||||
if b.Do().Err() == nil {
|
||||
t.Errorf("unexpected non-error")
|
||||
@@ -498,7 +498,7 @@ func TestListObject(t *testing.T) {
|
||||
})).
|
||||
SelectorParam("a=b").
|
||||
NamespaceParam("test").
|
||||
ResourceTypeOrNameArgs("pods").
|
||||
ResourceTypeOrNameArgs(true, "pods").
|
||||
Flatten()
|
||||
|
||||
obj, err := b.Do().Object()
|
||||
@@ -531,7 +531,7 @@ func TestListObjectWithDifferentVersions(t *testing.T) {
|
||||
})).
|
||||
SelectorParam("a=b").
|
||||
NamespaceParam("test").
|
||||
ResourceTypeOrNameArgs("pods,services").
|
||||
ResourceTypeOrNameArgs(true, "pods,services").
|
||||
Flatten().
|
||||
Do().Object()
|
||||
|
||||
|
Reference in New Issue
Block a user