diff --git a/src/KubernetesClient/KubernetesYaml.cs b/src/KubernetesClient/KubernetesYaml.cs index b40ed8d44..b471cd87d 100644 --- a/src/KubernetesClient/KubernetesYaml.cs +++ b/src/KubernetesClient/KubernetesYaml.cs @@ -19,7 +19,8 @@ public static class KubernetesYaml .WithTypeConverter(new ByteArrayStringYamlConverter()) .WithTypeConverter(new ResourceQuantityYamlConverter()) .WithAttemptingUnquotedStringTypeDeserialization() - .WithOverridesFromJsonPropertyAttributes(); + .WithOverridesFromJsonPropertyAttributes() + .ExecuteDeserializerEvent(); private static readonly IDeserializer StrictDeserializer = CommonDeserializerBuilder @@ -42,8 +43,19 @@ public static class KubernetesYaml .WithEventEmitter(e => new FloatEmitter(e)) .ConfigureDefaultValuesHandling(DefaultValuesHandling.OmitNull) .WithOverridesFromJsonPropertyAttributes() + .ExecuteSerializerEvent() .BuildValueSerializer(); + private static DeserializerBuilder ExecuteDeserializerEvent(this DeserializerBuilder builder) + { + return KubernetesYamlConfiguration.ExecuteDeserializerOptions(builder); + } + + private static SerializerBuilder ExecuteSerializerEvent(this SerializerBuilder builder) + { + return KubernetesYamlConfiguration.ExecuteSerializerOptions(builder); + } + private static readonly IDictionary ModelTypeMap = typeof(KubernetesEntityAttribute).Assembly .GetTypes() .Where(t => t.GetCustomAttributes(typeof(KubernetesEntityAttribute), true).Any()) diff --git a/src/KubernetesClient/KubernetesYamlConfiguration.cs b/src/KubernetesClient/KubernetesYamlConfiguration.cs new file mode 100644 index 000000000..666a3c2b4 --- /dev/null +++ b/src/KubernetesClient/KubernetesYamlConfiguration.cs @@ -0,0 +1,34 @@ +using YamlDotNet.Serialization; + +namespace k8s +{ + /// + /// This class allows overriding the settings. + /// + public static class KubernetesYamlConfiguration + { + /// + /// Configures for . + /// + public static event EventHandler DeseralizerEvent; + + /// + /// Configures for . + /// + public static event EventHandler SeralizerEvent; + + internal static SerializerBuilder ExecuteSerializerOptions(SerializerBuilder builder) + { + SeralizerEvent?.Invoke(null, builder); + + return builder; + } + + internal static DeserializerBuilder ExecuteDeserializerOptions(DeserializerBuilder builder) + { + DeseralizerEvent?.Invoke(null, builder); + + return builder; + } + } +}