@@ -101,6 +101,10 @@ func TestIdlerAndPriorityClass(t *testing.T) {
101101 _ , err = memberAwait .WaitForAAP (t , "test-idler-aap" , idler .Name , clnt .Resource (aapRes ), true )
102102 require .NoError (t , err )
103103
104+ // Wait for the Claw resource to be idled (spec.idle: true)
105+ _ , err = memberAwait .WaitForClaw (t , "test-idler-claw" , idler .Name , clnt .Resource (clawRes ), true )
106+ require .NoError (t , err )
107+
104108 // Wait for the InferenceService to be deleted - the expected action to idle
105109 // the workload is by deleting the InferenceService that is old enough.
106110 // The pods are idled as well, which is verified in the previous step - after some time,
@@ -181,6 +185,9 @@ func prepareWorkloads(t *testing.T, memberAwait *wait.MemberAwaitility, namespac
181185 servingRuntimeDeployment := createKServeWorkloads (t , memberAwait , "test-idler-kserve" , namespace )
182186 n = n + int (* servingRuntimeDeployment .Spec .Replicas )
183187
188+ clawDeployment := createClaw (t , memberAwait , "test-idler-claw" , namespace )
189+ n = n + int (* clawDeployment .Spec .Replicas )
190+
184191 pods , err := memberAwait .WaitForPods (t , namespace , n , append (additionalPodCriteria , wait .PodRunning (),
185192 wait .WithPodLabel ("idler" , "idler" ))... )
186193 require .NoError (t , err )
@@ -208,6 +215,7 @@ func createDeployment(t *testing.T, memberAwait *wait.MemberAwaitility, namespac
208215}
209216
210217var aapRes = schema.GroupVersionResource {Group : "aap.ansible.com" , Version : "v1alpha1" , Resource : "ansibleautomationplatforms" }
218+ var clawRes = schema.GroupVersionResource {Group : "claw.sandbox.redhat.com" , Version : "v1alpha1" , Resource : "claws" }
211219var servingRuntimeRes = schema.GroupVersionResource {Group : "serving.kserve.io" , Version : "v1alpha1" , Resource : "servingruntimes" }
212220var inferenceServiceRes = schema.GroupVersionResource {Group : "serving.kserve.io" , Version : "v1beta1" , Resource : "inferenceservices" }
213221var dataVolumeRes = schema.GroupVersionResource {Group : "cdi.kubevirt.io" , Version : "v1beta1" , Resource : "datavolumes" }
@@ -244,6 +252,51 @@ func createAAP(t *testing.T, memberAwait *wait.MemberAwaitility, name, namespace
244252 return deployment
245253}
246254
255+ // createClaw creates an instance of claws.claw.sandbox.redhat.com with one deployment owned by this instance
256+ // returns the underlying deployment
257+ func createClaw (t * testing.T , memberAwait * wait.MemberAwaitility , name , namespace string ) * appsv1.Deployment {
258+ clnt , err := dynamic .NewForConfig (memberAwait .RestConfig )
259+ require .NoError (t , err )
260+
261+ claw := clawResource (name )
262+ createdClaw , err := clnt .Resource (clawRes ).Namespace (namespace ).Create (context .TODO (), claw , metav1.CreateOptions {})
263+ require .NoError (t , err )
264+
265+ replicas := int32 (2 )
266+ deployment := & appsv1.Deployment {
267+ ObjectMeta : metav1.ObjectMeta {
268+ Name : name ,
269+ Namespace : namespace ,
270+ },
271+ Spec : appsv1.DeploymentSpec {
272+ Selector : & metav1.LabelSelector {MatchLabels : selectorLabels (name )},
273+ Replicas : & replicas ,
274+ Template : podTemplateSpec (name ),
275+ },
276+ }
277+ err = controllerutil .SetOwnerReference (createdClaw , deployment , scheme .Scheme )
278+ require .NoError (t , err )
279+ err = memberAwait .Create (t , deployment )
280+ require .NoError (t , err )
281+
282+ return deployment
283+ }
284+
285+ func clawResource (name string ) * unstructured.Unstructured {
286+ return & unstructured.Unstructured {
287+ Object : map [string ]interface {}{
288+ "apiVersion" : "claw.sandbox.redhat.com/v1alpha1" ,
289+ "kind" : "Claw" ,
290+ "metadata" : map [string ]interface {}{
291+ "name" : name ,
292+ },
293+ "spec" : map [string ]interface {}{
294+ "idle" : false ,
295+ },
296+ },
297+ }
298+ }
299+
247300func createReplicaSet (t * testing.T , memberAwait * wait.MemberAwaitility , namespace string ) * appsv1.ReplicaSet {
248301 // Standalone ReplicaSet
249302 replicas := int32 (2 )
0 commit comments