static void convertTemplateToUpdateLoggingConfigurationCall()

in aws-networkfirewall-loggingconfiguration/src/main/java/software/amazon/networkfirewall/loggingconfiguration/Utils.java [98:174]


    static void convertTemplateToUpdateLoggingConfigurationCall(
            final ResourceModel model, final ProxyClient<NetworkFirewallClient> proxyClient, boolean isDeleteRequest, boolean isCreateRequest) {
        LoggingConfiguration trackingLoggingConfiguration;

        if (!isCreateRequest) {
            final DescribeLoggingConfigurationRequest readRequest = translateToReadRequest(model);
            final DescribeLoggingConfigurationResponse describeLoggingConfigurationResponse = proxyClient
                    .injectCredentialsAndInvokeV2(readRequest,
                            proxyClient.client()::describeLoggingConfiguration);
            trackingLoggingConfiguration = toModelLoggingConfiguration(
                    describeLoggingConfigurationResponse.loggingConfiguration());
        } else {
            trackingLoggingConfiguration = toModelLoggingConfiguration(null);
        }

        final Map<String, LogDestinationConfig> newConfigMap = isDeleteRequest? new HashMap<>(): convertToMap(model.getLoggingConfiguration());
        final Map<String, LogDestinationConfig> currentConfigMap = convertToMap(trackingLoggingConfiguration);


        for (String logType: logTypeSet) {
            final LogDestinationConfig currentConfig = currentConfigMap.get(logType);
            final LogDestinationConfig newConfig = newConfigMap.get(logType);

            if (newConfig != null) {
                if (currentConfig == null) {
                    // case: we add a new logType
                    final List<LogDestinationConfig> trackingLogDestinationConfig =
                            trackingLoggingConfiguration.getLogDestinationConfigs();
                    trackingLogDestinationConfig.add(newConfig);
                    executeUpdateLoggingConfigurationRequest(model, proxyClient,
                            trackingLoggingConfiguration,trackingLogDestinationConfig);
                } else if (newConfig.getLogDestinationType().equals(currentConfig.getLogDestinationType())) {
                    if (newConfig.getLogDestination().equals(currentConfig.getLogDestination())) {
                        continue;
                    }
                    // case: we just need to update the loggingDestination
                    final List<LogDestinationConfig> trackingLogDestinationConfig =
                            trackingLoggingConfiguration.getLogDestinationConfigs();
                    for (LogDestinationConfig logDestinationConfig: trackingLoggingConfiguration.
                            getLogDestinationConfigs()) {
                        if (logDestinationConfig.getLogType().equals(logType)) {
                            logDestinationConfig.setLogDestination(newConfig.getLogDestination());
                        }
                    }
                    executeUpdateLoggingConfigurationRequest(model, proxyClient,
                            trackingLoggingConfiguration, trackingLogDestinationConfig);
                } else {
                    // case: we need to swap the loggingDestinationType
                    final List<LogDestinationConfig> trackingLogDestinationConfig = new ArrayList<>();
                    for (LogDestinationConfig logDestinationConfig: trackingLoggingConfiguration.
                            getLogDestinationConfigs()) {
                        if (!logDestinationConfig.getLogType().equals(logType)) {
                            trackingLogDestinationConfig.add(logDestinationConfig);
                        }
                    }
                    executeUpdateLoggingConfigurationRequest(model, proxyClient,
                            trackingLoggingConfiguration, trackingLogDestinationConfig);
                    trackingLogDestinationConfig.add(newConfig);
                    executeUpdateLoggingConfigurationRequest(model, proxyClient,
                            trackingLoggingConfiguration, trackingLogDestinationConfig);
                }
            } else {
                if (currentConfig != null) {
                    //case: we remove the current loggingDestinationConfig
                    final List<LogDestinationConfig> trackingLogDestinationConfig = new ArrayList<>();
                    for (LogDestinationConfig logDestinationConfig: trackingLoggingConfiguration.
                            getLogDestinationConfigs()) {
                        if (!logDestinationConfig.getLogType().equals(logType)) {
                            trackingLogDestinationConfig.add(logDestinationConfig);
                        }
                    }
                    executeUpdateLoggingConfigurationRequest(model, proxyClient,
                            trackingLoggingConfiguration, trackingLogDestinationConfig);
                }
            }
        }
    }