Esempio n. 1
0
        public PrepareProviderConfigResult PrepareConfig(PrepareProviderConfigInput input)
        {
            _log.LogDebug("{method}: ", nameof(PrepareConfig));
            _log.LogTrace("->input = {@input}", input);
            _log.LogTrace("->state = {@state}", this);

            // TODO: configure and return any validation errors
            var result = new PrepareProviderConfigResult();

            _log.LogTrace("<-state = {@state}", this);
            _log.LogTrace("<-result = {@result}", this);
            return(result);
        }
        public override async Task <Tfplugin5.PrepareProviderConfig.Types.Response> PrepareProviderConfig(
            Tfplugin5.PrepareProviderConfig.Types.Request request, ServerCallContext context)
        {
            _log.LogDebug(">>>{method}>>>", nameof(PrepareProviderConfig));
            _log.LogTrace($"->input[{nameof(request)}] = {{@request}}", request);
            _log.LogTrace($"->input[{nameof(context)}] = {{@context}}", context);

            try
            {
                var response = new Tfplugin5.PrepareProviderConfig.Types.Response();

                // Default prepared config to incoming config
                response.PreparedConfig = request.Config;

                var plugin = SchemaHelper.GetPluginDetails(PluginAssembly);
                _ProviderInstance = DynamicValue.Unmarshal(plugin.Provider, request.Config);

                if (typeof(IHasPrepareProviderConfig).IsAssignableFrom(plugin.Provider))
                {
                    var invokeInput = new PrepareProviderConfigInput();

                    var invokeResult = (_ProviderInstance as IHasPrepareProviderConfig).PrepareConfig(invokeInput);
                    if (invokeResult == null)
                    {
                        throw new Exception("invocation result returned null");
                    }

                    var diagnostics = invokeResult.Diagnostics;
                    if (diagnostics.Count() > 0)
                    {
                        response.Diagnostics.Add(diagnostics.All());
                    }

                    response.PreparedConfig = DynamicValue.Marshal(plugin.Provider, _ProviderInstance);
                }

                _log.LogTrace("<-result = {@response}", response);
                return(await Task.FromResult(response));
            }
            catch (Exception ex)
            {
                _log.LogError(ex, "<!exception = ");
                throw;
            }
        }