- Fix #5117: corrected the trace httpclient logging of large response bodies
- Fix #5125: TLS 1.3 only should be supported
- Fix #5126: fallback to changeit only if null/empty does not work
- Fix #5145: [java-generator] handle
additionalProperties: true
emitting a field of typeAnyType
- Fix #5152: preventing JDK WebSocket errors from terminating watches and improving watch termination and its logging
- Fix #5164: [java-generator] handle more special characters in field names
- Fix #4989: Upgrade Tekton Model to v0.47.0
- Fix #5107: The Camel-k extension has been deprecated in favor of the official release of the generated one
- Fix #4829: Gradle Plugin for Java Generation from CRD
- Fix #4911: Config/RequestConfig.scaleTimeout has been deprecated along with Scalable.scale(count, wait) and DeployableScalableResource.deployLatest(wait). withTimeout may be called before the operation to control the timeout.
- Fix #4911: Config/RequestConfig.websocketTimeout has been removed. Config/RequestConfig.requestTimeout will be used for websocket connection timeouts.
- Fix #4911: HttpClient api/building changes - writeTimeout has been removed, readTimeout has moved to the HttpRequest
- Fix #4662: removed deprecated classes/methods: ReflectUtils, ReplaceValueStream, ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable, ResourceCompare, and Serialization methods taking parameters
- Fix #4662: deprecated serialization static logic: several IOHelpers methods, Serialization methods, such as access to the static jsonMapper. Please use KubernetesSerialization methods instead.
- Fix #4662: deprecated Helper.getAnnotationValue, use HasMetadata methods instead.
- Fix #5125: support for TLSv1.3 is now enabled by default
- Fix #5125: usage of TlsVersion.TLS_1_1, TLS_1_0, and SSL_3_0 have been deprecated
Fix #5121: RequestConfig is propagated to derived HttpClient instances
- Fix #5095: moving the enforcement of requestTimeout
- Fix #5100: lessened the level of the non-conflicting httpclient implementation warning
- Fix #5102: wait on scale to 0 was not completing
- Fix #5112: Expose put method with InputStream argument in HttpRequest class
- Fix #4793: (java-generator) Fix broken POJO generation when two schema properties collide into a single field name
- Fix #4802: config.refresh() erases token specified when building initial config
- Fix #4910: Pod file upload will now detect if it's not completely sent to the api server
- Fix #4963: Openshift Client return 403 when use websocket
- Fix #4985: triggering the immediate cleanup of the okhttp idle task
- Fix #4988: Ensuring that previous requests are closed before retry
- Fix #4993: Quantity class should have @JsonIgnore on the additionalProperties parameter
- Fix #5000: Remove clashing
v1alpha
apigroup packages inistio-model-v1beta1
- Fix #5002: Jetty response completion accounts for header processing
- Fix #5009: addressing issue with serialization of wrapped polymorphic types
- Fix #5015: executing resync as a locking operation to ensure resync event ordering
- Fix #5020: updating the resourceVersion on a delete with finalizers
- Fix #5033: port forwarding for clients other than okhttp needs to specify the subprotocol
- Fix #5035: allowed client.authentication.k8s.io/v1 to work for the ExecConfig
- Fix #5036: Better websocket error handling for protocol / client enforced errors, also update frame/message limits
- Fix #5044: disable Vert.x instance file caching
- Fix #5059: Vert.x InputStreamReader uses an empty Buffer sentinel to avoid NPE
- Fix #5085: Vert.x HTTP Client InputStreamReadStream works in Native mode
- Fix #4434: Update CronJobIT to use
batch/v1
CronJob instead - Fix #4477: exposing LeaderElector.release to force an elector to give up the lease
- Fix #4935: improve HTTP client implementation selection messages
- Fix #4975: exposing scale operations for all Resources
- Fix #4992: Optimize Quantity parsing to avoid regex overhead
- Fix #4998: removing the internal usage of the Serialization yaml mapper
- Fix #5005: status operations use the context
subresource
setting - Fix #5022: adding additional buffering to ExecWatchInputStream
- Fix #5052: add Quantity.fromNumericalAmount, the inverse of getNumericalAmount
- Fix #5073:
NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl
extendsServerSideApplicable
- Fix #5080: minimizing debug logs related to the backoff interval
- Fix #5006: Bump BouncyCastle to 1.72
- Fix #5006: Use BouncyCastle JDK 1.8 compatible jars
- Fix #5037: OkHttp-specific logging interceptor replacement. Introducing a generic HTTP interceptor to log HTTP and WS requests.
- Fix #5041: exposed Client.raw methods for arbitrary calls
- Fix #4875: Removed unused options from the java-generator
- Fix #4910: all Pod file uploads require commons-compress
- Fix #4998: Serialization.yamlMapper and Serialization.clearYamlMapper have been deprecated
- Fix #4960: NPE in OpenIDConnectionUtils if
idp-certificate-authority-data
absent in auth-provider config - Fix #4970: OpenShiftOAuthInterceptor should not refresh on
403
response code - Fix #4981: Prevent StackOverflowError in Vert.x HttpClient caused by fast InputStream buffer extraction
- Fix #4723: (java-generator) Fix a race in the use of JavaParser hitting large CRDs
- Fix #4784: json-schema draft-05 is a (404). Updating to draft-07 (
http://json-schema.org/draft-07/schema#
) - Fix #4791: handle the
NullPointerException
inThread.currentThread().getContextClassLoader()
- Fix #4794: improving the semantics of manually calling informer stop
- Fix #4797: OkHttpClientFactory.additionalConfig can be used to override the default OkHttp Dispatcher
- Fix #4798: fix leader election release on cancel
- Fix #4803: Windows .kube/config file with spaces in command can be deserialized
- Fix #4815: (java-generator) create target download directory if it doesn't exist
- Fix #4818: (java-generator) Escape
*/
in generated JavaDocs - Fix #4823: (java-generator) handle special characters in field names
- Fix #4832: NO_PROXY can match cidr with bit suffix <10
- Fix #4846: allowed for pod read / copy operations to distinguish when the target doesn't exist
- Fix #4851: adding buffer cloning to ensure buffers cannot be modified after sending
- Fix #4885: addresses a potential hang in the jdk client with exec stream reading
- Fix #4888: narrowing where the 0 initial list resourceVersion is used for informers - in particular if a limit is set or initialState is used, then we should not use 0. Additionally for the informOnCondition / wait methods we'll also not use 0 - it's not expected that the user should test any state prior to the latest.
- Fix #4891: address vertx not completely reading exec streams
- Fix #4899: BuildConfigs.instantiateBinary().fromFile() does not time out
- Fix #4908: using the response headers in the vertx response
- Fix #4910: addressing inconsistent behavior with pod exec operations
- Fix #4923: addressing inconsistent behavior with pod exec operations
- Fix #4928: allows non-okhttp clients to handle invalid status
- Fix #4931: using coarse grain locking for all mock server operations
- Fix #4947: typo in HttpClient.Factory scoring system logic
- Fix #4954: disabling expect continue support by default in the jdk client
- Fix #4675: adding a fully client side timeout for informer watches
- Fix #3805: DeletionTimestamp and Finalizer support in Mock server.
- Fix #4638: adding a way to set the full object meta on a leadership election lock, this can be used to set owner references
- Fix #4644: generate CRDs in parallel and optimize code
- Fix #4659: added a generic support(apiversion, kind) method in addition to the class based check
- Fix #4724: Private configuration classes cause trouble with Java native (reflection)
- Fix #4739: honor optimistic concurrency control semantics in the mock server for
PUT
andPATCH
requests. - Fix #4747: migrate to SnakeYAML Engine
- Fix #4788: moved retry logic into the standard client so that it applies to all requests, including websockets
- Fix #4795: don't print warning message when service account token property is unset
- Fix #4800: (java-generator) Reflect the
scope
field when implementing theNamespaced
interface - Fix #4853: adding a wait on the pod for log operations
- Fix #4848: Vert.x async DNS resolver is disabled
- Fix #4863: default HttpClient retry logic to 100ms interval
- Fix #4863: default HttpClient retry logic to 10 attempts
- Fix #4865: (java-generator) performance improvements
- Fix #4873: Update all samples in
kubernetes-examples/
module to use up to date code - Fix #4906: URLFromIngressImpl considers Ingress in
networking.k8s.io
apiGroup while resolving Ingress
- Fix #4655: Upgrade Fabric8 Kubernetes Model to Kubernetes v1.26.0
- Fix #4804: Update Kubernetes Model GatewayApi to v0.6.0
- Fix #4804: Update CertManager Model to v1.11.0
- Fix #4758: added support for pod ephemeral container operations
- Fix #4929: added support for kustomize api v1beta1
- Fix #4708: The signature of the Interceptor methods changed to pass the full HttpRequest, rather than just the headers, and explicitly pass request tags - in particular the RequestConfig. To simplify authentication concerns the following fields have been removed from RequestConfig: username, password, oauthToken, and oauthTokenProvider. Not all HttpClient implementation support setting the connectionTimeout at a request level, thus it was removed from the RequestConfig as well.
- Fix #4659: The SupportTestingClient interface has been deprecated. Please use one of the supports methods or getApiGroup to determine what is available on the api server.
- Fix #4802: to ease developer burden, and potentially bad behavior with the vertx client, the callbacks for Watcher and ResourceEventHandler will no longer be made by an HttpClient thread, but rather from the thread pool associated with the KubernetesClient. Please ensure that if you are customizing the Executor supplied to the client that it has sufficient threads to handle these callbacks.
- Fix #4825: removed or deprecated/moved methods that are unrelated to the rolling timeout from ImageEditReplacePatchable. Deprecated rollout methods for timeout and edit - future versions will not support
- Fix #4826: removed RequestConfig upload connection and rolling timeouts. Both were no longer used with no plans to re-introduce their usage.
- Fix #4861: several breaking changes related to resourceVersion handling and the replace operation:
replace
is deprecated, you should useupdate
instead. If you set the resourceVersion to null it will not be optimistically locked.createOrReplace
is deprecated, you should use server side apply instead.edit
uses now optimistic locking by default. To disable locking you should change your methods to follow this pattern:.edit(pod -> new PodBuilder(pod).editMetadata().withResourceVersion(null)//...
- JSON patch methods using an item for the diff generation such as edit or patch will no longer omit the resourceVersion in the patch. If you want the patch to be unlocked, then set the resourceVersion to null on the item to be patched.
- internal logic to mimic an apply that modify an item prior to a JSON patch is deprecated - you should instead build the item to be patched off of base version, such as with the edit method.
- Fix #4875: Deprecated all the java-generator options identified for deletion in a following release
- Fix #4795: don't print warning message when service account token property is unset
- Fix #4809: VertxHttpClientBuilder is public
- Fix #4811: HttpClient.Factory instances can be prioritized
- Fix #4249: prevent the over-logging of errors after the websocket has been closed
- Fix #4563: fallback to current class-loader when looking for HttpClient implementations
- Fix #4650: allowing for comments at the end of certificate files
- Fix #4668: use acme.cert-manager.io ApiGroup for Orders and Challenges
- Fix #4726: prevent the over-logging of errors after the websocket has been closed
- Fix #4729: ensuring
CompletableFuture
cancel will close / cancel the underlying resource - Fix #4735: StandardHttpClient sends Expect 100-continue header value
- Fix #4622: Java Generator Maven Plugin can use CRDs from remote URLs
- Fix #4633: provided inline access to all RunConfig builder methods via run().withNewRunConfig()
- Fix #4637: all pod operations that require a ready / succeeded pod may use withReadyWaitTimeout, which supersedes withLogWaitTimeout.
- Fix #4654: Fix GatewayClass to not implement Namespaced interface
- Fix #4670: the initial informer listing will use a resourceVersion of 0 to utilize the watch cache if possible. This means that the initial cache state when the informer is returned, or the start future is completed, may not be as fresh as the previous behavior which forced the latest version. It will of course become more consistent as the watch will already have been established.
- Fix #4694: [java-generator] Option to override the package name of the generated code.
- Fix #4698: changes were made to improve authentication logic. If a username and password are specified and you are using a base KuberentesClient, then that will always be used as a basic auth header value. If a username and password are specified and you are using an OpenShiftClient, then a token will still be used if present, but upon an auth failure the username and password will be used to obtain a fresh token. If a new token is obtained it will be saved in the kubeconfig if one were used to create the Config.
- Fix #4720: interceptors close any response body if the response is not a 2xx response.
- Fix #4734: @KubernetesTest annotation can be used in base test classes
- Fix #4734: @KubernetesTest creates an ephemeral Namespace optionally (can opt-out)
- Fix #2764: Vert.x HttpClient implementation
- Fix #3972: deprecated Parameterizable and methods on Serialization accepting parameters - that was only needed as a workaround for non-string parameters. You should instead include those parameter values in the map passed to processLocally.
- Fix #3972: OpenShiftClient.load will no longer implicitly process templates. Use OpenShiftClient.templates().load instead.
- Fix #3972: WARNING: future client versions will not provide the static yaml and json ObjectMappers on Serialization.
- Fix #4574: fromServer has been deprecated - it no longer needs to be called. All get() operations will fetch the resource(s) from the api server. If you need the context item that was passed in from a resource, load, or resourceList methods, use the item or items method.
- Fix #4633: client.run().withRunConfig was deprecated. Use withNewRunConfig instead.
- Fix #4663: Config.maxConcurrentRequests and Config.maxConcurrentRequestsPerHost will no longer be used. Instead they will default to unlimited for all clients. Due to the ability of the fabric8 client to start long running requests (either websocket or regular http) and how this is treated by the underlying clients you can easily exhaust these values and enter a state where the client is unresponsive without any additional information on what is occurring.
- Fix #4769: java-generator Fix encoding of empty strings as valid enums
- Fix #4666: fixed okhttp calls not explicitly closing
- Fix #4673: fixes a regression in sharing the OpenShiftOAuthInterceptor token
- Fix #4677: java-generator Fix default encoding of enums
- Fix #4159: ensure the token refresh obeys how the Config was created
- Fix #4447:
isSupported
doesn't check all the applicable API Groups - Fix #4473: correcting backoff interval regression introduced in #4365 (6.2.0)
- Fix #4491: added a more explicit shutdown exception for okhttp
- Fix #4509: do not reuse KeyFactory instance after a failure
- Fix #4510: Fix StackOverflow on cyclic references involving collections
- Fix #4534: Java Generator CLI default handling of skipGeneratedAnnotations
- Fix #4535: The shell command string will now have single quotes sanitized
- Fix #4543: (Java Generator) additionalProperties JsonAny setter method generated as setAdditionalProperty
- Fix #4590: only using a builder if there are visitors
- Fix #4540: treating GenericKubernetesResource and RawExtension as buildable
- Fix #4547: preventing timing issues with leader election cancel
- Fix #4569: fixing jdk httpclient regression with 0 timeouts
- Fix #4581: "float" types in spec for CRD generator are supported
- Fix #4610: inconsistent additionalPrinterColumns jsonPath
- Fix #4641: fixed regression with missing initial watch event
- Fix #4014: added support for OpenShift Build log version.
- Fix #4201: Removed sendAsync from the individual http client implementations
- Fix #4355: for exec, attach, upload, and copy operations the container id/name will be validated or chosen prior to the remote call. You may also use the kubectl.kubernetes.io/default-container annotation to specify the default container.
- Fix #4363: exposed ResourceCompare.metadataChanged
- Fix #4530: generalizing the Serialization logic to allow for primitive values and clarifying the type expectations.
- Fix #4136: added support for fieldValidation as a dsl method for POST/PUT/PATCH operations
- Fix #3896: added dsl support for server side apply
- Fix #4582: updated [client.secrets] createOrReplace document
- Fix #4516: added support for blocking delete operations using the withTimeout methods: op.withTimeout(1, TimeUnit.MINUTE).delete() - will wait for up to 1 minute for the resources to be fully deleted. This makes for a more concise replacement of the deletingExisting method.
- Fix #3923: removed KubernetesResourceMappingProvider - a META-INF/services/io.fabric8.kubernetes.api.model.KubernetesResource list of resources is used instead.
- Fix #4515: files located at the root of jars named model.properties, e.g. core.properties, have been removed
- Fix #4579: the implicit registration of resource and list types that happens when using the resource(class) methods has been removed. This makes the behavior of the client more predictable as that was an undocumented side-effect. If you expect to see instances of a custom type from an untyped api call - typically KubernetesClient.load, KubernetesClient.resourceList, KubernetesClient.resource(InputStream|String), then you must either create a META-INF/services/io.fabric8.kubernetes.api.model.KubernetesResource file (see above #3923), or make calls to KubernetesDeserializer.registerCustomKind - however since KubernetesDeserializer is an internal class that mechanism is not preferred.
- Fix #4597: remove the deprecated support for
javax.validation.constraints.NotNull
in thecrd-generator
, to mark a property asrequired
it needs to be annotated withio.fabric8.generator.annotation.Required
- Fix #4363: deprecated existing ResourceCompare methods such as compareKubernetesResource as they are not for general use
- Fix #3733: The authentication command from the .kube/config won't be discarded if no arguments are specified
- Fix #4312: fix timestamp can't be deserialized for IstioCondition
- Fix #4369: Informers will retry with a backoff on list/watch failure as they did in 5.12 and prior.
- Fix #4350: SchemaSwap annotation is now repeatable and is applied multiple times if classes are used more than once in the class hierarchy.
- Fix #3733: The authentication command from the .kube/config won't be discarded if no arguments are specified
- Fix #4441: corrected patch base handling for the patch methods available from a Resource - resource(item).patch() will be evaluated as resource(latest).patch(item). Also undeprecated patch(item), which is consistent with leaving patch(context, item) undeprecated as well. For consistency with the other operations (such as edit), patch(item) will use the context item as the base when available, or the server side item when not. This means that patch(item) is only the same as resource(item).patch() when the patch(item) is called when the context item is missing or is the same as the latest.
- Fix #4442: TokenRefreshInterceptor doesn't overwrite existing OAuth token with empty string
- Fix #4350: SchemaSwap annotation is now repeatable and is applied multiple times if classes are used more than once in the class hierarchy.
- Fix #4459: Fixed OSGi startup exceptions while using KubernetesClient/OpenShiftClient
- Fix #4460: removing split packages. Converting Default clients into adapters rather than real instances.
- Fix #4473: Fix regression in backoff interval introduced in #4365
- Fix #4478: Removing the resourceVersion bump with null status
- Fix #4482: Fixing blocking behavior of okhttp log watch
- Fix #4487: Schema for multimaps is now generated correctly
- Fix #4496: Removing watch handling of lists
- Fix #4471: Adding KubernetesClientBuilder.withHttpClientBuilderConsumer to further customize the HttpClient for any implementation.
- Fix #4348: Introduce specific annotations for the generators
- Fix #4441: refactoring
TokenRefreshInterceptor
- Fix #4365: The Watch retry logic will handle more cases, as well as perform an exceptional close for events that are not properly handled. Informers can directly provide those exceptional outcomes via the SharedIndexInformer.stopped CompletableFuture.
- Fix #4396: Provide more error context when @Group/@Version annotations are missing
- Fix #4384: The Java generator now supports the generation of specific annotations (min, max, pattern, etc.), as defined by #4348
- Fix #4408: Allowing informers started via the start() method to have configurable exception / retry handling.
- Fix #3864: Change ManagedOpenShiftClient OSGi ConfigurationPolicy to REQUIRE
- Fix #4414: RawExtension as default fall-back type for KubernetesResource deserialization
- Fix #4470: Added timestamps support for deployment logs and other resources.
- Fix #4476: [crd-generator] Support custom
Annotations
andLabels
to be emitted in the CRD
- Fix #4243: Update Tekton pipeline model to v0.39.0
- Fix #4243: Update Tekton triggers model to v0.20.2
- Fix #4383: bump snakeyaml from 1.30 to 1.31
- Fix #4347: Update Kubernetes Model to v1.25.0
- Fix #4413: Update sundrio to 0.93.1
- Fix #4398: add annotation @PreserveUnknownFields for marking generated field have
x-kubernetes-preserve-unknown-fields: true
defined - Fix #4351: add
javax.annotation.processing.Generated
to classes generated with thejava-generator
- Fix #4350: SchemaSwap's fieldName parameter now expects a field name only, not a method or a constructor.
- Module
io.fabric8:tekton-model-triggers
which contained Tekton triggers v1alpha1 model has been removed. We have introduced separate modulesio.fabric8:tekton-model-v1alpha1
andio.fabric8:tekton-model-v1beta1
for Tekton triggers v1alpha1 and v1beta1 apigroups respectively. Users who are usingio.fabric8:tekton-client
dependency directly should be unaffected by this change. - Fix #3864: Now it's compulsory to provide
etc/io.fabric8.openshift.client.cfg
file in order to load ManagedOpenShiftClient in OSGi environment. - Fix #3924: Extension Mock modules have been removed
- Fix #4384: javax.validation.* annotations are no longer added by the Java generator.
- Fix #3906: removed BaseKubernetesList, use KubernetesList instead
- Fix #4408: deprecated SharedInformerFactory.addSharedInformerEventListener, instead use the SharedIndexInformer.stopped method. Also the signature of SharedIndexInformer.start was changed to a CompletionStage rather than a CompletableFuture.
- Fix #2271: Support periodic refresh of access tokens before they expire
- Fix #3733: The authentication command from the .kube/config won't be discarded if no arguments are specified
- Fix #4206: KubernetesDeserializer can now handle any valid object. If the object lacks type information, it will be deserialized as a GenericKubernetesResource.
- Fix #4365: backport of stopped future for informers to obtain the termination exception
- Fix #4383: bump snakeyaml from 1.28 to 1.33
- Fix #4442: TokenRefreshInterceptor doesn't overwrite existing OAuth token with empty string
- Fix #4206: The Serialization utility class will throw an Exception, instead of returning null, if an untyped unmarshall method is used on something that lacks type information
fix #4373: NO_PROXY should allow URIs with hyphens ("circleci-internal-outer-build-agent")
- Fix #4109: Templates with parameters can be retrieved from OpenShift
- Fix #4206: KubernetesDeserializer can now handle any valid object. If the object lacks type information, it will be deserialized as a GenericKubernetesResource
- Fix #4247: NO_PROXY with invalid entries throws exception
- Fix #4256: crd-generator-apt pom.xml includes transitive dependencies
- Fix #4294: crd-generator respects JsonIgnore annotations on enum properties
- Fix #4320: corrected leader transitions field on leader election leases
- Fix #4360: JUnit dependencies aren't leaked in child modules
- Fix #887: added KubernetesClient.visitResources to search and perform other operations across all resources.
- Fix #3960: adding a KubernetesMockServer.expectCustomResource helper method and additional mock crd support
- Fix #4041: adding Quantity.getNumericalAmount with an explanation about bytes and cores.
- Fix #4241: added more context to informer logs with the endpoint path
- Fix #4250: allowing for deserialization of polymorphic unwrapped fields
- Fix #4254: adding debug logging for exec stream messages
- Fix #4259: Java Generator's CR should have Lombok's
@EqualsAndHashCode
withcallSuper = true
- Fix #4287: added WorkloadGroup for Istio v1alpha3 extension generator
- Fix #4318: implemented LeaderElection releaseOnCancel
- Fix #4359: Remove manual model classes with fields name
class
- Fix #3967: Update chaos-mesh extension to v2.1.3. Add PodHttpChaos, GCPChaos, BlockChaos and PhysicalMachineChaos.
- Fix #4352: Update Knative model to v0.34.0
- Fix #4356: Update Apache CamelK to v1.9.2
- Fix #4361: Bump Cert-Manager to v1.9.0-beta.1.0.20220829113803-8465f1223efb
- Fix #2271: Support periodic refresh of access tokens before they expire
- Fix #4333: Implement "attach to pod" functionality
- Fix #4206: The Serialization utility class will throw an Exception, instead of returning null, if an untyped unmarshall method is used on something that lacks type information
- In ChaosMesh Model, some types have been renamed. These are
io.fabric8.chaosmesh.v1alpha1.AwsChaos
=>io.fabric8.chaosmesh.v1alpha1.AWSChaos
io.fabric8.chaosmesh.v1alpha1.IoChaos
=>io.fabric8.chaosmesh.v1alpha1.IOChaos
io.fabric8.chaosmesh.v1alpha1.PodIoChaos
=>io.fabric8.chaosmesh.v1alpha1.PodIOChaos
- Fix #4247: Proxy matching no longer supports having wildcard characters in
NO_PROXY
. The behavior has been changed to match GNU WGet Spec
- Fix #3969: relist will not trigger sync events
- Fix #4049: properly populate exception metadata with resource information if available
- Fix #4222: backport of #4082 - to not process events until the cache is complete
- Fix #4246: KubernetesClientException is swallowed in LeaderElector
- Fix #4295: Configure SnakeYaml to ignore converting timestamps to Date objects
- Fix #2811: Approve/Reject CSR not supported in v1beta1 CertificateSigningRequest API
- Fix #4216: Update metadata when
replaceStatus()
is called - Fix #4217: patchStatus doesn't increment metadata.generation field in Kubernetes Mock Server (CRUD)
- Fix #4234: corrected the skip method for base64 inputstream
- Fix #3227 : Move
config.openshift.io
apiGroup resources out ofopenshift-model/
- Fix #4006: Remove outdated shared test classes in
kubernetes-client/
andopenshift-client/
modules
- Fix #2860: ensure that lockexceptions won't inhibit notification
- Fix #3300: addressed race connection with watch reconnects
- Fix #3745: the client will throw better exceptions when a namespace is not discernible for an operation
- Fix #3832 #1883: simplifying the isHttpsAvailable check
- Fix #3990: Throw exception when
HasMetadata
is used inresources(...)
API - Fix #4081: moving Versionable.withResourceVersion to a method on WatchAndWaitable and removing Waitable from the return type
- Fix #4106: removed listing from projectrequests
- Fix #4140: changed StatefulSet rolling pause / resume to unsupported. Also relying on default rolling logic to Deployments and StatefulSets
- Fix #4139: status changes don't increment metadata.generation field
- Fix #4149: port forwarding can accept both blocking and non-blocking channels
- Fix #4171: allowing any object in clone
- Fix #1285: removed references to manually calling registerCustomKind
- Fix #2207: added LeaderElector.start to provide a CompletableFuture for easy cancellation
- Fix #3334: adding basic support for server side apply. Use patch(PatchContext.of(PatchType.SERVER_SIDE_APPLY), service), or new PatchContext.Builder()withPatchType(PatchType.SERVER_SIDE_APPLY).withForce(true).build() to override conflicts
- Fix #3486: using a common jsonschema2pojo annotator - see the migration guide for possible changes to extension models
- Fix #3625: adds default maps to mostly prevent the need for null checks on things like annotations and labels
- Fix #3758: VersionInfo in KubernetesMockServer can be overridden
- Fix #3806: Remove
setIntVal
,setStrVal
,setKind
setters fromIntOrString
class to avoid invalid combinations - Fix #3852: Deserializing kamelets fails with UnrecognizedPropertyException
- Fix #3889: remove piped stream for file download
- Fix #3968: SharedIndexInformer.initialState can be used to set the store state before the informer starts SharedIndexInformer allows for the addition and removal of indexes even after starting, and you can remove the default namespace index if you wish. And Store.getKey can be used rather than directly referencing static Cache functions.
- Fix #3969: relist will not trigger sync events
- Fix #4065: Client.getAPIResources("v1") can be used to obtain the core/legacy resources
- Fix #4082: improving informOnCondition to test the initial list instead of individual add events
- Fix #4093: adding a possibility to get a log as an
InputStream
from theLoggable
resources - Fix #4142: Added patch() and patch(PatchContext) methods for use with resource and load
- Fix #4146: ManagedKubernetesClient and ManagedOpenShiftClient as delayed OSGi services
- Fix #3788: Point CamelK Extension model to latest released version v1.8.0
- Fix #3813: Handle exit code status messages with pod uploads
- Fix #3947: Point CamelK Extension model to latest released version v1.8.2
- Fix #4031: Update Kubernetes Model to v1.24.0
- Fix #4100: Update Tekton Pipeline Model to v0.35.0
- Fix #3407 #3973: Added resource(item) to directly associate a resource with the DSL. It can be used as an alternative to Loadable.load when you already have the item There is also client.resourceList(...).resources() and client.configMaps().resources() - that will provide a Resource stream. This allows you to implement composite operations easily with lambda: client.secrets().resources().forEach(r -> r.delete());
- Fix #3472 #3587: Allowing for customization of the Informer store/cache key function and how state is stored. See BasicItemStore and ReducedStateItemStore and the SharedIndexInformer.itemStore function
- Fix #3855: Created a new kubernetes-httpclient-jdk module with an HttpClient implementation based on the Java HttpClient
- Fix #3922: added Client.supports and Client.hasApiGroup methods
- Fix #3966: KubernetesMockServer has new methods - unsupported and reset - to control what apis are unsupported and to reset its state
- Fix #4112: Added TtyExecErrorable.terminateOnError to produce an exceptional outcome to the exitCode when a message is seen on stdErr
- Fix #3854: Camel-K: Missing method for manipulating KameletBindings
- Fix #4117: Created new kubernetes-junit-jupiter module, adds a JUnit5 extension for Kubernetes
- Fix #4180: Created a new kubernetes-httpclient-jetty module with an HttpClient implementation based on Eclipse Jetty
Please see the migration guide
- Fix #3582: SSL truststore can be loaded in FIPS enabled environments
- Fix #3797: Implement SchemaSwap; generate CRD from model not owned
- Fix #3811: Reintroduce
Replaceable
interface inNonNamespaceOperation
- Fix #3818: adding missing throws to launderThrowable
- Fix #3848: Supports Queue (cluster) API for Volcano extension
- Fix #3859: refined how a deserialization class is chosen to not confuse types with the same kind
- Fix #3880: Synchronize access to map in KubernetesCrudDispatcher
- Fix #3936: Kubernetes Mock Server .metadata.generation field is an integer
- Fix #3957: Lister
onOpen
should be called before marking the connection as open - Fix #4022: Reintroduce
Deletable
interface inNonNamespaceOperation
- Fix #4009: updating readiness to consider 0 replicas
Config#autoConfigure(String context)
: Has been changed to only trigger the autoConfigure method once. Previously, providing a wrong context argument would not be a problem since an initial context-less autoConfigure would have already been invoked to provide a valid initial Config.
- Fix #3786: Deserialize WatchEvents using the specific object type
- Fix #3776: VerticalPodAutoscaler cannot load yaml with "controlledResources"
- Fix #3796: Limit usage of YAML Serializer
- Fix #3772:
edit()
should not be allowed as a NonNamespaceOperation - Fix #3477: Handle exit code status messages with pod uploads
Config#autoConfigure(String context)
: Has been changed to only trigger the autoConfigure method once. Previously, providing a wrong context argument would not be a problem since an initial context-less autoConfigure would have already been invoked to provide a valid initial Config.
- Fix #3683: Handle JsonNode fields by adding x-kubernetes-preserve-unknown-fields
- Fix #3697: addresses response that aren't closed by interceptors that issue new requests
- Fix #3255: adding basic crud mock resourceVersion support - the field will be set and updated, but not utilized by list/watch queries
- Fix #3568: Pod file upload fails if the path is
/
- Fix #3588:
openshift-server-mock
is not listed in dependencyManagement in main pom - Fix #3648:
Serialization.unmarshal
fails to deserialize YAML with single document in presence of document delimiter(---
) - Fix #3679: output additionalProperties field with correct value type for map-like fields (CRD Generator)
- Fix #3671: HTTP(s) Proxy port is not defaulted or validated
- Fix #3712: properly return the full resource name for resources with empty group
- Fix #3761: Extension Jar packages don't contain the META-INF/jandex.idx index file
- Fix #3763: A Java Long should generate a field of type integer in the CRD
- Fix #3769: Fix for ClassCastException from SchemaFrom
- Fix #3756 prevent modifications by standard operations to user objects
- Fix #3674: allows the connect and websocket timeouts to apply to watches instead of a hardcoded timeout
- Fix #3651: Introduce SchemaFrom annotation as escape hatch (CRD Generator)
- Fix #3587: adding inform support for limit/batch fetching
- Fix #3734: extract static finalizer validation method
- Fix #3637: Update Fabric8 Kubernetes Model to v1.23.0
- Fix #3670: Point CamelK Extension model to latest released version v1.7.0
- Fix #3725: Bump sundrio to v0.50.3
- Fix #3721: Add support for uploading file via InputStream
- Fix #3234: Allow specifying specific localhost while port-forwarding
- Fix #3506: Add support for Open Cluster Management extension
- Fix #3653: SnakeYAML uses only standard Java types
- Fix #3653: SnakeYAML uses only standard Java types
- Fix #3697: addresses response that aren't closed by interceptors that issue new requests
- Fix #3653: SnakeYAML uses only standard Java types
- Fix #3653: SnakeYAML uses only standard Java types
- Fix #3653: SnakeYAML uses only standard Java types
- Fix #3653: SnakeYAML uses only standard Java types
- Fix #3653: SnakeYAML uses only standard Java types
- Fix #3653: SnakeYAML uses only standard Java types
- Fix #3672: Native image builds of Fabric8 work (commons-codec no longer required)
- Fix #3639: Support for NodeMetrics and PodMetrics informers
- Fix #3662: NodeMetrics should be marked as Cluster scoped resource
- Fix #3686: Ignore fields annotated with JsonIgnore during CRD generation
- Fix #3652: Avoid a StackOverflow and properly fail on cyclic references in CRD generation
- Fix #3538: Update Plural rule to work with Prometheus
- Fix #3555: using the new builder for generic resources
- Fix #3535: ensure clientKeyAlgo is set properly when loading config YAML from
fromKubeconfig
- Fix #3598: applying cancel to the correct future for waitUntilCondition and waitUntilReady
- Fix #3609: adding locking to prevent long running Watcher methods from causing reconnects with concurrent processing
- Fix #3629: correcting the watch 200/503 exception handling
- Fix #3606: Template getObjects doesn't throw NPE when objects is null
- Fix #3620: throw a meaningful exception if no kind/plural is on a ResourceDefinitionContext, default plural if possible
- Fix #3636: ensure proper handling of LogWatch closure wrt its streams
- Fix #3615: opt into bookmarks by default
- Fix #3600: add owner references support to HasMetadata
- Fix #3505: Update OpenShift Model to latest version (4.9.x)
- Fix #3579: Add support for Volcano extension
- Fix #3593: Add support for Istio extension
- If you do not wish to receive bookmarks, then set ListOptions.allowWatchBookmarks=false - otherwise all Watches will default to requesting bookmarks. If supported by the api-server, bookmarks will avoid 410 exceptions and keep the watch alive longer. If you are using the mock framework with explicit uris, you may need to update your expected watch endpoints to include the parameter allowWatchBookmarks=true
- Refactoring #3547: due to an abstraction layer added over okHttp, the following api changes were made:
- OperationContext withOkHttpClient was removed, it should be needed to be directly called
- PatchType.getMediaType was replaced with PatchType.getContentType
- ExecListener no longer passes the okhttp3.Response to onOpen. onFailure will pass a simplified ExecListener.Response when possible.
- okhttp3.TlsVersions has been replaced by io.fabric8.kubernetes.client.http.TlsVersion
- HttpClientUtils.createHttpClient(config, additionalConfig) has been deprecated and now returns an OkHttpClientImpl
- The client is no longer adaptable to an OkHttpClient, use Client.getHttpClient instead
- Fix #3583: Add KubernetesMockServer accessor to JUnit4 KubernetesServer rules
- Fix #3584: Add GenericKubernetesResourceBuilder to Kubernetes Model Core
- Fix #3408: quote pod upload file paths to support special chars
- Fix #3561: ensure okhttp resources are closed
- Fix #3570: added a setter for additionalProperties for proper builder support
- Fix #3562: Kubernetes Mock Server improvements
- Fix #3406: Add support for approve/deny CertificateSigningRequests
- Fix #3460: support for deserializing templates with non-string params
- Fix #3574: support for deserialization of properties that don't match the target field's type
- Fix #3511: Improve selectors support in OperationContext
- Fix #3562: Bump MockWebServer
- Fix #3430: Support Vertical Pod Autoscaler
- Serialization: Those KubernetesResources that include entries in the additionalProperties Map that override a field of the resource instance, will no longer be duplicated. The values present in the additionalProperties Map take precedence.
- Fix #3482: sanitizeName now truncate names to be less than 63 chars and makes sure first and last charaters are letters
- Fix #3353: addressing extra quoting in quantity serialization
- Fix #3509: notify reader when something is written in ExecWebSocketListener
- Fix #3501: addressed NPE with default BuildConfig operations
- Fix #3448 added methods for getting specific version information -
KubernetesClient.getKubernetesVersion
,OpenShiftClient.getOpenShiftV3Version
, andOpenShiftClient.getOpenShiftV3Version
- Fix #3404 supporting generic resources in resource/resourceList with minimal metadata, as well as a new entry point
KubernetesClient.genericKubernetesResources(String apiVersion, String kind)
- Fix #3390: Make mock server support JSON_MERGE_PATCH
- Fix #2171: Support BOOKMARK (Watcher) events
- Fix #3294: Support fetching APIGroupList
- Fix #3303: Support fetching APIResourceList
- OpenShiftConfig#openshiftApiGroupsEnabled is deprecated and no longer used.
- OpenShiftConfig#disableApiGroupCheck is used only to determine if a client is adaptable to the OpenShiftClient and is generally only needed in mock scenarios. It will be set automatically on clients obtained from an openshift mock server.
KubernetesClient.getVersion
has been deprecated, please use one of the more specific methods introduced by #3448 -KubernetesClient.getKubernetesVersion
,OpenShiftClient.getOpenShiftV3Version
, andOpenShiftClient.getOpenShiftV3Version
- Fix #3445: TokenRefreshInterceptor throws when running incluster config
- Fix #3456: io.fabric8:crd-generator README should reference crd-generator-apt instead of now removed crd-generator artifact
- Fix #3384: preventing NPE from being logged with pod execs.
- Fix #3484: Ensuring that the informer isWatching flag is correctly reported
- Fix #3468: Add method to get non-running
Informer
from context specific dsl - Fix #3398: Added javadocs explaining the wait parameter
- Fix #3491: Add more metadata to
KubernetesClientException
when possible - Fix #3465: Allowing for more super class event handlers
- Fix #3326: Upgrade Kubernetes Model to v1.22.1
- Fix #3433: Extension annotator doesn't generate XxxEditable classes
- Fix #3450: CRD generator fails with ClassCastException in some cases
- Fix #3442: make sure new CRDGenerator instances start with a clean generation context
- Fix #3438: Upgrade Sundrio to 0.50.1
- Fix #3441: Revert #3427 bump jandex from 2.3.1.Final to 2.4.0.Final
- Fix #3411: enum values should honor JsonProperty annotations during CRD generation
- Fix #3431: required list properly uses renamed properties during CRD generation
- Fix #3429: KubernetesCrudDispatcher throw ConcurrentModificationException when using WatchEventsListener
- Fix #3414: Add equals and hashCode implementations for CustomResource
- Fix #3287: Add support for field descriptions in CRD Generator
- Fix #3325: All Cluster Scoped Kubernetes resources should use NonNamespacedOperation
- Fix #3346: https configuration ignored for OpenShiftServer in CRUD mode
- Fix #3347: OpenShiftConfig missing some configurations from provided Config
- Fix #3379: using updateStatus rather than patchStatus in the Raw logic
- Fix #3390: Make mock server to work again with updateStatus by handling JSON_MERGE_PATCH
- Fix #3316: allow locking deletion to resource version
- Fix #3350: Replace references to impls with interfaces in several places in the the dsl
- Fix #3327: Removed generated ResourceHandlers
- Fix #3349: ensuring that dsl context values always are applied over user ListOptions
- Fix #3372: Add generatePackageSuffix option to Model Generator to allow flexible package names for generated model
- Fix #3336: Add ConversionReview in Kubernetes API Extensions model
- Fix #3367: Let CRDGenerator clients handle output (#3366, #3371)
- Fix #3380: Update chaos-mesh extension to v1.2.3. Add AwsChaos.
- #3327 DSL methods mentioning customResources have been deprecated:
KubernetesClient.customResources
,SharedIndexInformerFactory.sharedIndexInformerForCustomResource
. See replacement resources and sharedIndexInformerFor methods instead. AlsoCustomeResourceDefinitionContext
has been replaced byResourceDefinitionContext
- for example inKubernetesClient.genericKubernetesResources
. - #3358 DSL return type replacements -
NamespacedCreateOnlyResourceOperationsImpl
has been replaced byNamespacedInOutCreateable
,ImageSignatureOperationsImpl
has been replaced byNameableCreateOrDeleteable
- #3364
VisitFromServerGetWatchDeleteRecreateWaitApplicable
now implementsEditable
to replace theVisitable
methods.ApplicableAnd
andRecreatable
have also been deprecated. - #3386
KubernetesClient.customResource(CustomResourceDefinitionContext)
has been deprecated. Please use the GenericKubernetesResource viaKubernetesClient.genericKubernetesResource(ResourceDefinitionContext)
- Fix #3304: Prevent NPE in after informer stop
- Fix #3083: CertificateException due to PEM being decoded in CertUtils
- Fix #3295: Fix wrong kind getting registered in KubernetesDeserializer in SharedInformerFactory
- Fix #3318: Informer relist add/update should not always be sync events
- Fix #3328: Allow for generic watches of known types
- Fix #3240: MicroTime serialises incorrectly; add custom serializer/deserializer for MicroTime
- Fix #3329: Moved the parsing of resource(String) to the common base client
- Fix #3330: Added usage of the openshift specific handlers for resource(String/HasMetadata) to pickup the right Readiness
- Fix #3285: adding waiting for list contexts
Informable.informOnCondition
- Fix #3284: refined how builders are obtained / used by HasMetadataOperation
- Fix #3314: Add more detailed information about what is generated by the CRD generator
- Fix #3307: refined the support for
Readiable.isReady
- Fix #2887: Create Docker Registry secrets
- Fix #3314: add detailed information on CRD generation
- Fix #3290: Update Tekton Pipeline Model to v0.25.0
- Fix #3291: Retrying the HTTP operation in case of IOException too
- Fix #2712: Add support for watching logs in multi-container Controller resources (Deployments, StatefulSets, ReplicaSet etc)
- #3307
Readiable.isReady
returns a boolean rather than a Boolean
- Fix #3064: KubernetesMockServer should not read local
.kube/config
while initializing client - Fix #3126: a KubernetesClientException will be thrown from patch/replace rather than a null being returned when the item does not exist
- Fix #3121: ServiceOperationImpl replace will throw a KubernetesClientException rather than a NPE if the item doesn't exist
- Fix #3189: VersionInfo contains null data in OpenShift 4.6
- Fix #3190: Ignore fields with name "-" when using the Go to JSON schema generator
- Fix #3144: walking back the assumption that resource/status should be a subresource for the crud mock server, now it will be only if a registered crd indicates that it should be
- Fix #3194: the mock server will now infer the namespace from the path
- Fix #3076: the MetadataObject for CustomResource is now seen as Buildable
- Fix #3216: made the mock server aware of apiVersions
- Fix #3225: Pod metric does not have corresponding label selector variant
- Fix #3243: pipes provided to exec command are no longer closed on connection close, so that client can fully read the buffer after the command finishes.
- Fix #3272: prevent index npe after informer sees an empty list
- Fix #3275: filter related dsl methods withLabel, withField, etc. should not modify the current context. If you need similar behavior to the previous use
Filterable.withNewFilter
. - Fix #3271: waitUntilReady and waitUntilCondition should handle resource too old
- Fix #3278:
Waitable
methods should not be available at a list context
- Fix #3078: adding javadocs to further clarify patch, edit, replace, etc. and note the possibility of items being modified.
- Fix #3149: replace(item) will consult the item's resourceVersion for the first PUT attempt when not specifically locked on a resourceVersion
- Fix #3135: added mock crud support for patch status, and will return exceptions for unsupported patch types
- Fix #3072: various changes to refine how threads are handled by informers. Note that the SharedInformer.run call is now blocking when starting the informer.
- Fix #3143: a new SharedInformerEventListener.onException(SharedIndexInformer, Exception) method is available to determine which informer could not start.
- Fix #3170: made HttpClientUtils.createHttpClient(Config, Consumer<OkHttpClient.Builder>) public to allow overriding custom http client properties
- Fix #3202: make pod upload connection and request timeouts configurable
- Fix #3185: Introduce GenericKubernetesResource, used as delegate in RawCustomResourceOperationsImpl
- Fix #3001: WatchConnectionManager logs that provide little information are now logged at a lower level
- Fix #3186: WebSockets and HTTP connections are closed as soon as possible for Watches.
- Fix #2937: Add
SharedInformerFactory#getExistingSharedIndexInformers
method to return list of registered informers - Fix #3239: Add the
Informable
interface for context specific dsl methods to createSharedIndexInformer
s. - Fix #3101: making isWatching a health check for the informer
- Fix #2741: Update Knative Model to v0.23.0
- Fix #3133: Add DSL Support for
authorization.openshift.io/v1
resources in OpenShiftClient - Fix #3166: Add DSL Support for
machineconfiguration.openshift.io/v1
resources in OpenShiftClient - Fix #3142: Add DSL support for missing resources in
operator.openshift.io
andmonitoring.coreos.com
apiGroups - Fix #2565: Add support for CertManager extension
- Fix #3150: Add DSL support for missing resources in
template.openshift.io
,helm.openshift.io
,network.openshift.io
,user.openshift.io
apigroups - Fix #3087: Support HTTP operation retry with exponential backoff (for status code >= 500)
- Fix #3193:Add DSL support for
autoscaling.openshift.io
resources in OpenShiftClient - Fix #3209: Add DSL support for PodSecurityPolicySubjectReview, PodSecurityPolicyReview, PodSecurityPolicySelfSubjectReview in
security.openshift.io/v1
apiGroup to OpenShiftClient - Fix #3207: Add DSL support for OperatorCondition, Operator, PackageManifest in
operators.coreos.com
apiGroup to OpenShiftClient - Fix #3201: Add support for
tuned.openshift.io
apiGroup in OpenShiftClient DSL - Fix #3205: Add DSL support for ConsolePlugin and ConsoleQuickStart in
console.openshift.io
apiGroup - Fix #3222: Add DSL support for
user.openshift.io/v1
Identity in OpenShiftClient DSL - Fix #3222: Add DSL support for OpenShift Whereabouts CNI Model
whereabouts.cni.cncf.io
to OpenShiftClient DSL - Fix #3224: Add DSL support for OpenShift Kube Storage Version Migrator resources in OpenShiftClient DSL
- Fix #3228: Add support for Dynamic informers for custom resources in KubernetesClient
- Fix #3270: Add DSL support for ClusterInterceptors to TektonClient
- #3127
StatusUpdatable.updateStatus
deprecated, please use patchStatus, editStatus, or replaceStatus - #3239 deprecated methods on SharedInformerFactory directly dealing with the OperationContext, withName, and withNamespace - the Informable interface should be used instead.
- #3271
Waitable.waitUntilReady
andWaitable.waitUntilCondition
with throw a KubernetesClientTimeoutException instead of an IllegalArgumentException on timeout. The methods will also no longer throw an interrupted exception.Waitable.withWaitRetryBackoff
and the associated constants are now deprecated.
- #3197
Utils.waitUntilReady
now accepts a Future, rather than a BlockingQueue - #3169
Utils.shutdownExecutorService
removed in favor of direct usage of shutdownNow where appropriate.
The stream pumper related classes were also simplified to utility methods on InputStreamPumper.
- Fix #3181: Properly handling of JsonProperty when generating CRDs
- Fix #3172: Use File.toURI() to create the generated CRD URI
- Fix #3152: Retry only Non-Restful Create-only resources in OpenShiftOAuthInterceptor
- Fix #3189: VersionInfo contains null data in OpenShift 4.6
- Fix #3040: Consistently order printer columns by JSON path to prevent undue changes in generated CRDs
- Fix #3041: Properly output
additionalProperties
field for Maps, output warning for unsupported complex maps - Fix #3036: Fix file descriptor leak when loading cacerts file
- Fix #3038: Upgrade TLS versions in mock servers to 1.2.
- Fix #3037: Account for JsonProperty annotations when computing properties' name
- Fix #3014: Resync Future is canceled and resync executor is shutdown on informer stop
- Fix #2529: SelfSubjectAccessReview not working with OpenShiftClient
- Fix #2978: Fix SharedInformer NPE on initial requests while syncing
- Fix #2989: serialization will generate valid yaml when using subtypes
- Fix #2991: reduced the level of ReflectWatcher event received log
- Fix #2992: allowing Watch auto-reconnect for shared informers
- Fix #2994: updating the SharedIndexInformer indexer state for a delete event generated by resync
- Fix #2996: Generating CRDs from the API should now properly work
- Fix #3000: Set
no_proxy
in the okhttp builder in case theproxy_url
is null - Fix #3011: properly handle enum types for additional printer columns
- Fix #3020: annotations should now properly have their associated values when processing CRDs from the API
- Fix #3016: Use scheduleWithFixedDelay for resync task execution
- Fix #2991: reduced the level of ReflectWatcher event received log
- Fix #3027: fix NPE when sorting events in KubernetesResourceUtil
- Fix #3054: missing entry for Trigger in TektonTriggersResourceMappingProvider
- Fix #3047: NPE when getting version when there is no build date
- Fix #3024: stopAllRegisteredInformers will not call startWatcher
- Fix #3067: Added a patch(PatchContext, item) operation to be more explicit about patching and diffing behavior
- Fix #3097: refresh token with autoconfigure even if authprovider is null
- Fix #2788: Support FIPS mode in kubernetes-client with BouncyCastleFipsProvider
- Fix #2910: Move crd-generator tests from kubernetes-itests to kubernetes-tests
- Fix #3005: Make it possible to select which CRD version is generated / improve output
- Fix #3015: Thread interruption in a nominal case (like closing the client) are now logged in debug
- Fix #3057: Removed debug calls for CustomResource during deserialization
- Fix #3050: More enforcement of the informer lifecycle
- Fix #3061: Removed the deltafifo from the informer logic
- Fix #3081: Use apiGroupName in generated package for OpenShiftClient Handler/OperationsImpl classes
- Fix #3089: Allowing patch/edit to infer context from the item
- Fix #3066: Added replaceStatus (PUT), editStatus (JSON PATCH), and patchStatus (JSON MERGE PATCH) methods to support non-locking status updates
- Fix #2979: Update Kubernetes Model to v1.21.0
- Fix #3099: Update Tekton Triggers Model to v0.13.0
- Fix #3118: Update to sundrio 0.40.1
- Fix #2984: Add support for
flowcontrol.apiserver.k8s.io/v1beta1
FlowSchema and PriorityLevelConfiguration - Fix #2980: Add DSL Support for
apps/v1#ControllerRevision
resource - Fix #2981: Add DSL support for
storage.k8s.io/v1beta1
CSIDriver, CSINode and VolumeAttachment - Fix #2912: Add DSL support for
storage.k8s.io/v1beta1
CSIStorageCapacity - Fix #2701: Better support for patching in KuberntesClient
- Fix #3034: Added a SharedInformer.isRunning method
- Fix #3088: mock server will assume /status is a subresource, and other refinements to match kube behavior
- Fix #3111: Add DSL Support for
config.openshift.io/v1
resources in OpenShiftClient
client.batch().jobs()
deprecated, suggestion to move toclient.batch().v1().jobs()
client.batch().cronjobs()
deprecated, suggestion to move toclient.batch().v1().cronjobs()
orclient.batch().v1beta1().cronjobs()
client.policy().podSecurityPolicies()
deprecated, suggestion to move toclient.policy().v1beta1().podSecurityPolicies()
client.policy().podDisruptionBudget()
deprecated, suggestion to move toclient.policy().v1().podDisruptionBudget()
orclient.policy().v1beta1().podDisruptionBudget()
- Classes in
io.fabric8.kubernetes.api.model.batch
have been moved toio.fabric8.kubernetes.api.model.batch.v1
andio.fabric8.kubernetes.api.model.batch.v1beta1
- Classes in
io.fabric8.kubernetes.api.model.policy
have been moved toio.fabric8.kubernetes.api.model.policy.v1
andio.fabric8.kubernetes.api.model.policy.v1beta1
- Fix #2991: reduced the level of ReflectWatcher event recieved log
- Fix #2992: allowing Watch auto-reconnect for shared informers
- Fix #2994: updating the SharedIndexInformer indexer state for a delete event generated by resync
- Fix #2910: Move crd-generator tests from kubernetes-itests to kubernetes-tests
- Fix #3005: Make it possible to select which CRD version is generated / improve output
- Fix #3011: properly handle enum types for additional printer columns
- Fix #3020: annotations should now properly have their associated values when processing CRDs from the API
- Fix: Set no_proxy in the okhttp builder in case the proxy_url is null
- Fix #3027: fix NPE when sorting events in KubernetesResourceUtil
- Fix #2620: Add support for
config.openshift.io/v1
Ingress - Fix #2784: Not able to deserialize ClusterServiceVersion
- Fix #2935: CRD generator no longer treat enum values as properties (performance)
- Fix #2812: SharedIndexInformer EventHandler sees double updates at resync interval
- Fix #2937: SharedInformerFactory#getExistingSharedIndexInformer returns null when @Kind is configured
- Fix #2924: Creating a CustomResourceInfo from a class doesn't result in the expected information
- Fix #2967: Copy to/from pods: fixed error message; removed debug output
- Fix #2923: Edit a CustomResource should result in a patch
- Fix #2950: RawCustomResourceOperationsImpl should also work with standard resources
- Fix #2938: Make it possible to manage Tekton Triggers directly
- Fix #2921: Kubernetes server mock will generate missing metadata fields
- Fix #2946: Kubernetes server mock watch will generate initial
ADDED
events - Fix #2925: Add CustomResource.getShortNames(Class) method
- Fix #2971: Upgrade to sundrio 0.30.0
- Fix #2837: Add Support for
events.k8s.io
APIGroup DSL - Fix #2854: Introduce CamelK extension
- Fix #2905: NullPointerException when attempting to generate non-parameterized CustomResources
- Fix #2900: Improve handling of complex CR hierarchies, falling back to ignoring status replicas instead of skipping CRD generation altogether
- Fix #2802: NullPointerException in HasMetadataOperation patch/replace when using KubernetesMockServer
- Fix #2828: Remove automatic instantiation of CustomResource spec and status as this feature was causing more issues than it was solving
- Fix #2857: Fix the log of an unexpected error from an Informer's EventHandler
- Fix #2853: Cannot change the type of the Service from ClusterIP to ExternalName with PATCH
- Fix #2855:
.withPropagationPolicy
and.withGracePeriod
DSL methods can't be combined for Resource API deletion operations - Fix #2783: OpenIDConnectionUtils#persistKubeConfigWithUpdatedToken persists access token instead of refresh token
- Fix #2871: Change longFileMode to LONGFILE_POSIX for creating tar in PodUpload, improve exception handling in PodUpload.
- Fix #2746: SharedInformerFactory should use key formed from OperationContext
- Fix #2736: Move CRD annotations to kubernetes-model-common module for greater coherence
- Fix #2836: Make CRD generation usable at runtime, split the generator into api and apt modules,
the
crd-generator-apt
artifact corresponding to the previouscrd-generator
artifact, while thecrd-generator-api
artifact can be consumed directly to generate the CRDs at runtime.
- Fix #2781: RawCustomResourceOperationsImpl#delete now returns a boolean value for deletion status
- Fix #2780: Refactor RawCustomResourceOperationsImpl#delete(String)
- Fix #2818: Update chaos-mesh extension to v1.1.1. Add PodIoChaos, JVMChaos, HTTPChaos and DNSChaos.
- Fix #2699: Add support for
@EnableOpenShiftMockClient
for OpenShiftClient - Fix #2588: Support for Server side dry runs
- Fix #2747: Apiextensions DSL should use NonNamespaceOperation for CustomResourceDefinitions
- Fix #2819: simple enums are now supported when generating CRDs
- Fix #2827: CNFE when initializing CustomResource instances
- Fix #2815:
client.isAdaptable(OpenShiftClient.class)
doesn't work on OpenShift 4 - Fix #2833: Knative model generator is now aligned with all other generators
- Fix #2748: Pass custom headers in kubernetes-client to watch api by modify WatchConnectionManager
- Fix #2745: Filtering Operations can't configure PropagationPolicy
- Fix #2672: WaitUntilReady for Service resource throws IllegalArgumentException
- Fix #2662: Allow option to containerize Go Model Schema generation builds
- Fix #2717: Remove edit() methods from RawCustomResourceOperationsImpl taking InputStream arguments
- Fix #2757: add
storage
andserved
toVersion
annotation - Fix #2759: add
ShortNames
annotation to specify short names for CRD generation - Fix #2694: Remove deprecated methods from KubernetesClient DSL
- Fix #2716: Add a property to disable BackwardCompatibilityInterceptor
- Fix #2706: update Tekton Triggers model to v0.11.1
- Fix #2684: Upgrade Kubernetes Model to v1.20.2
- Fix #2702: Add support for discovery.k8s.io/v1beta1 EndpointSlice in KubernetesClient DSL
- Fix #2703: Add support for
certificates.k8s.io
v1 and v1beta1 API in KubernetesClient DSL - Fix #2708: Update CSI Volume Snapshot API to v1
- Fix #2789: Use thread context class loader instead of
Class.forName
- Fix #2779: Add DSL support for
scheduling.k8s.io
v1
andv1beta1
to SchedulingAPIGroupDSL - Fix #2776: Preview release of CRD generator based on annotations
- Classes extending the
CustomResource
class can now be used as the basis for CRD generation - Several annotations are available to override the default behavior if it doesn't fit your needs
- Validation schema is automatically derived from your class' spec implementation (or from the CR class, if no spec is present)
- CRDs are automatically generated at compile-time if you include the
io.fabric8:crd-generator
dependency to your project (with the suggestedcompile
scope) - CRDs are generated for both
v1beta1
andv1
versions of the specification at this point - One CRD manifest is generated per CRD using the CRD name (e.g.
mycrplural.group.example.com
) suffixed with the specification version, e.g.mycrplural.group.example.com-v1.yml
- The CRD files are generated in the
target/META-INF/fabric8
directory of your project
- Classes extending the
client.settings()
DSL has been removed since PodPreset v1alpha1 API is no longer present in Kubernetes 1.20.xclient.customResourceDefinitions()
has been removed. Useclient.apiextensions().v1beta1().customResourceDefinitions()
insteadclient.events()
has been removed. Useclient.v1().events()
insteadclient.customResource(...)
method is removed. Useclient.customResources(...)
with CustomResource configuration in annotations inside POJOs
- Classes in
io.fabric8.kubernetes.api.model.scheduling
have been moved toio.fabric8.kubernetes.api.model.scheduling.v1
andio.fabric8.kubernetes.api.model.scheduling.v1beta1
- Classes in
io.fabric8.kubernetes.api.model.admission
have been moved toio.fabric8.kubernetes.api.model.admission.v1
andio.fabric8.kubernetes.api.model.admission.v1beta1
- Classes in
io.fabric8.kubernetes.api.model.certificates
have been moved toio.fabric8.kubernetes.api.model.certificates.v1
andio.fabric8.kubernetes.api.model.certificates.v1beta1
- Classes in
io.fabric8.kubernetes.api.model.events
have been moved toio.fabric8.kubernetes.api.model.events.v1
andio.fabric8.kubernetes.api.model.events.v1beta1
- Fix #2715: CVE-2021-20218 vulnerable to a path traversal leading to integrity and availability compromise
- Fix #2715: CVE-2021-20218 vulnerable to a path traversal leading to integrity and availability compromise
- Fix #2715: CVE-2021-20218 vulnerable to a path traversal leading to integrity and availability compromise
- Fix #2715: CVE-2021-20218 vulnerable to a path traversal leading to integrity and availability compromise
- Fix #2687: RawCustomResourceOperationsImpl ignores config
- Fix #2612: add support for checking latest kubeconfig in Interceptor
- Fix #2723: Dependency cleanup
- Remove javax.annotation-api
- Remove jaxb-api
- Remove jackson-module-jaxb-annotations
- Fix #2744: Automatically instantiates spec and status fields on
CustomResource
when possible.initSpec
andinitStatus
methods are also provided to allow for overriding of the default implementation.
- Fix #2723: Upgrade sundrio.version to 0.24.1
- Fix #2734: (Backport #2596) Add buildable ref for container, port and volume
- Fix #2695: fromCustomResourceType should be of type
CustomResource
- Fix #2671: Reliability improvements to watchers
- Fix #2592: ConcurrentModificationException in CRUD KubernetesMockServer
- Fix #2510: Yaml containing aliases rejected due to FasterXML bug
- Fix #2651: SharedInformers should ignore resync on zero resyncPeriod
- Fix #2656: Binding operations can be instantiated
- Fix #2676: Allow specifying PropagationPolicy when using deleteExisting
- Fix #2678: Adds a convenience method for referring to Cache keys by namespace and name rather than item
- Fix #2665: CustomResourceDefinitionContext.fromCrd support for v1 CustomResourceDefinition
- Fix #2642: Update kubernetes-examples to use apps/v1 Deployment rather than extensions/v1beta1
- Fix #2666: Align SharedIndexInformer API with Custom Resource Improvements
- Fix #2611: Support for Custom Resource and Custom Resource Definitions has been improved
- New annotations have been introduced for users to specify group, version, singular and plural
properties for
CustomResource
instances CustomResource
instances must now be annotated with@Version
and@Group
so that the associated information can be automatically computedHasMetadata
provides default implementations forgetApiVersion
andgetKind
based on the presence (or not) of annotations on the target class- Static methods have been introduced on
HasMetadata
andCustomResource
to encapsulate the logic used to resolveKind
,ApiVersion
,Group
,Version
,Plural
,Singular
andCRD Name
properties - New
v1CRDFromCustomResourceType
andv1beta1CRDFromCustomResourceType
methods have been introduced onCustomResourceDefinitionContext
to initialize aCustomResourceDefinitionBuilder
with the information provided by a specificCustomResource
implementation, making it much easier to create CRDs if you already have defined your custom resource type CustomResource
is now parameterized by the spec and status types that it uses which further removes boiler plate
- New annotations have been introduced for users to specify group, version, singular and plural
properties for
- Rename
@ApiVersion
and@ApiGroup
to simply@Version
and@Group
, respectively. This was done to unify annotations and also remove potential confusion between values provided to@ApiVersion
and what is returned byHasMetadata#getApiVersion
- Fix #2519: Generated schemas contains a valid meta-schema URI reference (
http://json-schema.org/draft-05/schema#
) - Fix #2631: Handle null values when getting current context on OIDC interceptors
- Fix #2610: Remove deprecated module kubernetes-model-generator/model-generator-app
- Fix #2628: Add
isFinalizerValid
method onHasMetadata
to encapsulate validation logic - Fix #2640: Edit method accepts Visitors
- Fix #2636: Upgrade sundrio.version to 0.23.0
- Fix #2614: Watcher.onClose has dedicated WatcherException as parameter.
- Fix #2596: Add buildable references for Container, Port and Volume
- Fix #2571: Eliminated the use of Doneables and simplified the internal DSL implementation.
- Fix #2607: add isMarkedForDeletion and finalizer-related default methods to HasMetadata (@metacosm)
- Fix #2605: Provide a
customResources
alternative that simply accepts the resource type as an argument.
- Fix #2556: Chaos Mesh model based on Chaos Mesh v1.0.1
- Fix #2517: Replace does not work in CRUD mockwebserver
- Fix #2537: Checking for Readiness of DeploymentConfig
- Fix #2300: Remove job extensions/v1beta1 from backward compatibiliy interceptor
- Fix #2514: SharedIndexInformer watches only pods of its own namespace when run in the cluster
- Fix #2507: Add a test for creating a Job with generateName
- Fix #2509: Reversed order + Add Kubernetes 1.16.0 + OpenShift 4.5.14 to Compatibility matrix
- Add cache in github actions for integration tests
- Fix #2513: Update Kubernetes Model to v1.19.1
- Fix #2531: Allow setting the maximum concurrent requests via system property / environment variable
- Fix #2534: Tekton model based on Tekton Pipeline 0.17.0
- Fix #2574: Add support for Condition type
Note: Breaking changes in the API
-
Tekton Pipeline v1beta1 sidecars field from a task step is now a list of
io.fabric8.tekton.pipeline.v1beta1.Sidecar
instead of a list ofio.fabric8.tekton.pipeline.v1beta1.Step
-
NetworkPolicy
moved toio.fabric8.kubernetes.api.model.networking.v1.NetworkPolicy
fromio.fabric8.kubernetes.api.model.networking.NetworkPolicy
-
Fix #2557: add missing
OpenShiftReadiness.isReadinessApplicable
- Fix #2442: Wrong resource kind in
ProjectRequestHandler
causes ClassCastException when handling Project resources. - Fix #2467: OpenShiftClient cannot replace existing resource with API version =! v1
- Fix #2458: Creating new instance of the DefaultKubernetesClient is hanging
- Fix #2474: Config.fromKubeconfig throws NullPointerException
- Fix #2399: Cannot change the type of the Service from ClusterIP to ExternalName
- Fix #2479: KuberentesDeserializer works on OSGi runtime environments
- Fix #2488: Unable to derive module descriptors for kubernetes-model jars
- Enable user to select custom address and port for KubernetesMockServer
- Fix #2473: Removed unused ValidationMessages.properties
- Fix #2408: Add documentation for Pod log options
- Fix #2141: Decouple OpenShift Model from Kubernetes Client
- Fix #2452: Make Readiness.isReady publicly available from a wrapper method in KubernetesResourceUtil
- Bump Knative Serving to v0.17.2 & Knative Eventing to v0.17.3
- Fix #2340: Adding support for Knative Eventing Contrib
- Fix #2111: Support automatic refreshing for expired OIDC tokens
- Fix #2146: Add Support for specifying CustomResourceDefinitionContext while initializing KubernetesServer
- Fix #2314: Fetch logs should wait for the job's associated pod to be ready
- Fix #2043: Support for Tekton Triggers
- Fix #2460: Querying for an event based on InvolvedObject fields
Note Minor breaking changes:
- PR #2424 (#2414) slightly changes the API by adding the new
WatchAndWaitable
"combiner" interface. Most projects shouldn't require any additional changes.
- Fix #2445: ConfigMap and other resources are replaced
- Fix #2373: Unable to create a Template on OCP3
- Fix #2308: Fix kubernetes client
Config
loading KUBECONFIG with external authentication command - Fix #2316: Cannot load resource from stream without apiVersion
- Fix #2354: Fix NullPointerException in ResourceCompare when no resource is returned from fromServer.get()
- Fix #2389: KubernetesServer does not use value from https in crud mode
- Fix #2306: Make KubernetesServer CRUD mode work with informers
- Fix #2418: CertificateSigningRequest doesn't implement Namespaced
- Fix #2265: InAnyNamespace uses invalid api endpoint for SelfSubjectAccessReviews
- Fix #2404: Readiness.isReady doesn't handle extensions/v1beta1 Deployment
- Fix #2389: KubernetesServer JUnit rule ignores value of https when using crud mode
- Fix #2331: Fixed documentation for namespaced informer for all custom types implementing
Namespaced
interface - Fix #2406: Add documentation for serializing resources to YAML
- Fix #2414: Allow withResourceVersion() to be followed by waitUntilCondition(), enabling recovery from HTTP 410 GONE errors.
- Fix #2360: bump mockito-core from 3.4.0 to 3.4.2
- Fix #2355: bump jandex from 2.1.3.Final to 2.2.0.Final
- Fix #2353: chore: bump workflow action-setup versions + kubernetes to 1.18.6
- Fix #2292: Update createOrReplace to do replace when create fails with conflict
- Fix: Bump SnakeYaml to version 1.26 (as required for OSGi bundle for jackson-dataformat-yaml)
- Fix #2401: bump maven-resources-plugin from 3.1.0 to 3.2.0
- Fix #2405: bump mockito-core from 3.4.4 to 3.5.0
- CSI Volume Snapshot extension
- Fix #2311: Add Support for creating bootstrap project template
- Fix #2287: Add support for V1 and V1Beta1 CustomResourceDefinition
- Fix #2319: Create Config without using auto-configure functionality or setting env variables
- Fix #2284: Supports create and run a particular image in a pod operation using client
- Fix #2321: Add Support for new resources in OpenShift Model
Note: Some classes have been moved to other packages:
- CustomResourceDefinition has been moved to
io.fabric8.kubernetes.api.model.apiextensions.v1
andio.fabric8.kubernetes.api.model.apiextensions.v1beta1
- SubjectAccessReview, SelfSubjectAccessReview, LocalSubjectAccessReview and SelfSubjectRulesReview have been moved to
io.fabric8.kubernetes.api.model.authorization.v1
andio.fabric8.kubernetes.api.model.authorization.v1beta1
io.fabric8.tekton.pipeline.v1beta1.WorkspacePipelineDeclaration
is nowio.fabric8.tekton.pipeline.v1beta1.PipelineWorkspaceDeclaration
- Fix #2285: Raw CustomResource API createOrReplace does not propagate exceptions from create
- Fix Raw CustomResource API path generation to not having trailing slash
- Fix #2131: Failing to parse CustomResourceDefinition with OpenAPIV3Schema using JSONSchemaPropOr* fields
- Fix #2297: Resuscitate ProjectRequestHandler in openshift-client
- Fix #2328: Failure in deserialization while watching events
- Fix #2299: Improve error handling of RejectedExecutionException from ExecutorService
- Fix KubernetesAttributesExctractor to extract metadata from unregistered custom resources, such when using Raw CustomResource API
- Fix #2296: No adapter available for type:interface io.fabric8.kubernetes.client.dsl.V1APIGroupDSL
- Fix #2269: Setting a grace period when deleting resource using
withPropagationPolicy()
- Fix #2342: watchLogs for deployment is broken
- Fix #2309: Move HasMetadataComparator to exported package
- Fix #2233: client.service().getUrl(..) should be able to fetch URL for ClusterIP based services
- Fix #2278: Added type parameters for KubernetesList in KubernetesClient + test verifying waitUntilCondition always retrieves resource from server
- Fix #2336: Test and fix for the wrong "Kind" declared on KubernetesListHandle
- Fix #2320: Added JUnit5 extension for mocking KubernetesClient in tests using @EnableKubernetesMockClient
- Fix #2332: Added PodExecOptions model
- Improve error handling on stream closing errors in S2I binary builds(#2032)
- Fix #2288: Adds configurable serializers and deserializers to json schema codegen
- Fix #2333: bump bouncycastle.version from 1.65 to 1.66
- Fix #2262: bump maven-shade-plugin from 3.2.3 to 3.2.4
- Fix #2261: bump exec-maven-plugin from 1.6.0 to 3.0.0
- Fix #2345: bump mockito-core from 3.3.3 to 3.4.0
- Fix #2260: bump tektoncd pipeline to v0.12.1
- Fix #1868: Add Support for rolling update
- Fix #2266: Support for APIServices in Kubernetes Client
- Fix #2215:
io.fabric8.kubernetes.client.Config
should expose all and the current context defined in kubeconfig
- Fix #2251: Modify KubernetesDeserializer for handling classes with same name but different apiVersions
- Fix #2205: Event model classes from core v1 have been lost
- Fix #2226: SharedIndexInformer for non-namespaced resources not working
- Fix #2201: Uberjar doesn't contain model classes anymore
- Fix #2066: Uber Jar includes merged service entry for multiple implementations of the same interface
- Fix #2195: Annotation processors and build time dependencies transitive
- Fix #1760: The bundle version of kubernetes-client is missing ServiceLoader files
- Fix #2218: Uberjar: Package rewrite issues in
META-INF/services
- Fix #2212: JDK8 always uses http/1.1 protocol (Prevent OkHttp from wrongly enabling http/2)
- Fix #2199: KubernetesClient#customResources now accepts CustomResourceDefinitionContext
- Adds basic support for Pod Eviction API
- Added DSL support for
admissionregistration.k8s.io/v1beta1
resources - Add support for Namespaced SharedInformers, fixed probelms with OperationContext argument
- Fix #1821: ListOptions now supported when watching a Kubernetes Resource
Note:
- Some classes have been renamed:
io.fabric8.tekton.pipeline.v1beta1.WorkspacePipelineDeclaration
is nowio.fabric8.tekton.pipeline.v1beta1.PipelineWorkspaceDeclaration
- Breaking changes in
KubernetesClient
customResource()
typed API:- We've introduced a major breaking change in customResource(...) typed API. We have introduced a new interface
io.fabric8.kubernetes.api.model.Namespaced
which needs to be added to your Custom Types using typed API. For example, for a custom resource namedAnimals
which is a Namespaced resource; It should be declared like this:You can also checkout an example in our test suite for this: PodSet.javapublic class Animals extends CustomResource implements Namespaced { ... }
- We've introduced a major breaking change in customResource(...) typed API. We have introduced a new interface
- Fix #2189: Change package names of Resource Operation classes in order to avoid duplicates Operation classes
- Fix #2165: Support for setting ListOptions while listing objects
- Feature #1456: Added Watch support on MockServer in Crud mode
- Fix #2163: fix kubernetes-client not support cert chain
- Fix #2144: CRD's schema Default fields do not handle boolean and are prefixed with Raw keyword
- KubernetesAttributeExtractor: handle possible /status subpath due to using status subresource on crd
- Fix #2124: Raw Watch on CustomResource does not work if name specified
- Fix #2174: Change log level to warn for multiple
kubeconfig
warning - Fix #2088: Support networking.k8s.io/v1beta1 alongside extensions/v1beta1
- Fix #2107: Set PropagationPolicy to Background by default
(Note: Deletion option
cascading(..)
has been marked as deprecated)
- Updated Kubernetes Model to v1.18.0
- Fix #2145: Updated OkHttp to v3.12.11
- Fix #2115: Keep tekton v1alpha1 api
- Fix #2002: DSL Support for PodTemplate
- Fix #2015: Add Support for v1, v2beta1, and v2beta2 apiVersions in case of HorizontalPodAutoscaler
- Fix #2212: JDK8 always uses http/1.1 protocol (Prevent OkHttp from wrongly enabling http/2)
- Fix #2071: Fixed pvc example issue #2071
- Fix #1109: something drops '-' from Singular/Plural forms of CustomResources
- Fix #1586: Replace of Job should add extra selector property to the resource
- Fix #2034: Quantity.equals mishandles fractions
- Fix #2009: Regression
withoutLabel()
stopped to work - Fix #2057: Fix jar and osgi bundle generation for extensions
- Fix #2075: KubernetesDeserializer registration for CustomResources
- Fix #2078: watchLog for Deployment and StatefulSet
- Fix #2046: OpenshiftClient getVersion returns null for Openshift ContainerPlatform v4
- Fix #2117: Knative Service.status is always null
- Fix #1987: Added an example for Task and TaskRun with updated model
- Fix #2019: Added CustomResourceCrudTest
- Fix #2054: JobExample doesn't work
- Fix #2082: Added filter node metrics via labels
- Generated List classes for Knative implement proper KubernetesResourceList interface
- Modify the dependency management of the generator of kubernetes-model to golang module
- Updated Knative model to v0.13.0
- Updated Tekton Model to v0.11.0
- Fix #2047: Readiness#isReady is unreliable for StatefulSet
- Fix #1247: URL parameters are not escaped.
- Fix #1961: Two SharedInformer issues related to kube-apiserver unavailable and relisting
- Fix #2023: Class RawCustomResourceOperationsImpl can't handle HTTP responses with empty body coming from the k8s cluster (Jackson deserialization error was throwed). This kind of response can be returned after executing operations like the delete of a custom resource.
- Fix #2017: Incorrect plural form for Endpoints kind
- Fix #2053: Fixed parsing of exponential values. Added multiplication to the amount during parsing exponential values.
- Fix #2058: NullPointerException with upload() websocket failures
- Fix #2012: osgi: Allow the ManagedKubernetesClient to consume an available OAuthTokenProvider
- Updated Knative model to v0.12.0
- Updated Commons-Compress to v1.20 to avoid https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12402
- Fix #1820: Override Createable.create(T) to avoid generic array creation
- Fix #1847: Remove resource-*.vm files from *-client.jar
- Fix #959: Support for double braced
${{ }}
template placeholders - Fix #1964: Refactor Duration
- Fix #703: Fix NullPointerException in Config.tryKubeConfig
- Fix #2000: Unable to create jobs in OSGi environments
- Fix #1874: Added unit tests verifying windows line-ends (CRLF) work
- Fix #1177: Added support for OpenID Connect token in kubeconfig
- Update Jackson Bom to 2.10.2
- Fix #1968: Support for PodSecurityPolicies in Kubernetes 1.17
- Fix #1948: LeaderElection Implementation (Lock Implementations: ConfigMap & Lease)
- Fix #1937:
Quantity.getAmountInBytes()
should be able to handle negative exponents - Fix #1805: Unable to create Template on OCP4
- Fix #1894: SharedInformer Improvements
- Fix #1963: Use Serialization not a default ObjectMapper in Watch
- Fix #1957: Build Failing on CI due to Central repository moving to HTTPS
- Fix #1962: chore(deps): bump karaf.version from 4.2.7 to 4.2.8
- Fix #1960: chore(deps): bump junit-bom from 5.5.2 to 5.6.0
- Fix #1939: chore(deps): bump sundrio.version from 0.20.0 to 0.21.0
- Fix #1917: Allow user to add custom Headers to client
- Fix #1850: Add option to disable timestamps in build logs on Openshift
- Fix #1902: Fix the usage of reflection, so that
getMetadata
is detected properly - Fix #1925: Client should always read services from server during replace
- Fix #1486: Creating CRDs with schema validation is broken
- Fix #1707: HorizontalPodAutoscalerSpecBuilder found no metric method
- Fix #885: Quantity doesn't honour the unit
- Fix #1895: Parsing different quantity formats
- Fix #1880: Remove use of reapers manually doing cascade deletion of resources, leave it upto Kubernetes APIServer
- Test coverage for ServiceCatalog
- Fix #1772: Add Javadocs for KubernetesClient class
- Fix #1889: update tekton from v0.7.0 to v0.9.0
- Fix #1872: Support for kubernetes 1.17
- Fix #417: Support Subresources
- Fix #1548: Allow user to update the status on CustomResources
- Fix #1282: Add Support for fetching Kubernetes metrics
- Fix #1917 Allow user to add custom headers to client
- Fix #1866: fix disabled Integration tests
- Fix #1859 - Pass caller's propagation-policy/cascade options to the underlying replicaset when deleting a deployment
- Fix #1832: chore: refactor poms and update some dependencies
- SelfSubjectRulesReview test coverage
- Fix #1869: chore(deps): bump maven.surefire.plugin.version from 3.0.0-M3 to 3.0.0-M4
- Fix #1864: chore(deps): bump jackson-bom from 2.10.0 to 2.10.1
- Fix #1041: Support cascading delete on custom resources
- Fix #1765 Ability to upload files to a pod
- Fix #1838: Use the correct apiGroup for Knative in KnativeResourceMappingProvider
- Fix #1856: Prevent NPE loop when deleting locally loaded scaleable resource (e.g. statefulset).
- Fix #1853: Revert #1800 due to the concern pointed out here
- chore(deps): bump maven-jar-plugin from 3.1.2 to 3.2.0
- chore(deps): bump maven-source-plugin from 3.1.0 to 3.2.0
- chore(deps): bump jackson-bom from 2.9.10 to 2.10.0
- Fix #1188: Support for logs for Jobs
- Fix #1833: Respect the termination grace period from the Kubernetes resource by default
- Fix #1827: Fix
withGracePeriod
andwithPropagationPolicy
return type to safely chain further DSL methods and default GracePeriod to 30s - Fix #1828: VersionInfo date parsing of year
- Fix #1844: KubernetesDeserializer can now handle ArrayNode.
- Fix #1853: Reverts changes introduced by #1800
- Cleanup log4j dependency from project
- Fix #1816: Support for Binding in k8-client dsl
- Fix #1796: Check if BouncyCastle provider is set
- Fix #1724: createOrReplace function does not work properly for Custom defined resources
- Fix #1775: KubernetesList.list().delete(resources) orphanDependents semantics change between 4.1.3 and 4.5.2
- Fix #1803: Missing "/" in request url while using customresource client
- Fix #1789: Create or replace on operation seems broken
- Fix #1782: Informer Deadlock; Fix lock typo in SharedProcessor
- Fix #1607: WaitUntilReady for lists
- Fix #1797: Utils.waitUntilReady should record the stack trace of the caller before rethrowing an exception
- Add support for filtering labels by EXISTS/NOT_EXISTS via the single argument versions of
.withLabel
and.withoutLabel
- Schedule reconnect in case of HTTP_GONE when watching; the rescheduled connect will start from beginning of history by not specifying resourceVersion
- Example added for PortForward.
- Updated Knative Serving to v0.9.90
- Update Tekton to v0.7.0
- Add support for watch in RawCustomResourceOperations
- Fix #1767: Removed fixed override for Okhttp client's
pingInterval
- Fix #1758: generation of resource handlers for OpenShift
- Fix #1626: Scaling StatefulSets with waiting seems to fail
- Updated Kubernetes Model to Kubernetes v1.15.3
- Fix #1380: Support for ControllerRevision
- Added Template Instance Support
- Fix #1384: Initial draft for SharedInformer support.
- Fix #1759: Portforwarding is broken
- Removed Bean Validation integration
- Fix #1745: Calling getInputStreamFromDataOrFile function with correct parameter order
- Fix #1730: Fix failing build on jdk11
- Fix #1634: Cascade delete can't be overriden
- Fixed Knative model so that it recognizes Container and Volume types as Buildable.
- Remove lexicographic resource version check in WatchHTTPManager
- Added in kubernetes-server-mock (CRUD) the withoutLabel filter and respective tests
- Removed @Valid annotation from all model class fields (improves quarkus integration).
- Allow user to set a propagation policy on deletion
- Fix #1706: admissionregistration resources are now parsed correctly
- Fix #1722: Service port forward are now done in the correct namespace
- Fixed deserialize of
IntOrString
with correctKind
instead ofnull
- Test coverage for HorizontalPodAutoscaler
- Added example for PersistentVolumeClaim
- Added test coverage for ResourceQuota
- Fix #1331: Migrated from JUnit 4 to JUnit 5
- Service Catalog extension
- Fix #1690: Endpoints is always pluralized
- Fix #1684: Fixed URL resolution algorithm for OpenShift resources without API Group name
- Fix #1650: Introduced
kubernetes.disable.autoConfig
system property to disable auto configuration in Config - Fix #1661: Remove generic parameter from KubernetesResource
- Improved OpenShiftOperation.wrap method performance
- RawCustomResourceOperationsImpl#makeCall now closes the created Response object
- Fix #1592: Corrected type returned by Config.builder()
- Fix #1565: CRD's Enums are prefixed with Raw keyword
- Fixed user/password authentication bug in OpenShift 4
- Fix #1667: Origin header for watch requests had a port of -1 when no port specified
- Test coverage for PersistentVolumeClaim
- Fix #1589: Move HorizontalPodAutoscaler to autoscaling/v1
- Fix #1553: Allow to explicitly set non-matching field selectors using
withoutField
- Cleaned up kubernetes-model pom.xml
- Removed deprecated KubernetesKind enum
- Knative extension
- Tekton extension
- Increased OpenShift 4.x compatibility
- Fix #1592: Corrected type returned by Config.builder()
- Set cascade deletion to true in case of list operations
- Fix #1617: Multiple CA certificates with non-unique Subject DN not loaded
- Fix #1634: Make map backing KubernetesDeserializer thread-safe
- Test coverage for Namespace.
- Example added for NamespaceQuota
- Example added for Endpoints.
- Test coverage for Endpoints.
- Fix #1589: Move HorizontalPodAutoscaler to autoscaling/v1
- Fix #1553: Allow to explicitly set non-matching field selectors using withoutField
- assertNotNull replaced with assertTrue for boolean statements in unit tests
- Test coverage for PodPreset
- Added test coverage for PersistentVolume
- Fix #1290: Added github stale bot.
- Add type parameter to make CustomResourceList.getItems() return a typed List.
- Upgrade Jackson to version 2.9.9
- Fixes #973: added support for service catalog client
- Added support for SelfSubjectAccessReview
- Added support for SelfSubjectRulesReview
- Fix #1500: exec
redirectingInput
was not correctly setting the input pipe (since 4.2.0). - Fix #1507: remove unnecessary OutputStream copying a directory and return the directory object instead the file object when a directory is copied or read
- Fix #758: Deleting Deployments with
.cascading(true)
creates a new Replica Set - Fix #1515: HasMetadataOperation.periodicWatchUntilReady is broken
- Fix #1550: MutatingWebhookConfigurationOperationsImpl should be a NonNamespaceOperation
- Added example for raw custom resources.
- Fix #1523: Added createOrReplace() method to RawCustomResourceOperations dsl
- Feature #1374 Add support for resizeChannel in ExecWebSocketListener
- Fix #1297: wrong result produced when exec in used and params contains '&'. Url string not encoded properly.
- Fix #1449: System.currentTimeMillis() replaced with System.nanoTime()
- Fix #1495: avoid runtime dependency on Commons Collections
- Fix #1297: wrong result produced when exec in used and params contains '&'. Url string not encoded properly.
- Fix #1473: Use correct plural form in OpenshiftRole
- Fix #1480: The kubernetes-client is not optionally depending on bouncycastle.
- Fix #1490: Resource could not be loaded
- Fix #1468: Taking labels into consideration when comparing resources for equality.
- Fix #1455: Use SubjectAccessReview and LocalSubjectAccessReview in kubernetes client using subjectAccessReviewAuth()
- First Draft of Custom Resource Improvements (#1472)
- Fix #1387: ValidatingWebhookConfigurationOperationsImpl should be a NonNamespaceOperation
- Fix #1429: Fixes JsonMappingException: No resource type found for:v1#List when reading a Kubernetes List YAML
- Fix #760: Api get pod from yaml issue
- Fix #807: Loading a deployment from server with a config file throws exception
- Fix #1425: Preserve labels and fields when using CRD's withResourceVersion()
- Service DSL now includes methods for port forwarding
- Introduce file and dir read / copy from pods
- Upgrade Sundrio to 0.17.2
- Upgrade to Bean Validation 2.0
- Fix nanosecond conversion using waitUntilReady
- Fix #1008: Use a reasonable buffer size for exec stdin
- Fix #1005: Loading a template from file and processing it locally by passing parameters map is broken
- Fix #1362: store exceptions thrown in port forwarder websocket
- Generate Jandex index file for faster lookup performance
- Fix #1361: Relax restrictions on environment variable names
- Refactor: Use lambdas wherever possible across project
- Fix #1371: Add an example for Job Controller
- Bump Snakeyaml to version 1.24
- Feature 213: Added require( ) method to Resource object class.
- Fix #1064: Make Deployments rollable
Bugs
* Fix #1271: Issue deploying ReplicaSet to extensions/v1beta1
* Fix #1152: Renamed Kubernetes RBAC resources to use non-prefixed names and renamed Openshift RBAC resources to prefix with Openshift
* Fix #1218: CustomResourceDefinitions: cascading() causes NoSuchMethodError
* Fix #1309: Can't get VersionInfo correctly
* Fix #1332: Unable to use ExecCredentials
* Fix #1351: NPE IpAddressMatcherTest
Improvements
* Updated compatability matrix after model upgrade in README.md
* Fix #1306: Support `KUBECONFIG` env var with multiple paths
* Classes implementing KubernetesResourceList has now generic type set.
* Fix #1348: support `v1beta1` version for `ExecCredentials`
* Fix #1326: Make CustomResource @Buildable
* Fix #1354: suppress log warnings that `CustomResourceDefinition`s are still in beta
Dependency Upgrade
* Updated jackson to 2.9.8
* Upgrade okhttp to 3.12.0
New Feature
* Fix #1286: Pod Preset Support
* Fix #1339: oAuth token rotation support
* Fix #1314: Support for EC Private Keys
Misc
* Appended some files to licence check exclusion list.
Bugs
* Fix #1239: Fix one case of OkHttp connection leaks
* Fix #1266: Not setting optional Impersonate-Group results in NPE in ImpersonatorInterceptor
* Fix #1238: Renamed files with invalid Windows characters
* Fix #1260: Added Windows support in ConfigTest.honorClientAuthenticatorCommands
* Fix #579: Add Timestampable interface to PodOperationsImpl/BuildOperationsImpl and set timestamps parameter
* Fix #1273: customResources can't be used with Cluster scoped CRDs
* Fix #1228: Closed InputStream in OperationSupport's handleResponse to avoid leak
* Fix #1280: Fix ExecCredential deserialization in kubeconfig auth
Improvements
* Fix #1226 : Extend and move integrations tests
* Fix #989 : Add support for waitForCondition
* Fix #1293 : OpenShiftOAuthInterceptor.authorize() should only throw IOException
Dependency Upgrade
* Fix #1223: jackson-dataformat-yaml dependency (2.7.7) ageing
* Fix #1262: Upgrade maven-surefire-plugin to 3.0.0-M1
* Fix #1272: Upgrade Awaitility to version 3.1.3
* Fix #1235: Upgrade kubernetes-model to latest kubernetes/Openshift versions
New Feature * Fix #1142: Pagination Support
* Fix #1234: VolumeNodeAffinity support
* Fix #1244: Pod Priority Support
* Fix #1186: Added Support for creating HPA based on custom metrics
Bugs
* Fix #1214 : Watch resource versions not correctly tracked resulting in 410 errors on reconnect
Improvements
* Fix #1179 : Impersonate-Extra keys may be specified multiple times
* Fix #1182 : Fixes flaky integration tests.
* Fix #1200 : Support client authenticator commands like `aws-iam-authenticator`.
* Fix #1201 : Fix problems with swallowed InterruptedExceptions
* Chore #1168 : Upgrade to Java 8
* fix #1197 : Broken withName() method for CustomResourceDefinition.
Dependency Upgrade
New Feature
Bugs
* Fix #1180 : DeploymentExamples requires the definition of a selector with match labels
* Fix #1099 : CustomResourceDefinitions: withResourceVersion() causes NoSuchMethodError
* Fix #1156 : Watcher does not have correct authentication information in Openshift environment.
* Fix #1125 : ConfigMap labels are ignored when using mock KubernetesServer
* Fix #1144 : Get Request with OpenShift Mock Server Not Working
* Fix #1147 : Cluster context was being ignored when loading the Config from a kubeconfig file
* Fix #1162 : Deletion of DeploymentConfig now does not fail randomly because of issues related to owner references of the ReplicationController
* Fix #1165 : Null parameter values when processing a template are now handled properly
* Fix #1173 : Send response to Callback for exec commands that have no textual feedback
* Fix #1172 : Use v1beta1 for CronJob
* Fix #1158: Add support for label selectors in the mock server
Improvements
* Added Kubernetes/Openshift examples for client.getVersion()
* Fix #1126 : Add new option `kubernetes.disable.hostname.verification` / `KUBERNETES_DISABLE_HOSTNAME_VERIFICATION` to disable hostname verification
* Fix #1178 : Impersonate-Group may be specified multiple times
Dependency Upgrade
* Fix #924 : Include kubernetes-model in client BOM with dependencies.
New Feature
* Fix #1066 : Add support for Kubernetes RBAC Role and Role Binding
* Fix #1150: Add support for Kubernetes RBAC Cluster Role and Cluster Role Binding
* Fix #770: Added Support for CronJob
* Fix #1140: Provide User Utilities
* Fix #1139 : Make it easy to get the URL of a service.
Bugs
* Fix #1098 : Unable to create LimitRange from yaml
* Fix #1089 : Query parameters are not correctly processed if set in `masterUrl`
* Fix #1112 : Append multiple query param in masterUrl
* Fix #1085 : Impersonate parameters are not configurable for DefaultOpenShiftClient
* Fix #1106 : Fix typo in crud mode in mockserver
New Feature
* Fix #1020 : Support for Kubernetes/Openshift v1.9/v3.9 respectively
Improvements
* Fix #1119 : Regression Test are more stable and takes less time to execute
Dependency Upgrade
* Kubernetes Model upgraded to 3.0.0 with support for Kubernetes/Openshift v1.9/v3.9 respectively
Features and Fixes Available
* Resources according to Kubernetes/Openshift v1.9/v3.9
* Add support for RBAC Role, Role Binding and Netnamespace in Model
* KubernetesDeserializer shouldn't pickup mappings from incompatible providers
* Add all packages in KubernetesDeserializer
Major Movements and Changes
* SecurityContextConstraints has been moved to OpenShift client from Kubernetes Client
* Job dsl is in both `batch` and `extensions`(Extensions is deprecated)
* DaemonSet dsl is in both `apps` and `extensions`(Extensions is deprecated)
* Deployment dsl is in both `apps` and `extensions`(Extensions is deprecated)
* ReplicaSet dsl is in both `apps` and `extensions`(Extensions is deprecated)
* NetworkPolicy dsl is in both `network` and `extensiosn`(Extensions is deprecated)
* Storage Class moved from `client base DSL` to `storage` DSL
* PodSecurityPolicies moved from `client base DSL` and `extensions` to only `extensions`
* ThirdPartyResource has been removed.
Bugs
- Fix #1083 : Mock Kubernetes server only handles core and extensions API groups
- Fix #1087 : Mock server can't list custom resources
- Fix #1055 : Unable to log in to cluster when using username and password
New Feature
- Support
error
websocket channel - fabric8io#1045
Improvements
- Do not repeatedly create Config instance in exec - fabric8io#1081
- Determine kubernetes service host and port from environment if available - fabric8io#1086
- Upgraded Kuberneted Model version to 2.1.1
Features and Fixes Available
- KubernetesDeserializer can now lookup for resource mappings via ServiceLoader - fabric8io/kubernetes-model#307
- Add new package to OSGi exports - fabric8io/kubernetes-model#310
- Add additional types that are needed to support extensions - fabric8io/kubernetes-model#305
Bugs
- Fix #1070 : Error parsing openshift json template with the latest version
New Feature
- Fix #1048 : Add support for the k8s/openshift version
Improvements
- Fixes premature call to watcher onClose
Bugs
- Fix #1013 : Kubernetes connection is not getting closed.
- Fix #1004 : Multiple document handling breaks if "---" found anywhere in the document
- Fix #1035 : RejectedExecutionException in WatchHTTPManager
- Impersonation parameters not set in withRequestConfig - fabric8io#1037
Improvements
- NO_PROXY setting now supports IP ranges so you can specify whole subnet to be excluded from proxy traffic eg. 192.168.0.1/8
Bugs
New Feature
- Added support for StorageClass - fabric8io#978
- Added support for PodSecurityPolicy - fabric8io#992
- The client now warns when using Kubernetes alpha or beta resources - fabric8io#1010
- A Config can now be built from
Config.fromKubeconfig(kubeconfigFileContents)
: fabric8io#1029
Improvements
- Fixed issue of SecurityContextConstraints not working - fabric8io#982 Note :- This got fixed by fixing model - fabric8io/kubernetes-model#274 Dependencies Upgrade