2  * ============LICENSE_START=======================================================
 
   3  * Copyright (C) 2022 Nordix Foundation.
 
   4  * ================================================================================
 
   5  * Licensed under the Apache License, Version 2.0 (the "License");
 
   6  * you may not use this file except in compliance with the License.
 
   7  * You may obtain a copy of the License at
 
   9  *      http://www.apache.org/licenses/LICENSE-2.0
 
  11  * Unless required by applicable law or agreed to in writing, software
 
  12  * distributed under the License is distributed on an "AS IS" BASIS,
 
  13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  14  * See the License for the specific language governing permissions and
 
  15  * limitations under the License.
 
  17  * SPDX-License-Identifier: Apache-2.0
 
  18  * ============LICENSE_END=========================================================
 
  21 package org.onap.policy.clamp.acm.element.service;
 
  23 import java.util.List;
 
  24 import javax.ws.rs.core.Response;
 
  25 import lombok.NonNull;
 
  26 import lombok.RequiredArgsConstructor;
 
  27 import org.onap.policy.clamp.acm.element.handler.MessageActivator;
 
  28 import org.onap.policy.clamp.acm.element.handler.MessageHandler;
 
  29 import org.onap.policy.clamp.acm.element.main.parameters.ElementTopicParameters;
 
  30 import org.onap.policy.clamp.common.acm.exception.AutomationCompositionRuntimeException;
 
  31 import org.onap.policy.clamp.models.acm.messages.dmaap.element.ElementMessage;
 
  32 import org.onap.policy.clamp.models.acm.messages.rest.element.ElementConfig;
 
  33 import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
 
  34 import org.slf4j.Logger;
 
  35 import org.slf4j.LoggerFactory;
 
  36 import org.springframework.stereotype.Service;
 
  39 @RequiredArgsConstructor
 
  40 public class ConfigService {
 
  42     private static final Logger LOGGER = LoggerFactory.getLogger(ConfigService.class);
 
  44     private ElementConfig elementConfig = new ElementConfig();
 
  46     private final MessageHandler handler;
 
  47     private final MessageActivator messageActivator;
 
  50      * Activate messages and service and create the element configuration.
 
  52      * @param elementConfig the configuration
 
  54     public void activateElement(@NonNull ElementConfig elementConfig) {
 
  55         var listenerTopicParameters = new ElementTopicParameters(elementConfig.getTopicParameterGroup());
 
  57         var publisherTopicParameters = new ElementTopicParameters(elementConfig.getTopicParameterGroup());
 
  58         publisherTopicParameters.setTopic(elementConfig.getTopicParameterGroup().getPublisherTopic());
 
  60         var parameters = new TopicParameterGroup();
 
  61         parameters.setTopicSinks(List.of(publisherTopicParameters));
 
  62         parameters.setTopicSources(List.of(listenerTopicParameters));
 
  64         if (!parameters.isValid()) {
 
  65             throw new AutomationCompositionRuntimeException(Response.Status.BAD_REQUEST,
 
  66                     "Validation failed for topic parameter group. Kafka config not activated");
 
  69         if (messageActivator.isAlive()) {
 
  70             throw new AutomationCompositionRuntimeException(Response.Status.CONFLICT,
 
  71                     "Service Manager already running, cannot add Topic endpoint management");
 
  74         handler.active(elementConfig);
 
  75         messageActivator.activate(parameters);
 
  76         this.elementConfig = elementConfig;
 
  78         LOGGER.info("Messages and service activated");
 
  82      * Fetch element configuration.
 
  84      * @return element configuration present
 
  86     public ElementConfig getElementConfig() {
 
  91      * Deactivate messages and service and delete the element config.
 
  93     public void deleteConfig() {
 
  94         handler.deactivateElement();
 
  95         messageActivator.deactivate();
 
  96         elementConfig = new ElementConfig();
 
  97         LOGGER.info("Messages and service deactivated");