You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When Same Default Kubernetes client is used to persist CRD data along with Shared Informer usage its trying to locate the model class for the CRD and expecting sundrio builder pattern to exist on the model class
Error Output : Exception in thread "main" io.fabric8.kubernetes.client.KubernetesClientException: Cannot edit com.oracle.k8sedit.api.API with visitors, no builder was found at io.fabric8.kubernetes.client.ResourceHandlerImpl.edit(ResourceHandlerImpl.java:59) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableImpl.acceptVisitors(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableImpl.java:245) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.lambda$getItems$1(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:87) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.getItems(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:89) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.getOperations(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:93) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.get(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:196) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.get(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:54) at com.oracle.k8sedit.TestK8S.extracted(TestK8S.java:69) at com.oracle.k8sedit.TestK8S.main(TestK8S.java:32)
Run TestK8S2.java it will use Default Kubernetes client to persist sample api data in resources folder and it will be success
Run TestK8S.java . Now this will first try to print the api data using informers and then when it try to persist the sample data using Default Kubernetes client it will fail giving above mentioned error
Expected behavior
Defaultkubernetesclient should not look for model classes and should persist the generic resource like in TestK8S code.
Runtime
Kubernetes (vanilla)
Kubernetes API Server version
1.24
Environment
Windows, Linux
Fabric8 Kubernetes Client Logs
Mar 30, 2023 4:46:11 PM com.oracle.k8sedit.AbstractCRDRepository startSyncIfNeeded
INFO: API sync started
Mar 30, 2023 4:46:13 PM com.oracle.k8sedit.InformerResourceHandler waitForSync
INFO: Sync fortype com.oracle.k8sedit.api.API completed
Mar 30, 2023 4:46:15 PM com.oracle.k8sedit.InformerResourceHandler establishWatch
INFO: Watch established fortype com.oracle.k8sedit.api.API.
API{metadata=ObjectMeta(annotations=null, clusterName=null, creationTimestamp=2023-03-30T11:15:54Z, deletionGracePeriodSeconds=null, deletionTimestamp=null, finalizers=[], generateName=custom-api3, generation=1, labels={Ola=adiyeee}, managedFields=[ManagedFieldsEntry(apiVersion=test.oracle.com/v1, fieldsType=FieldsV1, fieldsV1=FieldsV1(additionalProperties={f:metadata={f:generateName={}, f:labels={.={}, f:Ola={}}}, f:spec={.={}, f:api-id={}, f:api-name={}, f:api-version={}}}), manager=okhttp, operation=Update, subresource=null, time=2023-03-30T11:15:54Z, additionalProperties={})], name=custom-api3sgcj4, namespace=dx-prod, ownerReferences=[], resourceVersion=109818214, selfLink=null, uid=b2397510-a80c-4809-9107-5df5576c5f64, additionalProperties={}), spec=APISpec{apiName='custom-api3', apiId='custom-103', apiVersion='v1'}}
API{metadata=ObjectMeta(annotations=null, clusterName=null, creationTimestamp=2023-03-30T11:15:54Z, deletionGracePeriodSeconds=null, deletionTimestamp=null, finalizers=[], generateName=null, generation=1, labels={Ola=adiyeee}, managedFields=[ManagedFieldsEntry(apiVersion=test.oracle.com/v1, fieldsType=FieldsV1, fieldsV1=FieldsV1(additionalProperties={f:metadata={f:labels={.={}, f:Ola={}}}, f:spec={.={}, f:api-id={}, f:api-name={}, f:api-version={}}}), manager=okhttp, operation=Update, subresource=null, time=2023-03-30T11:15:54Z, additionalProperties={})], name=sundrio-test-api4, namespace=dx-prod, ownerReferences=[], resourceVersion=109818215, selfLink=null, uid=5b60d791-dad1-467e-910f-388e0f0c1aa6, additionalProperties={}), spec=APISpec{apiName='sundrio-test-api', apiId='sndr-001', apiVersion='v1'}}
API{metadata=ObjectMeta(annotations=null, clusterName=null, creationTimestamp=2023-03-30T11:15:55Z, deletionGracePeriodSeconds=null, deletionTimestamp=null, finalizers=[], generateName=null, generation=1, labels={Ola=adiyeee}, managedFields=[ManagedFieldsEntry(apiVersion=test.oracle.com/v1, fieldsType=FieldsV1, fieldsV1=FieldsV1(additionalProperties={f:metadata={f:labels={.={}, f:Ola={}}}, f:spec={.={}, f:api-id={}, f:api-name={}, f:api-version={}}}), manager=okhttp, operation=Update, subresource=null, time=2023-03-30T11:15:55Z, additionalProperties={})], name=sundrio-test-api5, namespace=dx-prod, ownerReferences=[], resourceVersion=109818217, selfLink=null, uid=a063d531-d76c-47fe-a683-6873f0d7fbe2, additionalProperties={}), spec=APISpec{apiName='sundrio-test-api', apiId='sndr-001', apiVersion='v1'}}
Exception in thread "main" io.fabric8.kubernetes.client.KubernetesClientException: Cannot edit com.oracle.k8sedit.api.API with visitors, no builder was found
at io.fabric8.kubernetes.client.ResourceHandlerImpl.edit(ResourceHandlerImpl.java:59)
at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableImpl.acceptVisitors(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableImpl.java:245)
at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.lambda$getItems$1(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:87)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.getItems(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:89)
at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.getOperations(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:93)
at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.get(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:196)
at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.get(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:54)
at com.oracle.k8sedit.TestK8S.extracted(TestK8S.java:69)
at com.oracle.k8sedit.TestK8S.main(TestK8S.java:32)
Additional context
No response
The text was updated successfully, but these errors were encountered:
There are a couple things going on here. The specific error with not finding a builder addressed in later versions - the fix for #4590 removed the requirement of using a builder for simple operations.
Run TestK8S.java . Now this will first try to print the api data using informers and then when it try to persist the sample data using Default Kubernetes client it will fail giving above mentioned error
With older versions a side effect of using the typed dsl was the registration of the type with the deserialization logic. That no longer happens, so your later deserialization would use a generic type instead.
This issue has been automatically marked as stale because it has not had any activity since 90 days. It will be closed if no further activity occurs within 7 days. Thank you for your contributions!
Describe the bug
When Default Kubernetes client is used to persist CRD data everything is working fine.
Success Output :
GenericKubernetesResource(apiVersion=test.oracle.com/v1, kind=API, metadata=ObjectMeta(annotations=null, clusterName=null, creationTimestamp=2023-03-30T11:15:54Z, deletionGracePeriodSeconds=null, deletionTimestamp=null, finalizers=[], generateName=custom-api3, generation=1, labels={Ola=adiyeee}, managedFields=[ManagedFieldsEntry(apiVersion=test.oracle.com/v1, fieldsType=FieldsV1, fieldsV1=FieldsV1(additionalProperties={f:metadata={f:generateName={}, f:labels={.={}, f:Ola={}}}, f:spec={.={}, f:api-id={}, f:api-name={}, f:api-version={}}}), manager=okhttp, operation=Update, subresource=null, time=2023-03-30T11:15:54Z, additionalProperties={})], name=custom-api3sgcj4, namespace=dx-prod, ownerReferences=[], resourceVersion=109818214, selfLink=null, uid=b2397510-a80c-4809-9107-5df5576c5f64, additionalProperties={}), additionalProperties={spec={api-id=custom-103, api-name=custom-api3, api-version=v1}})
When Same Default Kubernetes client is used to persist CRD data along with Shared Informer usage its trying to locate the model class for the CRD and expecting sundrio builder pattern to exist on the model class
Error Output :
Exception in thread "main" io.fabric8.kubernetes.client.KubernetesClientException: Cannot edit com.oracle.k8sedit.api.API with visitors, no builder was found at io.fabric8.kubernetes.client.ResourceHandlerImpl.edit(ResourceHandlerImpl.java:59) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableImpl.acceptVisitors(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableImpl.java:245) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.lambda$getItems$1(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:87) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.getItems(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:89) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.getOperations(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:93) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.get(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:196) at io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.get(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:54) at com.oracle.k8sedit.TestK8S.extracted(TestK8S.java:69) at com.oracle.k8sedit.TestK8S.main(TestK8S.java:32)
Fabric8 Kubernetes Client version
5.12.4
Steps to reproduce
Expected behavior
Defaultkubernetesclient should not look for model classes and should persist the generic resource like in TestK8S code.
Runtime
Kubernetes (vanilla)
Kubernetes API Server version
1.24
Environment
Windows, Linux
Fabric8 Kubernetes Client Logs
Additional context
No response
The text was updated successfully, but these errors were encountered: