diff options
Diffstat (limited to 'mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka')
5 files changed, 345 insertions, 0 deletions
diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/AafCredential.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/AafCredential.java new file mode 100644 index 0000000..072a54c --- /dev/null +++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/AafCredential.java @@ -0,0 +1,52 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2021 Nokia 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.blueprintgenerator.service.common.kafka; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import lombok.Data; +import org.onap.blueprintgenerator.model.common.GetInput; + +/** + * @author : Tomasz Wrobel + * @date 01/18/2021 Application: DCAE/ONAP - Blueprint Generator + * Applications Common Model: A model class which represents AafCredential + */ + +@Data +@JsonInclude(value = Include.NON_NULL) +public class AafCredential { + + private GetInput username; + + private GetInput password; + + public AafCredential(String usernameInput, String passwordInput) { + + this.username = new GetInput(usernameInput); + + this.password = new GetInput(passwordInput); + + } +} diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaCommonConstants.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaCommonConstants.java new file mode 100644 index 0000000..0a040be --- /dev/null +++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaCommonConstants.java @@ -0,0 +1,39 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2021 Nokia 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.blueprintgenerator.service.common.kafka; + +/** + * @author : Tomasz Wrobel + * @date 01/18/2021 Application: DCAE/ONAP - Blueprint Generator + * Class which contains Kafka Constants + */ + +public class KafkaCommonConstants { + + public static final String KAFKA_INFO_BOOTSTRAP_SERVERS_INPUT_NAME = "kafka_bootstrap_servers"; + + public static final String AFF_KAFKA_USER_INPUT_NAME = "kafka_username"; + public static final String AAF_KAFKA_PASSWORD_INPUT_NAME = "kafka_password"; + +} diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaInfo.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaInfo.java new file mode 100644 index 0000000..c03eaf0 --- /dev/null +++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaInfo.java @@ -0,0 +1,56 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2021 Nokia 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.blueprintgenerator.service.common.kafka; + +import static org.onap.blueprintgenerator.service.common.kafka.KafkaCommonConstants.KAFKA_INFO_BOOTSTRAP_SERVERS_INPUT_NAME; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import lombok.Data; +import org.onap.blueprintgenerator.model.common.GetInput; + + +/** + * @author : Tomasz Wrobel + * @date 01/18/2021 Application: DCAE/ONAP - Blueprint Generator + * Applications Common Model: A model class which represents Kafka Info + */ + +@Data +@JsonInclude(value = Include.NON_NULL) +public class KafkaInfo { + + private GetInput bootstrap_servers; + + private GetInput topic_name; + + public KafkaInfo(String topicName) { + + this.bootstrap_servers = new GetInput(KAFKA_INFO_BOOTSTRAP_SERVERS_INPUT_NAME); + + this.topic_name = new GetInput(topicName); + + } + +} diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStream.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStream.java new file mode 100644 index 0000000..ca92f69 --- /dev/null +++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStream.java @@ -0,0 +1,61 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2021 Nokia 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.blueprintgenerator.service.common.kafka; + +import static org.onap.blueprintgenerator.service.common.kafka.KafkaCommonConstants.AAF_KAFKA_PASSWORD_INPUT_NAME; +import static org.onap.blueprintgenerator.service.common.kafka.KafkaCommonConstants.AFF_KAFKA_USER_INPUT_NAME; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; +import org.onap.blueprintgenerator.model.common.BaseStream; + + +/** + * @author : Tomasz Wrobel + * @date 01/18/2021 Application: DCAE/ONAP - Blueprint Generator + * Applications Common Model: A model class which represents Kafka Stream + */ + +@Data +@JsonInclude(value = JsonInclude.Include.NON_NULL) +@JsonIgnoreProperties(ignoreUnknown = true) +public class KafkaStream implements BaseStream { + + private final String type = "kafka"; + + @JsonProperty("aaf_credentials") + private AafCredential aafCredential; + + @JsonProperty("kafka_info") + private KafkaInfo kafkaInfo; + + public KafkaStream(String topicName) { + this.aafCredential = new AafCredential(AFF_KAFKA_USER_INPUT_NAME, AAF_KAFKA_PASSWORD_INPUT_NAME); + this.kafkaInfo = new KafkaInfo(topicName); + } +} diff --git a/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamService.java b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamService.java new file mode 100644 index 0000000..2090ef0 --- /dev/null +++ b/mod/bpgenerator/onap/src/main/java/org/onap/blueprintgenerator/service/common/kafka/KafkaStreamService.java @@ -0,0 +1,137 @@ +/* + * + * * ============LICENSE_START======================================================= + * * org.onap.dcae + * * ================================================================================ + * * Copyright (c) 2021 Nokia 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.blueprintgenerator.service.common.kafka; + + +import static org.onap.blueprintgenerator.service.common.kafka.KafkaCommonConstants.AAF_KAFKA_PASSWORD_INPUT_NAME; +import static org.onap.blueprintgenerator.service.common.kafka.KafkaCommonConstants.AFF_KAFKA_USER_INPUT_NAME; +import static org.onap.blueprintgenerator.service.common.kafka.KafkaCommonConstants.KAFKA_INFO_BOOTSTRAP_SERVERS_INPUT_NAME; + +import java.util.LinkedHashMap; +import java.util.Map; +import org.onap.blueprintgenerator.service.base.BlueprintHelperService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author : Tomasz Wrobel + * @date 18/01/2021 Application: ONAP - Blueprint Generator Common ONAP Service used to create Kafka Stream application + * config object and Kafka Stream inputs + */ +@Service +public class KafkaStreamService { + + private static final String PUBLISH_URL_SUFFIX = "_publish_url"; + private static final String SUBSCRIBE_URL_SUFFIX = "_subscribe_url"; + private static final String DEFAULT_STREAM_URL = "sample_stream_url"; + private static final String DEFAULT_BOOTSTRAP_SERVER = "message-router-kafka:9092"; + private static final String DEFAULT_AAF_USER = "admin"; + private static final String DEFAULT_AAF_PASSWORD = "admin_secret"; + + @Autowired + private BlueprintHelperService blueprintHelperService; + + + /** + * Creates publish stream inputs for given streamName + * + * @param streamName Stream name + * @return + */ + public Map<String, LinkedHashMap<String, Object>> createStreamPublishInputs(String streamName) { + return createStreamInputs(streamName + PUBLISH_URL_SUFFIX); + } + + /** + * Creates subscribe stream inputs for given streamName + * + * @param streamName Stream name + * @return + */ + public Map<String, LinkedHashMap<String, Object>> createStreamSubscribeInputs(String streamName) { + return createStreamInputs(streamName + SUBSCRIBE_URL_SUFFIX); + } + + /** + * Creates Application properties publish stream object for given streamName + * + * @param streamName Stream name + * @return + */ + public Map<String, KafkaStream> createAppPropertiesPublish(String streamName) { + + LinkedHashMap<String, KafkaStream> kafkaStreamMap = new LinkedHashMap<>(); + KafkaStream kafkaStream = createAppProperties(streamName, PUBLISH_URL_SUFFIX); + + kafkaStreamMap.put(streamName, kafkaStream); + + return kafkaStreamMap; + } + + /** + * Creates Application properties subscribe stream object for given streamName + * + * @param streamName Stream name + * @return + */ + public Map<String, KafkaStream> createAppPropertiesSubscribe(String streamName) { + + LinkedHashMap<String, KafkaStream> kafkaStreamMap = new LinkedHashMap<>(); + KafkaStream kafkaStream = createAppProperties(streamName, SUBSCRIBE_URL_SUFFIX); + + kafkaStreamMap.put(streamName, kafkaStream); + + return kafkaStreamMap; + } + + private KafkaStream createAppProperties(String streamName, String urlSuffix) { + String topicName = streamName + urlSuffix; + + return new KafkaStream(topicName); + } + + private Map<String, LinkedHashMap<String, Object>> createStreamInputs(String streamName) { + LinkedHashMap<String, LinkedHashMap<String, Object>> streamInputs = createBaseInputs(); + LinkedHashMap<String, Object> stream = + blueprintHelperService.createStringInput(DEFAULT_STREAM_URL); + streamInputs.put(streamName, stream); + return streamInputs; + } + + private LinkedHashMap<String, LinkedHashMap<String, Object>> createBaseInputs() { + LinkedHashMap<String, LinkedHashMap<String, Object>> baseInputs = new LinkedHashMap<>(); + + LinkedHashMap<String, Object> kafka_message_router = blueprintHelperService + .createStringInput(DEFAULT_BOOTSTRAP_SERVER); + baseInputs.put(KAFKA_INFO_BOOTSTRAP_SERVERS_INPUT_NAME, kafka_message_router); + + LinkedHashMap<String, Object> kafka_username = blueprintHelperService.createStringInput(DEFAULT_AAF_USER); + baseInputs.put(AFF_KAFKA_USER_INPUT_NAME, kafka_username); + + LinkedHashMap<String, Object> kafka_password = blueprintHelperService.createStringInput(DEFAULT_AAF_PASSWORD); + baseInputs.put(AAF_KAFKA_PASSWORD_INPUT_NAME, kafka_password); + + return baseInputs; + } +} |