diff options
author | Fiete Ostkamp <Fiete.Ostkamp@telekom.de> | 2024-04-05 11:38:01 +0200 |
---|---|---|
committer | Fiete Ostkamp <Fiete.Ostkamp@telekom.de> | 2024-04-08 14:59:46 +0200 |
commit | f9999359c898143d0fb9a4a62063cbc51a40e25e (patch) | |
tree | 0cf789c1403af4607e557ffeb2c37a8fb9e72be0 /src/main | |
parent | 598c2469a004c50a1b29882e02e2fab7a8407d8b (diff) |
Model distribution fails with model-loader 1.13.5
- move sdc-distribution-client instantiation out of the ModelController into a separate class
- add integration test with embedded kafka (not fully implemented)
Issue-ID: AAI-3818
Change-Id: I0b5dd118d9145372ddf123319b58829d0ef9275a
Signed-off-by: Fiete Ostkamp <Fiete.Ostkamp@telekom.de>
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/org/onap/aai/modelloader/config/DistributionClientStartupConfig.java | 87 | ||||
-rw-r--r-- | src/main/java/org/onap/aai/modelloader/service/ModelController.java | 8 |
2 files changed, 95 insertions, 0 deletions
diff --git a/src/main/java/org/onap/aai/modelloader/config/DistributionClientStartupConfig.java b/src/main/java/org/onap/aai/modelloader/config/DistributionClientStartupConfig.java new file mode 100644 index 0000000..84c79f2 --- /dev/null +++ b/src/main/java/org/onap/aai/modelloader/config/DistributionClientStartupConfig.java @@ -0,0 +1,87 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2024 Deutsche Telekom AG Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.aai.modelloader.config; + +import java.util.Date; +import java.util.Timer; +import java.util.TimerTask; + +import org.onap.aai.cl.api.Logger; +import org.onap.aai.cl.eelf.LoggerFactory; +import org.onap.aai.modelloader.notification.EventCallback; +import org.onap.aai.modelloader.service.ModelLoaderMsgs; +import org.onap.aai.modelloader.service.SdcConnectionJob; +import org.onap.sdc.api.IDistributionClient; +import org.onap.sdc.api.results.IDistributionClientResult; +import org.onap.sdc.utils.DistributionActionResultEnum; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +@Component +@ConditionalOnProperty(value = "ml.distribution.connection.enabled", havingValue = "true", matchIfMissing = true) +public class DistributionClientStartupConfig { + + private static final Logger logger = LoggerFactory.getInstance().getLogger(DistributionClientStartupConfig.class); + + private final IDistributionClient client; + private final ModelLoaderConfig config; + private final EventCallback eventCallback; + + public DistributionClientStartupConfig(IDistributionClient client, ModelLoaderConfig config, + EventCallback eventCallback) { + this.client = client; + this.config = config; + this.eventCallback = eventCallback; + } + + @EventListener(ApplicationReadyEvent.class) + protected void initSdcClient() { + // Initialize distribution client + logger.debug(ModelLoaderMsgs.INITIALIZING, "Initializing distribution client..."); + IDistributionClientResult initResult = client.init(config, eventCallback); + + if (initResult.getDistributionActionResult() == DistributionActionResultEnum.SUCCESS) { + // Start distribution client + logger.debug(ModelLoaderMsgs.INITIALIZING, "Starting distribution client..."); + IDistributionClientResult startResult = client.start(); + if (startResult.getDistributionActionResult() == DistributionActionResultEnum.SUCCESS) { + logger.info(ModelLoaderMsgs.INITIALIZING, "Connection to SDC established"); + } else { + String errorMsg = "Failed to start distribution client: " + startResult.getDistributionMessageResult(); + logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg); + + // Kick off a timer to retry the SDC connection + Timer timer = new Timer(); + TimerTask task = new SdcConnectionJob(client, config, eventCallback, timer); + timer.schedule(task, new Date(), 60000); + } + } else { + String errorMsg = "Failed to initialize distribution client: " + initResult.getDistributionMessageResult(); + logger.error(ModelLoaderMsgs.ASDC_CONNECTION_ERROR, errorMsg); + + // Kick off a timer to retry the SDC connection + Timer timer = new Timer(); + TimerTask task = new SdcConnectionJob(client, config, eventCallback, timer); + timer.schedule(task, new Date(), 60000); + } + } +} diff --git a/src/main/java/org/onap/aai/modelloader/service/ModelController.java b/src/main/java/org/onap/aai/modelloader/service/ModelController.java index 0921982..5c784b2 100644 --- a/src/main/java/org/onap/aai/modelloader/service/ModelController.java +++ b/src/main/java/org/onap/aai/modelloader/service/ModelController.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Timer; import java.util.TimerTask; +import javax.annotation.PostConstruct; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @@ -71,6 +72,13 @@ public class ModelController implements ModelLoaderInterface { this.artifactDownloadManager = artifactDownloadManager; } + @PostConstruct + protected void start() { + if (!config.getASDCConnectionDisabled()) { + initSdcClient(); + } + } + /** * Responsible for stopping the connection to the distribution client before the resource is destroyed. */ |