mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-24 08:36:46 +00:00
feat: mock list resources in context (#12380)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
parent
4dc9296eb1
commit
9f70209361
7 changed files with 589 additions and 21 deletions
|
@ -1,6 +1,7 @@
|
||||||
package v1alpha1
|
package v1alpha1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/kyverno/kyverno-json/pkg/apis/policy/v1alpha1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
)
|
)
|
||||||
|
@ -19,4 +20,17 @@ type Context struct {
|
||||||
|
|
||||||
type ContextSpec struct {
|
type ContextSpec struct {
|
||||||
Resources []unstructured.Unstructured `json:"resources,omitempty"`
|
Resources []unstructured.Unstructured `json:"resources,omitempty"`
|
||||||
|
Images []ImageData `json:"images,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type ImageData struct {
|
||||||
|
Image string `json:"image"`
|
||||||
|
ResolvedImage string `json:"resolvedImage"`
|
||||||
|
Registry string `json:"registry"`
|
||||||
|
Repository string `json:"repository"`
|
||||||
|
Tag string `json:"tag,omitempty"`
|
||||||
|
Digest string `json:"digest,omitempty"`
|
||||||
|
ImageIndex v1alpha1.Any `json:"imageIndex,omitempty"`
|
||||||
|
Manifest v1alpha1.Any `json:"manifest,omitempty"`
|
||||||
|
ConfigData v1alpha1.Any `json:"config,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,40 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
spec:
|
spec:
|
||||||
properties:
|
properties:
|
||||||
|
images:
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
config:
|
||||||
|
description: Any can be any type.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
digest:
|
||||||
|
type: string
|
||||||
|
image:
|
||||||
|
type: string
|
||||||
|
imageIndex:
|
||||||
|
description: Any can be any type.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
manifest:
|
||||||
|
description: Any can be any type.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
registry:
|
||||||
|
type: string
|
||||||
|
repository:
|
||||||
|
type: string
|
||||||
|
resolvedImage:
|
||||||
|
type: string
|
||||||
|
tag:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- image
|
||||||
|
- registry
|
||||||
|
- repository
|
||||||
|
- resolvedImage
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
resources:
|
resources:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
|
|
|
@ -38,6 +38,40 @@ spec:
|
||||||
type: object
|
type: object
|
||||||
spec:
|
spec:
|
||||||
properties:
|
properties:
|
||||||
|
images:
|
||||||
|
items:
|
||||||
|
properties:
|
||||||
|
config:
|
||||||
|
description: Any can be any type.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
digest:
|
||||||
|
type: string
|
||||||
|
image:
|
||||||
|
type: string
|
||||||
|
imageIndex:
|
||||||
|
description: Any can be any type.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
manifest:
|
||||||
|
description: Any can be any type.
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
registry:
|
||||||
|
type: string
|
||||||
|
repository:
|
||||||
|
type: string
|
||||||
|
resolvedImage:
|
||||||
|
type: string
|
||||||
|
tag:
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- image
|
||||||
|
- registry
|
||||||
|
- repository
|
||||||
|
- resolvedImage
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
resources:
|
resources:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
|
|
|
@ -103,6 +103,18 @@ ContextSpec
|
||||||
<td>
|
<td>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>images</code><br/>
|
||||||
|
<em>
|
||||||
|
<a href="#cli.kyverno.io/v1alpha1.ImageData">
|
||||||
|
[]ImageData
|
||||||
|
</a>
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -531,6 +543,127 @@ github.com/kyverno/kyverno-json/pkg/apis/policy/v1alpha1.Any
|
||||||
<td>
|
<td>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>images</code><br/>
|
||||||
|
<em>
|
||||||
|
<a href="#cli.kyverno.io/v1alpha1.ImageData">
|
||||||
|
[]ImageData
|
||||||
|
</a>
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<hr />
|
||||||
|
<h3 id="cli.kyverno.io/v1alpha1.ImageData">ImageData
|
||||||
|
</h3>
|
||||||
|
<p>
|
||||||
|
(<em>Appears on:</em>
|
||||||
|
<a href="#cli.kyverno.io/v1alpha1.ContextSpec">ContextSpec</a>)
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
<table class="table table-striped">
|
||||||
|
<thead class="thead-dark">
|
||||||
|
<tr>
|
||||||
|
<th>Field</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>image</code><br/>
|
||||||
|
<em>
|
||||||
|
string
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>resolvedImage</code><br/>
|
||||||
|
<em>
|
||||||
|
string
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>registry</code><br/>
|
||||||
|
<em>
|
||||||
|
string
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>repository</code><br/>
|
||||||
|
<em>
|
||||||
|
string
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>tag</code><br/>
|
||||||
|
<em>
|
||||||
|
string
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>digest</code><br/>
|
||||||
|
<em>
|
||||||
|
string
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>imageIndex</code><br/>
|
||||||
|
<em>
|
||||||
|
github.com/kyverno/kyverno-json/pkg/apis/policy/v1alpha1.Any
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>manifest</code><br/>
|
||||||
|
<em>
|
||||||
|
github.com/kyverno/kyverno-json/pkg/apis/policy/v1alpha1.Any
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<code>config</code><br/>
|
||||||
|
<em>
|
||||||
|
github.com/kyverno/kyverno-json/pkg/apis/policy/v1alpha1.Any
|
||||||
|
</em>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
|
@ -162,6 +162,36 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>images</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="#cli-kyverno-io-v1alpha1-ImageData">
|
||||||
|
<span style="font-family: monospace">[]ImageData</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -1064,6 +1094,323 @@ This field is deprecated, use <code>metadata.name</code> instead</p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>images</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="#cli-kyverno-io-v1alpha1-ImageData">
|
||||||
|
<span style="font-family: monospace">[]ImageData</span>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<H3 id="cli-kyverno-io-v1alpha1-ImageData">ImageData
|
||||||
|
</H3>
|
||||||
|
|
||||||
|
|
||||||
|
<p>
|
||||||
|
(<em>Appears in:</em>
|
||||||
|
<a href="#cli-kyverno-io-v1alpha1-ContextSpec">ContextSpec</a>)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p></p>
|
||||||
|
|
||||||
|
|
||||||
|
<table class="table table-striped">
|
||||||
|
<thead class="thead-dark">
|
||||||
|
<tr>
|
||||||
|
<th>Field</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>image</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="font-family: monospace">string</span>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>resolvedImage</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="font-family: monospace">string</span>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>registry</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="font-family: monospace">string</span>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>repository</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="font-family: monospace">string</span>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>tag</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="font-family: monospace">string</span>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>digest</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="font-family: monospace">string</span>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>imageIndex</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="font-family: monospace">github.com/kyverno/kyverno-json/pkg/apis/policy/v1alpha1.Any</span>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>manifest</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="font-family: monospace">github.com/kyverno/kyverno-json/pkg/apis/policy/v1alpha1.Any</span>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><code>config</code>
|
||||||
|
|
||||||
|
<span style="color:blue;"> *</span>
|
||||||
|
|
||||||
|
</br>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span style="font-family: monospace">github.com/kyverno/kyverno-json/pkg/apis/policy/v1alpha1.Any</span>
|
||||||
|
|
||||||
|
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
|
@ -119,16 +119,7 @@ func (cp *contextProvider) ListResources(apiVersion, resource, namespace string)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
resourceInteface := cp.getResourceClient(groupVersion, resource, namespace)
|
||||||
var resourceInteface dynamic.ResourceInterface
|
|
||||||
|
|
||||||
client := cp.dclient.Resource(groupVersion.WithResource(resource))
|
|
||||||
if namespace != "" {
|
|
||||||
resourceInteface = client.Namespace(namespace)
|
|
||||||
} else {
|
|
||||||
resourceInteface = client
|
|
||||||
}
|
|
||||||
|
|
||||||
return resourceInteface.List(context.TODO(), metav1.ListOptions{})
|
return resourceInteface.List(context.TODO(), metav1.ListOptions{})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,19 +128,19 @@ func (cp *contextProvider) GetResource(apiVersion, resource, namespace, name str
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
resourceInteface := cp.getResourceClient(groupVersion, resource, namespace)
|
||||||
var resourceInteface dynamic.ResourceInterface
|
|
||||||
|
|
||||||
client := cp.dclient.Resource(groupVersion.WithResource(resource))
|
|
||||||
if namespace != "" {
|
|
||||||
resourceInteface = client.Namespace(namespace)
|
|
||||||
} else {
|
|
||||||
resourceInteface = client
|
|
||||||
}
|
|
||||||
|
|
||||||
return resourceInteface.Get(context.TODO(), name, metav1.GetOptions{})
|
return resourceInteface.Get(context.TODO(), name, metav1.GetOptions{})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cp *contextProvider) ParseImageReference(image string) (imagedataloader.ImageReference, error) {
|
func (cp *contextProvider) ParseImageReference(image string) (imagedataloader.ImageReference, error) {
|
||||||
return imagedataloader.ParseImageReference(image)
|
return imagedataloader.ParseImageReference(image)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cp *contextProvider) getResourceClient(groupVersion schema.GroupVersion, resource string, namespace string) dynamic.ResourceInterface {
|
||||||
|
client := cp.dclient.Resource(groupVersion.WithResource(resource))
|
||||||
|
if namespace != "" {
|
||||||
|
return client.Namespace(namespace)
|
||||||
|
} else {
|
||||||
|
return client
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package policy
|
package policy
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
"github.com/kyverno/kyverno/pkg/imageverification/imagedataloader"
|
"github.com/kyverno/kyverno/pkg/imageverification/imagedataloader"
|
||||||
kerrors "k8s.io/apimachinery/pkg/api/errors"
|
kerrors "k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
||||||
|
@ -55,7 +57,20 @@ func (cp *FakeContextProvider) ParseImageReference(image string) (imagedataloade
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cp *FakeContextProvider) ListResources(apiVersion, resource, namespace string) (*unstructured.UnstructuredList, error) {
|
func (cp *FakeContextProvider) ListResources(apiVersion, resource, namespace string) (*unstructured.UnstructuredList, error) {
|
||||||
panic("not implemented")
|
gv, err := schema.ParseGroupVersion(apiVersion)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
gvr := gv.WithResource(resource)
|
||||||
|
resources := cp.resources[gvr.String()]
|
||||||
|
if resources == nil {
|
||||||
|
return nil, kerrors.NewBadRequest(fmt.Sprintf("%s resource not found", gvr.GroupResource()))
|
||||||
|
}
|
||||||
|
var out unstructured.UnstructuredList
|
||||||
|
for _, obj := range resources[namespace] {
|
||||||
|
out.Items = append(out.Items, *obj)
|
||||||
|
}
|
||||||
|
return &out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cp *FakeContextProvider) GetResource(apiVersion, resource, namespace, name string) (*unstructured.Unstructured, error) {
|
func (cp *FakeContextProvider) GetResource(apiVersion, resource, namespace, name string) (*unstructured.Unstructured, error) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue