serialise one side
This commit is contained in:
parent
fa11f3aac1
commit
85886b31ca
|
@ -47,6 +47,7 @@
|
|||
<PackageReference Include="semver" Version="2.0.6" />
|
||||
<PackageReference Include="Serilog.Extensions.Logging" Version="3.0.1" />
|
||||
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
|
||||
<PackageReference Include="Ibasa.Pikala" Version="0.0.9" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -4,6 +4,12 @@ using System;
|
|||
|
||||
namespace Pulumi
|
||||
{
|
||||
public class DynamicResourceArgs : ResourceArgs
|
||||
{
|
||||
[Input("__provider")]
|
||||
internal string Provider { get; set; } = null!;
|
||||
}
|
||||
|
||||
public class DynamicResource : CustomResource
|
||||
{
|
||||
private static string GetTypeName(Resource resource)
|
||||
|
@ -13,24 +19,31 @@ namespace Pulumi
|
|||
return $"pulumi-dotnet:{typeName}";
|
||||
}
|
||||
|
||||
private static ResourceArgs SerializeProvider(DynamicResourceProvider provider, ResourceArgs? args)
|
||||
private static bool ByValueFilter(System.Reflection.Assembly assembly)
|
||||
{
|
||||
return args!;
|
||||
//
|
||||
// if PROVIDER_KEY in props:
|
||||
// raise Exception("A dynamic resource must not define the __provider key")
|
||||
//
|
||||
// props = cast(dict, props)
|
||||
// props[PROVIDER_KEY] = serialize_provider(provider)
|
||||
//
|
||||
// super().__init__(f"pulumi-python:{self._resource_type_name}", name, props, opts)
|
||||
//
|
||||
var pulumiAssembly = System.Reflection.Assembly.GetExecutingAssembly();
|
||||
return assembly != pulumiAssembly;
|
||||
}
|
||||
|
||||
private static ResourceArgs SetProvider(DynamicResourceProvider provider, DynamicResourceArgs? args)
|
||||
{
|
||||
if (args == null)
|
||||
{
|
||||
args = new DynamicResourceArgs();
|
||||
}
|
||||
|
||||
var pickler = new Ibasa.Pikala.Pickler(ByValueFilter);
|
||||
var memoryStream = new System.IO.MemoryStream();
|
||||
pickler.Serialize(memoryStream, provider);
|
||||
var base64String = System.Convert.ToBase64String(memoryStream.ToArray());
|
||||
args.Provider = base64String;
|
||||
return args;
|
||||
}
|
||||
|
||||
|
||||
#pragma warning disable RS0022 // Constructor make noninheritable base class inheritable
|
||||
public DynamicResource(DynamicResourceProvider provider, string name, ResourceArgs? args, CustomResourceOptions? options = null)
|
||||
: base((Func<Resource, string>)GetTypeName, name, SerializeProvider(provider, args), options)
|
||||
public DynamicResource(DynamicResourceProvider provider, string name, DynamicResourceArgs? args, CustomResourceOptions? options = null)
|
||||
: base((Func<Resource, string>)GetTypeName, name, SetProvider(provider, args), options)
|
||||
#pragma warning restore RS0022 // Constructor make noninheritable base class inheritable
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue