public override async Task <PrepareProviderConfig.Types.Response> PrepareProviderConfig(
            PrepareProviderConfig.Types.Request request, ServerCallContext context)
        {
            var response = new PrepareProviderConfig.Types.Response();

            var providerType = _schemaResolver.PluginDetails.Provider;
            var configType   = _schemaResolver.GetProviderConfigurationSchema().Type;

            if (providerType.HasPrepareProviderConfigSkill(configType))
            {
                providerType.InvokePrepareProviderConfigSkill(
                    PluginProviderInstance,
                    configType,
                    writeInput: (inputType, input) => {
                    inputType.GetProperty(nameof(request.Config))
                    .SetValue(input, request.Config.UnmarshalFromDynamicValue(configType));
                },
                    readResult: (resultType, result) => {
                    var diagnostics = ((TFDiagnostics)resultType
                                       .GetProperty(nameof(response.Diagnostics))
                                       .GetValue(result));
                    if (diagnostics.Count() > 0)
                    {
                        response.Diagnostics.Add(diagnostics.All());
                    }

                    response.PreparedConfig = resultType
                                              .GetProperty(nameof(response.PreparedConfig))
                                              .GetValue(result)
                                              .MarshalToDynamicValue();
                });
            }
            else
            {
                // Default prepared config to incoming config
                response.PreparedConfig = request.Config;
            }

            return(await Task.FromResult(response));
        }
Пример #2
0
 public override Task <PrepareProviderConfig.Types.Response> PrepareProviderConfig(PrepareProviderConfig.Types.Request request, ServerCallContext context)
 {
     return(Task.FromResult(new PrepareProviderConfig.Types.Response()));
 }