fix missing aot model SourceGenerationContext (#1636)
* Add VersionTestAsync to validate Kubernetes client version retrieval * Add SourceGenerationContextGenerator and update registration in KubernetesClientSourceGenerator
This commit is contained in:
@@ -59,6 +59,7 @@ namespace LibKubernetesGenerator
|
|||||||
;
|
;
|
||||||
|
|
||||||
builder.RegisterType<ModelExtGenerator>();
|
builder.RegisterType<ModelExtGenerator>();
|
||||||
|
builder.RegisterType<SourceGenerationContextGenerator>();
|
||||||
builder.RegisterType<ModelGenerator>();
|
builder.RegisterType<ModelGenerator>();
|
||||||
builder.RegisterType<ApiGenerator>();
|
builder.RegisterType<ApiGenerator>();
|
||||||
builder.RegisterType<ClientSetGenerator>();
|
builder.RegisterType<ClientSetGenerator>();
|
||||||
@@ -79,6 +80,7 @@ namespace LibKubernetesGenerator
|
|||||||
|
|
||||||
container.Resolve<ModelGenerator>().Generate(swagger, ctx);
|
container.Resolve<ModelGenerator>().Generate(swagger, ctx);
|
||||||
container.Resolve<ModelExtGenerator>().Generate(swagger, ctx);
|
container.Resolve<ModelExtGenerator>().Generate(swagger, ctx);
|
||||||
|
container.Resolve<SourceGenerationContextGenerator>().Generate(swagger, ctx);
|
||||||
container.Resolve<VersionConverterStubGenerator>().Generate(swagger, ctx);
|
container.Resolve<VersionConverterStubGenerator>().Generate(swagger, ctx);
|
||||||
container.Resolve<ApiGenerator>().Generate(swagger, ctx);
|
container.Resolve<ApiGenerator>().Generate(swagger, ctx);
|
||||||
container.Resolve<ClientSetGenerator>().Generate(swagger, ctx);
|
container.Resolve<ClientSetGenerator>().Generate(swagger, ctx);
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
using Microsoft.CodeAnalysis;
|
||||||
|
using NSwag;
|
||||||
|
|
||||||
|
namespace LibKubernetesGenerator
|
||||||
|
{
|
||||||
|
internal class SourceGenerationContextGenerator
|
||||||
|
{
|
||||||
|
private readonly ScriptObjectFactory scriptObjectFactory;
|
||||||
|
|
||||||
|
public SourceGenerationContextGenerator(ScriptObjectFactory scriptObjectFactory)
|
||||||
|
{
|
||||||
|
this.scriptObjectFactory = scriptObjectFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Generate(OpenApiDocument swagger, IncrementalGeneratorPostInitializationContext context)
|
||||||
|
{
|
||||||
|
var definitions = swagger.Definitions.Values;
|
||||||
|
var sc = scriptObjectFactory.CreateScriptObject();
|
||||||
|
sc.SetValue("definitions", definitions, true);
|
||||||
|
|
||||||
|
context.RenderToContext("SourceGenerationContext.cs.template", sc, "SourceGenerationContext.g.cs");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,15 +15,3 @@ namespace k8s.Models
|
|||||||
}
|
}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NET8_0_OR_GREATER
|
|
||||||
namespace k8s
|
|
||||||
{
|
|
||||||
{{ for definition in definitions }}
|
|
||||||
[JsonSerializable(typeof({{ GetClassName definition }}))]
|
|
||||||
{{ end }}
|
|
||||||
internal partial class SourceGenerationContext : JsonSerializerContext
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
// <auto-generated>
|
||||||
|
// Code generated by https://github.com/kubernetes-client/csharp/tree/master/src/LibKubernetesGenerator
|
||||||
|
// Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
#if NET8_0_OR_GREATER
|
||||||
|
namespace k8s
|
||||||
|
{
|
||||||
|
{{ for definition in definitions }}
|
||||||
|
[JsonSerializable(typeof({{ GetClassName definition }}))]
|
||||||
|
{{ end }}
|
||||||
|
internal partial class SourceGenerationContext : JsonSerializerContext
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -370,6 +370,15 @@ namespace k8s.E2E
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[MinikubeFact]
|
||||||
|
public async Task VersionTestAsync()
|
||||||
|
{
|
||||||
|
using var client = CreateClient();
|
||||||
|
var version = await client.Version.GetCodeAsync().ConfigureAwait(false);
|
||||||
|
Assert.NotNull(version);
|
||||||
|
}
|
||||||
|
|
||||||
public static IKubernetes CreateClient()
|
public static IKubernetes CreateClient()
|
||||||
{
|
{
|
||||||
return new Kubernetes(KubernetesClientConfiguration.BuildDefaultConfig());
|
return new Kubernetes(KubernetesClientConfiguration.BuildDefaultConfig());
|
||||||
|
|||||||
Reference in New Issue
Block a user