* Implement CodecFactoryOptions allowing clients to opt-in to Pretty encoders and Strict Decoders
This patch introduces a new CodecFactory constructor that's capable of building different collections of Serializers.
Note that this diverges from the current design where an initialized CodecFactory is a kitchen sink holding many forms of useful Serilaizers in a non-customizeable way.
This approach is a suggested solution from this thread:
https://groups.google.com/d/msg/kubernetes-sig-api-machinery/R4Iiz3rOYd0/O6aX15_AAQAJ
A universal, defaulting, strict decoder is needed for Component Config efforts.
Future work aims to make strict behavior the default -- right now it's not implemented in a way that is performant enough for the apiserver.
This patch adds a deprecation notice for `NewCodecFactory()`.
For now, uses of this public constructor remain unchanged, and the tests are still exercising it.
It's been modified, however, to simply wrap the `WithOptions` version.
* Extend NewCodecFactory() signature with options mutators
When no mutators are passed, the legacy behavior is implemented.
This allows code to continue using NewCodecFactory() without modifications.
This also reverts the deprecation notice from the previous commit.
* Make Pretty always default and remove public WithOptions constructor
* Reduce []serializerType{} patch
* Test Strict CodecFactory option when enabled/disabled
* Fix CodecFactoryOptions nits
Golang automatically enables transport level gzip, but local network
clients may wish to disable it for better CPU usage and lower latency
(scheduler, controller-manager). Allow DisableCompression on rest.Config
to modify the underlying transport. This impacts the transport cache,
but it is expected that most clients connecting to the same servers
within a process will have the same compression config.
Adding a new error "ImplementedElsewhere" to cloud.go.
This error indicates that implementation for a particular service/loadbalancer spec is handled by a different controller.
The caller can ignore the error and skip modifying service status upon receiving this error.
This is used when the cloudprovider layer is not implementing loadBalancer service.
Implementation will be in a different controller running on master.