Documentation ¶
Index ¶
- Constants
- Variables
- func SerializeObject(obj client.Object, ext string, scheme *runtime.Scheme) ([]byte, error)
- func WriteToFile(absPath string, bytes []byte) error
- type KubeClient
- func (tc *KubeClient) Apply(obj client.Object, opts ...client.PatchOption) error
- func (tc *KubeClient) Create(obj client.Object, opts ...client.CreateOption) error
- func (tc *KubeClient) Delete(obj client.Object, opts ...client.DeleteOption) error
- func (tc *KubeClient) DeleteAllOf(obj client.Object, opts ...client.DeleteAllOfOption) error
- func (tc *KubeClient) Get(name, namespace string, obj client.Object) error
- func (tc *KubeClient) GetDeploymentPod(deploymentName, namespace string, retrytTimeout time.Duration) (*corev1.Pod, error)
- func (tc *KubeClient) List(obj client.ObjectList, opts ...client.ListOption) error
- func (tc *KubeClient) MergePatch(obj client.Object, patch string, opts ...client.PatchOption) error
- func (tc *KubeClient) ObjectTypeMustExist(o client.Object) error
- func (tc *KubeClient) Update(obj client.Object, opts ...client.UpdateOption) error
Constants ¶
const FieldManager = configsync.GroupName + "/nomostest"
FieldManager is the field manager to use when creating, updating, and patching kubernetes objects with kubectl and client-go. This is used to uniquely identify the nomostest client, to enable field pruning and merging. This must be different from the field manager used by config sync, in order to allow both clients to manage different fields on the same objects.
const TestLabel = "nomos-test"
TestLabel is the label added to all test objects, ensuring we can clean up non-ephemeral clusters when tests are complete.
const TestLabelValue = "enabled"
TestLabelValue is the value assigned to the above label.
Variables ¶
var AddTestLabel = core.Label(TestLabel, TestLabelValue)
AddTestLabel is automatically added to objects created or declared with the NT methods, or declared with Repository.Add.
This isn't perfect - objects added via other means (such as kubectl) will bypass this.
Functions ¶
func SerializeObject ¶ added in v1.18.0
SerializeObject converts the object into bytes based on the provided format
func WriteToFile ¶ added in v1.18.0
WriteToFile writes the bytes to the provided path.
Types ¶
type KubeClient ¶
type KubeClient struct { // Context to use, if not specified by the method. Context context.Context // Client to use to manage Kubernetes objects. Client client.Client // Logger for methods to use. Logger *testlogger.TestLogger }
KubeClient wraps client.KubeClient to handle logging, default test-scoped context, and type checking in the schema before API calls.
Includes some advanced helper functions, like Apply, MergePatch, and GetDeploymentPod.
func (*KubeClient) Apply ¶
func (tc *KubeClient) Apply(obj client.Object, opts ...client.PatchOption) error
Apply wraps Patch to perform a server-side apply. All non-nil fields will be adopted by the nomostest field manager.
func (*KubeClient) Create ¶
func (tc *KubeClient) Create(obj client.Object, opts ...client.CreateOption) error
Create is identical to Create defined for clietc.Client, but without requiring Context.
func (*KubeClient) Delete ¶
func (tc *KubeClient) Delete(obj client.Object, opts ...client.DeleteOption) error
Delete is identical to Delete defined for clietc.Client, but without requiring Context.
func (*KubeClient) DeleteAllOf ¶
func (tc *KubeClient) DeleteAllOf(obj client.Object, opts ...client.DeleteAllOfOption) error
DeleteAllOf is identical to DeleteAllOf defined for clietc.Client, but without requiring Context.
func (*KubeClient) Get ¶
func (tc *KubeClient) Get(name, namespace string, obj client.Object) error
Get is identical to Get defined for clietc.Client, except:
1) Context implicitly uses the one created for the test case. 2) name and namespace are strings instead of requiring client.ObjectKey.
Leave namespace as empty string for cluster-scoped resources.
func (*KubeClient) GetDeploymentPod ¶
func (tc *KubeClient) GetDeploymentPod(deploymentName, namespace string, retrytTimeout time.Duration) (*corev1.Pod, error)
GetDeploymentPod is a convenience method to look up the pod for a deployment. It requires that exactly one pod exists, is running, and that the deployment uses label selectors to uniquely identify its pods. This is primarily useful for finding the current pod for a reconciler or other single-replica controller deployments.
func (*KubeClient) List ¶
func (tc *KubeClient) List(obj client.ObjectList, opts ...client.ListOption) error
List is identical to List defined for clietc.Client, but without requiring Context.
func (*KubeClient) MergePatch ¶
func (tc *KubeClient) MergePatch(obj client.Object, patch string, opts ...client.PatchOption) error
MergePatch uses the object to construct a merge patch for the fields provided. All specified fields will be adopted by the nomostest field manager.
func (*KubeClient) ObjectTypeMustExist ¶
func (tc *KubeClient) ObjectTypeMustExist(o client.Object) error
ObjectTypeMustExist returns an error if the passed type is not declared in the client's scheme.
func (*KubeClient) Update ¶
func (tc *KubeClient) Update(obj client.Object, opts ...client.UpdateOption) error
Update is identical to Update defined for clietc.Client, but without requiring Context. All fields will be adopted by the nomostest field manager.