summaryrefslogtreecommitdiffstats
path: root/ms/blueprintsprocessor/modules/commons
diff options
context:
space:
mode:
Diffstat (limited to 'ms/blueprintsprocessor/modules/commons')
-rw-r--r--ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/DatabasePropertiesDSL.kt17
-rw-r--r--ms/blueprintsprocessor/modules/commons/grpc-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/GrpcPropertiesDSL.kt17
-rw-r--r--ms/blueprintsprocessor/modules/commons/message-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/BluePrintMessageLibData.kt8
-rw-r--r--ms/blueprintsprocessor/modules/commons/message-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/MessagePropertiesDSL.kt255
-rw-r--r--ms/blueprintsprocessor/modules/commons/message-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/MessagePropertiesDSLTest.kt101
-rw-r--r--ms/blueprintsprocessor/modules/commons/nats-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nats/NatsPropertiesDSL.kt112
-rw-r--r--ms/blueprintsprocessor/modules/commons/nats-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nats/NatsPropertiesDSLTest.kt63
-rw-r--r--ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibConfiguration.kt1
-rw-r--r--ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/RestClientPropertiesDSL.kt108
-rw-r--r--ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientPropertiesDSLTest.kt75
-rw-r--r--ms/blueprintsprocessor/modules/commons/ssh-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/SshPropertiesDSL.kt101
-rw-r--r--ms/blueprintsprocessor/modules/commons/ssh-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/SshPropertiesDSLTest.kt56
12 files changed, 852 insertions, 62 deletions
diff --git a/ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/DatabasePropertiesDSL.kt b/ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/DatabasePropertiesDSL.kt
new file mode 100644
index 000000000..036beb369
--- /dev/null
+++ b/ms/blueprintsprocessor/modules/commons/db-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/db/DatabasePropertiesDSL.kt
@@ -0,0 +1,17 @@
+/*
+ * Copyright © 2018-2019 AT&T Intellectual Property.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.db
diff --git a/ms/blueprintsprocessor/modules/commons/grpc-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/GrpcPropertiesDSL.kt b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/GrpcPropertiesDSL.kt
new file mode 100644
index 000000000..3a0e9c633
--- /dev/null
+++ b/ms/blueprintsprocessor/modules/commons/grpc-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/grpc/GrpcPropertiesDSL.kt
@@ -0,0 +1,17 @@
+/*
+ * Copyright © 2018-2019 AT&T Intellectual Property.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.grpc
diff --git a/ms/blueprintsprocessor/modules/commons/message-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/BluePrintMessageLibData.kt b/ms/blueprintsprocessor/modules/commons/message-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/BluePrintMessageLibData.kt
index 59e3606ea..005223d9b 100644
--- a/ms/blueprintsprocessor/modules/commons/message-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/BluePrintMessageLibData.kt
+++ b/ms/blueprintsprocessor/modules/commons/message-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/BluePrintMessageLibData.kt
@@ -20,7 +20,9 @@ package org.onap.ccsdk.cds.blueprintsprocessor.message
import org.apache.kafka.streams.StreamsConfig
/** Producer Properties **/
-open class MessageProducerProperties
+open class MessageProducerProperties {
+ lateinit var type: String
+}
open class KafkaBasicAuthMessageProducerProperties : MessageProducerProperties() {
lateinit var bootstrapServers: String
@@ -35,7 +37,9 @@ open class KafkaBasicAuthMessageProducerProperties : MessageProducerProperties()
/** Consumer Properties **/
-open class MessageConsumerProperties
+open class MessageConsumerProperties {
+ lateinit var type: String
+}
open class KafkaStreamsConsumerProperties : MessageConsumerProperties() {
lateinit var bootstrapServers: String
diff --git a/ms/blueprintsprocessor/modules/commons/message-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/MessagePropertiesDSL.kt b/ms/blueprintsprocessor/modules/commons/message-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/MessagePropertiesDSL.kt
new file mode 100644
index 000000000..c6e923948
--- /dev/null
+++ b/ms/blueprintsprocessor/modules/commons/message-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/MessagePropertiesDSL.kt
@@ -0,0 +1,255 @@
+/*
+ * Copyright © 2018-2019 AT&T Intellectual Property.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.message
+
+import com.fasterxml.jackson.databind.JsonNode
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType
+import org.onap.ccsdk.cds.controllerblueprints.core.data.RelationshipType
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.PropertiesAssignmentBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.RelationshipTemplateBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.TopologyTemplateBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.relationshipType
+
+/** Relationships Types DSL for Message Producer */
+fun BluePrintTypes.relationshipTypeConnectsToMessageProducer(): RelationshipType {
+ return relationshipType(
+ id = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_MESSAGE_PRODUCER,
+ version = BluePrintConstants.DEFAULT_VERSION_NUMBER,
+ derivedFrom = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO,
+ description = "Relationship connects to through message producer."
+ ) {
+ property(
+ BluePrintConstants.PROPERTY_CONNECTION_CONFIG,
+ BluePrintConstants.DATA_TYPE_MAP,
+ true,
+ "Connection Config details."
+ )
+ validTargetTypes(arrayListOf(BluePrintConstants.MODEL_TYPE_CAPABILITY_TYPE_ENDPOINT))
+ }
+}
+
+fun BluePrintTypes.relationshipTypeConnectsToMessageConsumer(): RelationshipType {
+ return relationshipType(
+ id = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_MESSAGE_CONSUMER,
+ version = BluePrintConstants.DEFAULT_VERSION_NUMBER,
+ derivedFrom = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO,
+ description = "Relationship type connects to message consumer."
+ ) {
+ property(
+ BluePrintConstants.PROPERTY_CONNECTION_CONFIG,
+ BluePrintConstants.DATA_TYPE_MAP,
+ true,
+ "Connection Config details."
+ )
+ validTargetTypes(arrayListOf(BluePrintConstants.MODEL_TYPE_CAPABILITY_TYPE_ENDPOINT))
+ }
+}
+
+/** Relationships Templates DSL for Message Producer */
+fun TopologyTemplateBuilder.relationshipTemplateMessageProducer(
+ name: String,
+ description: String,
+ block: MessageProducerRelationshipTemplateBuilder.() -> Unit
+) {
+ if (relationshipTemplates == null) relationshipTemplates = hashMapOf()
+ val relationshipTemplate =
+ MessageProducerRelationshipTemplateBuilder(name, description).apply(block).build()
+ relationshipTemplates!![relationshipTemplate.id!!] = relationshipTemplate
+}
+
+class MessageProducerRelationshipTemplateBuilder(name: String, description: String) :
+ RelationshipTemplateBuilder(
+ name,
+ BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_MESSAGE_PRODUCER, description
+ ) {
+
+ fun kafkaBasicAuth(block: KafkaBasicAuthMessageProducerPropertiesAssignmentBuilder.() -> Unit) {
+ property(
+ BluePrintConstants.PROPERTY_CONNECTION_CONFIG,
+ BluePrintTypes.kafkaBasicAuthMessageProducerProperties(block)
+ )
+ }
+}
+
+fun BluePrintTypes.kafkaBasicAuthMessageProducerProperties(block: KafkaBasicAuthMessageProducerPropertiesAssignmentBuilder.() -> Unit): JsonNode {
+ val assignments = KafkaBasicAuthMessageProducerPropertiesAssignmentBuilder().apply(block).build()
+ assignments[KafkaBasicAuthMessageProducerProperties::type.name] =
+ MessageLibConstants.TYPE_KAFKA_BASIC_AUTH.asJsonPrimitive()
+ return assignments.asJsonType()
+}
+
+open class MessageProducerPropertiesAssignmentBuilder : PropertiesAssignmentBuilder()
+
+class KafkaBasicAuthMessageProducerPropertiesAssignmentBuilder : MessageProducerPropertiesAssignmentBuilder() {
+
+ fun bootstrapServers(bootstrapServers: String) = bootstrapServers(bootstrapServers.asJsonPrimitive())
+
+ fun bootstrapServers(bootstrapServers: JsonNode) =
+ property(KafkaBasicAuthMessageProducerProperties::bootstrapServers, bootstrapServers)
+
+ fun topic(topic: String) = topic(topic.asJsonPrimitive())
+
+ fun topic(topic: JsonNode) =
+ property(KafkaBasicAuthMessageProducerProperties::topic, topic)
+
+ fun clientId(clientId: String) = bootstrapServers(clientId.asJsonPrimitive())
+
+ fun clientId(clientId: JsonNode) =
+ property(KafkaBasicAuthMessageProducerProperties::clientId, clientId)
+
+ fun acks(acks: String) = acks(acks.asJsonPrimitive())
+
+ fun acks(acks: JsonNode) = property(KafkaBasicAuthMessageProducerProperties::acks, acks)
+
+ fun retries(retries: Int) = retries(retries.asJsonPrimitive())
+
+ fun retries(retries: JsonNode) = property(KafkaBasicAuthMessageProducerProperties::retries, retries)
+
+ fun enableIdempotence(enableIdempotence: Boolean) = enableIdempotence(enableIdempotence.asJsonPrimitive())
+
+ fun enableIdempotence(enableIdempotence: JsonNode) =
+ property(KafkaBasicAuthMessageProducerProperties::enableIdempotence, enableIdempotence)
+}
+
+/** Relationships Templates DSL for Message Consumer */
+fun TopologyTemplateBuilder.relationshipTemplateMessageConsumer(
+ name: String,
+ description: String,
+ block: MessageConsumerRelationshipTemplateBuilder.() -> Unit
+) {
+ if (relationshipTemplates == null) relationshipTemplates = hashMapOf()
+ val relationshipTemplate =
+ MessageConsumerRelationshipTemplateBuilder(name, description).apply(block).build()
+ relationshipTemplates!![relationshipTemplate.id!!] = relationshipTemplate
+}
+
+class MessageConsumerRelationshipTemplateBuilder(name: String, description: String) :
+ RelationshipTemplateBuilder(
+ name,
+ BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_MESSAGE_CONSUMER, description
+ ) {
+
+ fun kafkaBasicAuth(block: KafkaBasicAuthMessageConsumerPropertiesAssignmentBuilder.() -> Unit) {
+ property(
+ BluePrintConstants.PROPERTY_CONNECTION_CONFIG,
+ BluePrintTypes.kafkaBasicAuthMessageConsumerProperties(block)
+ )
+ }
+
+ fun kafkaStreamsBasicAuth(block: KafkaStreamsBasicAuthConsumerPropertiesAssignmentBuilder.() -> Unit) {
+ property(
+ BluePrintConstants.PROPERTY_CONNECTION_CONFIG,
+ BluePrintTypes.kafkaStreamsBasicAuthConsumerProperties(block)
+ )
+ }
+}
+
+fun BluePrintTypes.kafkaBasicAuthMessageConsumerProperties(block: KafkaBasicAuthMessageConsumerPropertiesAssignmentBuilder.() -> Unit): JsonNode {
+ val assignments = KafkaBasicAuthMessageConsumerPropertiesAssignmentBuilder().apply(block).build()
+ assignments[KafkaBasicAuthMessageConsumerProperties::type.name] =
+ MessageLibConstants.TYPE_KAFKA_BASIC_AUTH.asJsonPrimitive()
+ return assignments.asJsonType()
+}
+
+fun BluePrintTypes.kafkaStreamsBasicAuthConsumerProperties(block: KafkaStreamsBasicAuthConsumerPropertiesAssignmentBuilder.() -> Unit): JsonNode {
+ val assignments = KafkaStreamsBasicAuthConsumerPropertiesAssignmentBuilder().apply(block).build()
+ assignments[KafkaStreamsBasicAuthConsumerProperties::type.name] =
+ MessageLibConstants.TYPE_KAFKA_STREAMS_BASIC_AUTH.asJsonPrimitive()
+ return assignments.asJsonType()
+}
+
+open class MessageConsumerPropertiesAssignmentBuilder : PropertiesAssignmentBuilder()
+
+open class KafkaMessageConsumerPropertiesAssignmentBuilder : MessageConsumerPropertiesAssignmentBuilder() {
+
+ fun bootstrapServers(bootstrapServers: String) = bootstrapServers(bootstrapServers.asJsonPrimitive())
+
+ fun bootstrapServers(bootstrapServers: JsonNode) =
+ property(KafkaMessageConsumerProperties::bootstrapServers, bootstrapServers)
+
+ fun groupId(groupId: String) = groupId(groupId.asJsonPrimitive())
+
+ fun groupId(groupId: JsonNode) =
+ property(KafkaMessageConsumerProperties::groupId, groupId)
+
+ fun clientId(clientId: String) = clientId(clientId.asJsonPrimitive())
+
+ fun clientId(clientId: JsonNode) =
+ property(KafkaMessageConsumerProperties::clientId, clientId)
+
+ fun topic(topic: String) = topic(topic.asJsonPrimitive())
+
+ fun topic(topic: JsonNode) =
+ property(KafkaMessageConsumerProperties::topic, topic)
+
+ fun autoCommit(autoCommit: Boolean) = autoCommit(autoCommit.asJsonPrimitive())
+
+ fun autoCommit(autoCommit: JsonNode) =
+ property(KafkaMessageConsumerProperties::autoCommit, autoCommit)
+
+ fun autoOffsetReset(autoOffsetReset: String) = autoOffsetReset(autoOffsetReset.asJsonPrimitive())
+
+ fun autoOffsetReset(autoOffsetReset: JsonNode) =
+ property(KafkaMessageConsumerProperties::autoOffsetReset, autoOffsetReset)
+
+ fun pollMillSec(pollMillSec: Int) = pollMillSec(pollMillSec.asJsonPrimitive())
+
+ fun pollMillSec(pollMillSec: JsonNode) =
+ property(KafkaMessageConsumerProperties::pollMillSec, pollMillSec)
+
+ fun pollRecords(pollRecords: Int) = pollRecords(pollRecords.asJsonPrimitive())
+
+ fun pollRecords(pollRecords: JsonNode) =
+ property(KafkaMessageConsumerProperties::pollRecords, pollRecords)
+}
+
+/** KafkaBasicAuthMessageConsumerProperties assignment builder */
+class KafkaBasicAuthMessageConsumerPropertiesAssignmentBuilder : KafkaMessageConsumerPropertiesAssignmentBuilder()
+
+/** KafkaStreamsConsumerProperties assignment builder */
+open class KafkaStreamsConsumerPropertiesAssignmentBuilder : MessageConsumerPropertiesAssignmentBuilder() {
+
+ fun bootstrapServers(bootstrapServers: String) = bootstrapServers(bootstrapServers.asJsonPrimitive())
+
+ fun bootstrapServers(bootstrapServers: JsonNode) =
+ property(KafkaStreamsConsumerProperties::bootstrapServers, bootstrapServers)
+
+ fun applicationId(applicationId: String) = bootstrapServers(applicationId.asJsonPrimitive())
+
+ fun applicationId(applicationId: JsonNode) =
+ property(KafkaStreamsConsumerProperties::applicationId, applicationId)
+
+ fun topic(topic: String) = topic(topic.asJsonPrimitive())
+
+ fun topic(topic: JsonNode) =
+ property(KafkaStreamsConsumerProperties::topic, topic)
+
+ fun autoOffsetReset(autoOffsetReset: String) = autoOffsetReset(autoOffsetReset.asJsonPrimitive())
+
+ fun autoOffsetReset(autoOffsetReset: JsonNode) =
+ property(KafkaStreamsConsumerProperties::autoOffsetReset, autoOffsetReset)
+
+ fun processingGuarantee(processingGuarantee: String) = processingGuarantee(processingGuarantee.asJsonPrimitive())
+
+ fun processingGuarantee(processingGuarantee: JsonNode) =
+ property(KafkaStreamsConsumerProperties::processingGuarantee, processingGuarantee)
+}
+
+class KafkaStreamsBasicAuthConsumerPropertiesAssignmentBuilder : KafkaStreamsConsumerPropertiesAssignmentBuilder()
diff --git a/ms/blueprintsprocessor/modules/commons/message-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/MessagePropertiesDSLTest.kt b/ms/blueprintsprocessor/modules/commons/message-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/MessagePropertiesDSLTest.kt
new file mode 100644
index 000000000..9ece90ffc
--- /dev/null
+++ b/ms/blueprintsprocessor/modules/commons/message-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/message/MessagePropertiesDSLTest.kt
@@ -0,0 +1,101 @@
+/*
+ * Copyright © 2018-2019 AT&T Intellectual Property.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.message
+
+import org.apache.kafka.streams.StreamsConfig
+import org.junit.Test
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.relationshipTypeConnectsTo
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.serviceTemplate
+import kotlin.test.assertEquals
+import kotlin.test.assertNotNull
+
+class MessagePropertiesDSLTest {
+
+ @Test
+ fun testMessageProducerDSL() {
+ val serviceTemplate = serviceTemplate("message-properties-test", "1.0.0", "xxx.@xx.com", "message") {
+ topologyTemplate {
+ relationshipTemplateMessageProducer("sample-basic-auth", "Message Producer") {
+ kafkaBasicAuth {
+ bootstrapServers("sample-bootstrapServers")
+ clientId("sample-client-id")
+ acks("all")
+ retries(3)
+ enableIdempotence(true)
+ topic("sample-topic")
+ }
+ }
+ }
+ relationshipTypes(
+ arrayListOf(
+ BluePrintTypes.relationshipTypeConnectsToMessageProducer(),
+ BluePrintTypes.relationshipTypeConnectsTo()
+ )
+ )
+ }
+ assertNotNull(serviceTemplate, "failed to create service template")
+ val relationshipTemplates = serviceTemplate.topologyTemplate?.relationshipTemplates
+ assertNotNull(relationshipTemplates, "failed to get relationship templates")
+ assertEquals(1, relationshipTemplates.size, "relationshipTemplates doesn't match")
+ assertNotNull(relationshipTemplates["sample-basic-auth"], "failed to get sample-basic-auth")
+ // println(serviceTemplate.asJsonString(true))
+ }
+
+ @Test
+ fun testMessageConsumerDSL() {
+ val serviceTemplate = serviceTemplate("message-properties-test", "1.0.0", "xxx.@xx.com", "message") {
+ topologyTemplate {
+ relationshipTemplateMessageConsumer("sample-basic-auth", "Message Consumer") {
+ kafkaBasicAuth {
+ bootstrapServers("sample-bootstrapServers")
+ clientId("sample-client-id")
+ groupId("sample-group-id")
+ topic("sample-topic")
+ autoCommit(false)
+ autoOffsetReset("latest")
+ pollMillSec(5000)
+ pollRecords(20)
+ }
+ }
+ relationshipTemplateMessageConsumer("sample-stream-basic-auth", "Message Consumer") {
+ kafkaStreamsBasicAuth {
+ bootstrapServers("sample-bootstrapServers")
+ applicationId("sample-application-id")
+ autoOffsetReset("latest")
+ processingGuarantee(StreamsConfig.EXACTLY_ONCE)
+ topic("sample-streaming-topic")
+ }
+ }
+ }
+ relationshipTypes(
+ arrayListOf(
+ BluePrintTypes.relationshipTypeConnectsToMessageConsumer(),
+ BluePrintTypes.relationshipTypeConnectsTo()
+ )
+ )
+ }
+
+ assertNotNull(serviceTemplate, "failed to create service template")
+ val relationshipTemplates = serviceTemplate.topologyTemplate?.relationshipTemplates
+ assertNotNull(relationshipTemplates, "failed to get relationship templates")
+ assertEquals(2, relationshipTemplates.size, "relationshipTemplates doesn't match")
+ assertNotNull(relationshipTemplates["sample-basic-auth"], "failed to get sample-basic-auth")
+ assertNotNull(relationshipTemplates["sample-stream-basic-auth"], "failed to get sample-stream-basic-auth")
+ // println(serviceTemplate.asJsonString(true))
+ }
+}
diff --git a/ms/blueprintsprocessor/modules/commons/nats-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nats/NatsPropertiesDSL.kt b/ms/blueprintsprocessor/modules/commons/nats-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nats/NatsPropertiesDSL.kt
new file mode 100644
index 000000000..5c4301b38
--- /dev/null
+++ b/ms/blueprintsprocessor/modules/commons/nats-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nats/NatsPropertiesDSL.kt
@@ -0,0 +1,112 @@
+/*
+ * Copyright © 2018-2019 AT&T Intellectual Property.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.nats
+
+import com.fasterxml.jackson.databind.JsonNode
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonNode
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
+import org.onap.ccsdk.cds.controllerblueprints.core.data.RelationshipType
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.PropertiesAssignmentBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.RelationshipTemplateBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.TopologyTemplateBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.relationshipType
+
+/** Relationships Types DSL for NATS Producer */
+fun BluePrintTypes.relationshipTypeConnectsToNats(): RelationshipType {
+ return relationshipType(
+ id = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_NATS,
+ version = BluePrintConstants.DEFAULT_VERSION_NUMBER,
+ derivedFrom = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO,
+ description = "Relationship connects to through NATS Client."
+ ) {
+ property(
+ BluePrintConstants.PROPERTY_CONNECTION_CONFIG,
+ BluePrintConstants.DATA_TYPE_MAP,
+ true,
+ "Connection Config details."
+ )
+ validTargetTypes(arrayListOf(BluePrintConstants.MODEL_TYPE_CAPABILITY_TYPE_ENDPOINT))
+ }
+}
+
+/** Relationships Templates for Nats */
+fun TopologyTemplateBuilder.relationshipTemplateNats(
+ name: String,
+ description: String,
+ block: NatsRelationshipTemplateBuilder.() -> Unit
+) {
+ if (relationshipTemplates == null) relationshipTemplates = hashMapOf()
+ val relationshipTemplate = NatsRelationshipTemplateBuilder(name, description).apply(block).build()
+ relationshipTemplates!![relationshipTemplate.id!!] = relationshipTemplate
+}
+
+class NatsRelationshipTemplateBuilder(name: String, description: String) :
+ RelationshipTemplateBuilder(
+ name,
+ BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_NATS, description
+ ) {
+
+ fun tokenAuth(block: NatsTokenAuthPropertiesAssignmentBuilder.() -> Unit) {
+ property(BluePrintConstants.PROPERTY_CONNECTION_CONFIG, BluePrintTypes.tokenAuthNatsProperties(block))
+ }
+
+ fun tlsAuth(block: NatsTLSAuthPropertiesAssignmentBuilder.() -> Unit) {
+ property(BluePrintConstants.PROPERTY_CONNECTION_CONFIG, BluePrintTypes.tlsAuthNatsProperties(block))
+ }
+}
+
+fun BluePrintTypes.tokenAuthNatsProperties(block: NatsTokenAuthPropertiesAssignmentBuilder.() -> Unit): JsonNode {
+ val assignments = NatsTokenAuthPropertiesAssignmentBuilder().apply(block).build()
+ assignments[NatsConnectionProperties::type.name] = NatsLibConstants.TYPE_TOKEN_AUTH.asJsonPrimitive()
+ return assignments.asJsonNode()
+}
+
+fun BluePrintTypes.tlsAuthNatsProperties(block: NatsTLSAuthPropertiesAssignmentBuilder.() -> Unit): JsonNode {
+ val assignments = NatsTLSAuthPropertiesAssignmentBuilder().apply(block).build()
+ assignments[NatsConnectionProperties::type.name] = NatsLibConstants.TYPE_TLS_AUTH.asJsonPrimitive()
+ return assignments.asJsonNode()
+}
+
+open class NatsConnectionPropertiesAssignmentBuilder : PropertiesAssignmentBuilder() {
+
+ fun clusterId(clusterId: String) = clusterId(clusterId.asJsonPrimitive())
+
+ fun clusterId(clusterId: JsonNode) = property(NatsConnectionProperties::clusterId, clusterId)
+
+ fun clientId(clientId: String) = clientId(clientId.asJsonPrimitive())
+
+ fun clientId(clientId: JsonNode) = property(NatsConnectionProperties::clientId, clientId)
+
+ fun host(host: String) = host(host.asJsonPrimitive())
+
+ fun host(host: JsonNode) = property(NatsConnectionProperties::host, host)
+
+ fun monitoringSelector(monitoringSelector: String) = monitoringSelector(monitoringSelector.asJsonPrimitive())
+
+ fun monitoringSelector(monitoringSelector: JsonNode) =
+ property(NatsConnectionProperties::monitoringSelector, monitoringSelector)
+}
+
+class NatsTokenAuthPropertiesAssignmentBuilder : NatsConnectionPropertiesAssignmentBuilder() {
+ fun token(selector: String) = token(selector.asJsonPrimitive())
+
+ fun token(selector: JsonNode) = property(TokenAuthNatsConnectionProperties::token, selector)
+}
+
+class NatsTLSAuthPropertiesAssignmentBuilder : NatsConnectionPropertiesAssignmentBuilder()
diff --git a/ms/blueprintsprocessor/modules/commons/nats-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nats/NatsPropertiesDSLTest.kt b/ms/blueprintsprocessor/modules/commons/nats-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nats/NatsPropertiesDSLTest.kt
new file mode 100644
index 000000000..4cf474b93
--- /dev/null
+++ b/ms/blueprintsprocessor/modules/commons/nats-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/nats/NatsPropertiesDSLTest.kt
@@ -0,0 +1,63 @@
+/*
+ * Copyright © 2018-2019 AT&T Intellectual Property.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.nats
+
+import org.junit.Test
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.getInput
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.relationshipTypeConnectsTo
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.serviceTemplate
+import kotlin.test.assertEquals
+import kotlin.test.assertNotNull
+
+class NatsPropertiesDSLTest {
+
+ @Test
+ fun testNatsPropertiesDSL() {
+ val serviceTemplate = serviceTemplate("nats-dsl", "1.0.0", "xx@xx.com", "nats") {
+ topologyTemplate {
+ relationshipTemplateNats("sample-token-auth", "Nats TokenAuth endpoint") {
+ tokenAuth {
+ host("nats://localhost:4222")
+ token("tokenAuth")
+ monitoringSelector(getInput("monitoringUrl"))
+ }
+ }
+ relationshipTemplateNats("sample-tls-auth", "Nats TLS endpoint.") {
+ tlsAuth {
+ host("nats://localhost:4222")
+ }
+ }
+ }
+
+ relationshipTypes(
+ arrayListOf(
+ BluePrintTypes.relationshipTypeConnectsToNats(),
+ BluePrintTypes.relationshipTypeConnectsTo()
+ )
+ )
+ }
+
+ assertNotNull(serviceTemplate, "failed to create service template")
+ val relationshipTemplates = serviceTemplate.topologyTemplate?.relationshipTemplates
+ assertNotNull(relationshipTemplates, "failed to get relationship templates")
+ assertEquals(2, relationshipTemplates.size, "relationshipTemplates doesn't match")
+ assertNotNull(relationshipTemplates["sample-token-auth"], "failed to get sample-token-auth")
+ assertNotNull(relationshipTemplates["sample-tls-auth"], "failed to get sample-tls-auth")
+ // println(serviceTemplate.asJsonString(true))
+ }
+}
diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibConfiguration.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibConfiguration.kt
index 9e1be36a7..23125430a 100644
--- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibConfiguration.kt
+++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/BluePrintRestLibConfiguration.kt
@@ -48,6 +48,7 @@ fun BluePrintDependencyService.restClientService(jsonNode: JsonNode): BlueprintW
class RestLibConstants {
companion object {
const val SERVICE_BLUEPRINT_REST_LIB_PROPERTY = "blueprint-rest-lib-property-service"
+ const val PROPERTY_REST_CLIENT_PREFIX = "blueprintsprocessor.restclient."
const val PROPERTY_TYPE = "type"
const val TYPE_TOKEN_AUTH = "token-auth"
const val TYPE_BASIC_AUTH = "basic-auth"
diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/RestClientPropertiesDSL.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/RestClientPropertiesDSL.kt
index 429931377..4c25cb5bf 100644
--- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/RestClientPropertiesDSL.kt
+++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/RestClientPropertiesDSL.kt
@@ -17,54 +17,100 @@
package org.onap.ccsdk.cds.blueprintsprocessor.rest
import com.fasterxml.jackson.databind.JsonNode
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType
+import org.onap.ccsdk.cds.controllerblueprints.core.data.RelationshipType
import org.onap.ccsdk.cds.controllerblueprints.core.dsl.PropertiesAssignmentBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.RelationshipTemplateBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.TopologyTemplateBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.relationshipType
+
+/** Relationships Type DSL for Rest */
+fun BluePrintTypes.relationshipTypeConnectsToRestClient(): RelationshipType {
+ return relationshipType(
+ id = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_REST_CLIENT,
+ version = BluePrintConstants.DEFAULT_VERSION_NUMBER,
+ derivedFrom = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO,
+ description = "Relationship connects to through"
+ ) {
+ property(
+ BluePrintConstants.PROPERTY_CONNECTION_CONFIG,
+ BluePrintConstants.DATA_TYPE_MAP,
+ true,
+ "Connection Config details."
+ )
+ validTargetTypes(arrayListOf(BluePrintConstants.MODEL_TYPE_CAPABILITY_TYPE_ENDPOINT))
+ }
+}
-fun BluePrintTypes.dslBasicAuthRestClientProperties(block: BasicAuthRestClientPropertiesBuilder.() -> Unit): JsonNode {
- val assignments = BasicAuthRestClientPropertiesBuilder().apply(block).build()
- assignments[RestLibConstants.PROPERTY_TYPE] = RestLibConstants.TYPE_BASIC_AUTH.asJsonPrimitive()
- return assignments.asJsonType()
+/** Relationships Templates DSL for Rest */
+fun TopologyTemplateBuilder.relationshipTemplateRestClient(
+ name: String,
+ description: String,
+ block: RestClientRelationshipTemplateBuilder.() -> Unit
+) {
+ if (relationshipTemplates == null) relationshipTemplates = hashMapOf()
+ val relationshipTemplate = RestClientRelationshipTemplateBuilder(name, description).apply(block).build()
+ relationshipTemplates!![relationshipTemplate.id!!] = relationshipTemplate
}
-fun BluePrintTypes.dslTokenAuthRestClientProperties(block: TokenAuthRestClientPropertiesBuilder.() -> Unit): JsonNode {
- val assignments = TokenAuthRestClientPropertiesBuilder().apply(block).build()
- assignments[RestLibConstants.PROPERTY_TYPE] = RestLibConstants.TYPE_TOKEN_AUTH.asJsonPrimitive()
+open class RestClientRelationshipTemplateBuilder(name: String, description: String) :
+ RelationshipTemplateBuilder(
+ name,
+ BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_REST_CLIENT, description
+ ) {
+
+ fun basicAuth(block: BasicAuthRestClientPropertiesAssignmentBuilder.() -> Unit) {
+ property(BluePrintConstants.PROPERTY_CONNECTION_CONFIG, BluePrintTypes.basicAuthRestClientProperties(block))
+ }
+
+ fun tokenAuth(block: TokenAuthRestClientPropertiesAssignmentBuilder.() -> Unit) {
+ property(BluePrintConstants.PROPERTY_CONNECTION_CONFIG, BluePrintTypes.tokenAuthRestClientProperties(block))
+ }
+
+ fun sslAuth(block: SslAuthRestClientPropertiesAssignmentBuilder.() -> Unit) {
+ property(BluePrintConstants.PROPERTY_CONNECTION_CONFIG, BluePrintTypes.sslRestClientProperties(block))
+ }
+}
+
+fun BluePrintTypes.basicAuthRestClientProperties(block: BasicAuthRestClientPropertiesAssignmentBuilder.() -> Unit): JsonNode {
+ val assignments = BasicAuthRestClientPropertiesAssignmentBuilder().apply(block).build()
+ assignments[RestClientProperties::type.name] = RestLibConstants.TYPE_BASIC_AUTH.asJsonPrimitive()
return assignments.asJsonType()
}
-fun BluePrintTypes.dslSSLRestClientProperties(block: SSLRestClientPropertiesBuilder.() -> Unit): JsonNode {
- val assignments = SSLRestClientPropertiesBuilder().apply(block).build()
- assignments[RestLibConstants.PROPERTY_TYPE] = RestLibConstants.TYPE_SSL_NO_AUTH.asJsonPrimitive()
+fun BluePrintTypes.tokenAuthRestClientProperties(block: TokenAuthRestClientPropertiesAssignmentBuilder.() -> Unit): JsonNode {
+ val assignments = TokenAuthRestClientPropertiesAssignmentBuilder().apply(block).build()
+ assignments[RestClientProperties::type.name] = RestLibConstants.TYPE_TOKEN_AUTH.asJsonPrimitive()
return assignments.asJsonType()
}
-open class RestClientPropertiesBuilder : PropertiesAssignmentBuilder() {
- fun type(type: String) {
- type(type.asJsonPrimitive())
- }
+fun BluePrintTypes.sslRestClientProperties(block: SslAuthRestClientPropertiesAssignmentBuilder.() -> Unit): JsonNode {
+ val assignments = SslAuthRestClientPropertiesAssignmentBuilder().apply(block).build()
+ assignments[RestClientProperties::type.name] = RestLibConstants.TYPE_SSL_NO_AUTH.asJsonPrimitive()
+ return assignments.asJsonType()
+}
- fun type(type: JsonNode) {
- property(RestLibConstants.PROPERTY_TYPE, type)
- }
+open class RestClientPropertiesAssignmentBuilder : PropertiesAssignmentBuilder() {
open fun url(url: String) {
url(url.asJsonPrimitive())
}
open fun url(url: JsonNode) {
- property("url", url)
+ property(RestClientProperties::url, url)
}
}
-open class BasicAuthRestClientPropertiesBuilder : RestClientPropertiesBuilder() {
+open class BasicAuthRestClientPropertiesAssignmentBuilder : RestClientPropertiesAssignmentBuilder() {
open fun password(password: String) {
password(password.asJsonPrimitive())
}
open fun password(password: JsonNode) {
- property("password", password)
+ property(BasicAuthRestClientProperties::password, password)
}
open fun username(username: String) {
@@ -72,27 +118,27 @@ open class BasicAuthRestClientPropertiesBuilder : RestClientPropertiesBuilder()
}
open fun username(username: JsonNode) {
- property("username", username)
+ property(BasicAuthRestClientProperties::username, username)
}
}
-open class TokenAuthRestClientPropertiesBuilder : RestClientPropertiesBuilder() {
+open class TokenAuthRestClientPropertiesAssignmentBuilder : RestClientPropertiesAssignmentBuilder() {
open fun token(token: String) {
token(token.asJsonPrimitive())
}
open fun token(token: JsonNode) {
- property("token", token)
+ property(TokenAuthRestClientProperties::token, token)
}
}
-open class SSLRestClientPropertiesBuilder : RestClientPropertiesBuilder() {
+open class SslAuthRestClientPropertiesAssignmentBuilder : RestClientPropertiesAssignmentBuilder() {
open fun keyStoreInstance(keyStoreInstance: String) {
keyStoreInstance(keyStoreInstance.asJsonPrimitive())
}
open fun keyStoreInstance(keyStoreInstance: JsonNode) {
- property("keyStoreInstance", keyStoreInstance)
+ property(SSLRestClientProperties::keyStoreInstance, keyStoreInstance)
}
open fun sslTrust(sslTrust: String) {
@@ -100,7 +146,7 @@ open class SSLRestClientPropertiesBuilder : RestClientPropertiesBuilder() {
}
open fun sslTrust(sslTrust: JsonNode) {
- property("sslTrust", sslTrust)
+ property(SSLRestClientProperties::sslTrust, sslTrust)
}
open fun sslTrustPassword(sslTrustPassword: String) {
@@ -108,7 +154,7 @@ open class SSLRestClientPropertiesBuilder : RestClientPropertiesBuilder() {
}
open fun sslTrustPassword(sslTrustPassword: JsonNode) {
- property("sslTrustPassword", sslTrustPassword)
+ property(SSLRestClientProperties::sslTrustPassword, sslTrustPassword)
}
open fun sslKey(sslKey: String) {
@@ -116,7 +162,7 @@ open class SSLRestClientPropertiesBuilder : RestClientPropertiesBuilder() {
}
open fun sslKey(sslKey: JsonNode) {
- property("sslKey", sslKey)
+ property(SSLRestClientProperties::sslKey, sslKey)
}
open fun sslKeyPassword(sslKeyPassword: String) {
@@ -124,14 +170,14 @@ open class SSLRestClientPropertiesBuilder : RestClientPropertiesBuilder() {
}
open fun sslKeyPassword(sslKeyPassword: JsonNode) {
- property("sslKeyPassword", sslKeyPassword)
+ property(SSLRestClientProperties::sslKeyPassword, sslKeyPassword)
}
}
-open class SSLBasicAuthRestClientPropertiesBuilder : SSLRestClientPropertiesBuilder() {
+open class SSLBasicAuthRestClientPropertiesBuilder : SslAuthRestClientPropertiesAssignmentBuilder() {
// TODO()
}
-open class SSLTokenAuthRestClientPropertiesBuilder : SSLRestClientPropertiesBuilder() {
+open class SSLTokenAuthRestClientPropertiesBuilder : SslAuthRestClientPropertiesAssignmentBuilder() {
// TODO()
}
diff --git a/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientPropertiesDSLTest.kt b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientPropertiesDSLTest.kt
index f82fc6124..28784e4ae 100644
--- a/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientPropertiesDSLTest.kt
+++ b/ms/blueprintsprocessor/modules/commons/rest-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/RestClientPropertiesDSLTest.kt
@@ -17,43 +17,60 @@
package org.onap.ccsdk.cds.blueprintsprocessor.rest.service
import org.junit.Test
-import org.onap.ccsdk.cds.blueprintsprocessor.rest.dslBasicAuthRestClientProperties
-import org.onap.ccsdk.cds.blueprintsprocessor.rest.dslSSLRestClientProperties
-import org.onap.ccsdk.cds.blueprintsprocessor.rest.dslTokenAuthRestClientProperties
+import org.onap.ccsdk.cds.blueprintsprocessor.rest.relationshipTemplateRestClient
+import org.onap.ccsdk.cds.blueprintsprocessor.rest.relationshipTypeConnectsToRestClient
import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.relationshipTypeConnectsTo
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.serviceTemplate
+import kotlin.test.assertEquals
import kotlin.test.assertNotNull
class RestClientPropertiesDSLTest {
@Test
- fun testBasicAuthRestClientProperties() {
- val properties = BluePrintTypes.dslBasicAuthRestClientProperties {
- url("http://localhost:8080")
- username("xxxxx")
- password("******")
- }
- assertNotNull(properties, "failed to get dslBasicAuthRestClientProperties")
- }
+ fun testRestClientProperties() {
- @Test
- fun testBasicTokenAuthRestClientProperties() {
- val properties = BluePrintTypes.dslTokenAuthRestClientProperties {
- url("http://localhost:8080")
- token("sdfgfsadgsgf")
+ val serviceTemplate = serviceTemplate("rest-properties-test", "1.0.0", "xxx.@xx.com", "rest") {
+ topologyTemplate {
+ relationshipTemplateRestClient("sample-basic-auth", "") {
+ basicAuth {
+ url("http://localhost:8080")
+ username("xxxxx")
+ password("******")
+ }
+ }
+ relationshipTemplateRestClient("sample-token-auth", "") {
+ tokenAuth {
+ url("http://localhost:8080")
+ token("sdfgfsadgsgf")
+ }
+ }
+ relationshipTemplateRestClient("sample-ssl-auth", "") {
+ sslAuth {
+ url("http://localhost:8080")
+ keyStoreInstance("instance")
+ sslTrust("sample-trust")
+ sslTrustPassword("sample-trust-password")
+ sslKey("sample-sslkey")
+ sslKeyPassword("sample-key-password")
+ }
+ }
+ }
+ relationshipTypes(
+ arrayListOf(
+ BluePrintTypes.relationshipTypeConnectsToRestClient(),
+ BluePrintTypes.relationshipTypeConnectsTo()
+ )
+ )
}
- assertNotNull(properties, "failed to get dslTokenAuthRestClientProperties")
- }
- @Test
- fun testDslSSLRestClientProperties() {
- val properties = BluePrintTypes.dslSSLRestClientProperties {
- url("http://localhost:8080")
- keyStoreInstance("instance")
- sslTrust("sample-trust")
- sslTrustPassword("sample-trust-password")
- sslKey("sample-sslkey")
- sslKeyPassword("sample-key-password")
- }
- assertNotNull(properties, "failed to get dslSSLRestClientProperties")
+ // println(serviceTemplate.asJsonString(true))
+ assertNotNull(serviceTemplate, "failed to create service template")
+ val relationshipTemplates = serviceTemplate.topologyTemplate?.relationshipTemplates
+ assertNotNull(relationshipTemplates, "failed to get relationship templates")
+ assertEquals(3, relationshipTemplates.size, "relationshipTemplates doesn't match")
+ assertNotNull(relationshipTemplates["sample-basic-auth"], "failed to get sample-basic-auth")
+ assertNotNull(relationshipTemplates["sample-token-auth"], "failed to get sample-token-auth")
+ assertNotNull(relationshipTemplates["sample-ssl-auth"], "failed to get sample-ssl-auth")
}
}
diff --git a/ms/blueprintsprocessor/modules/commons/ssh-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/SshPropertiesDSL.kt b/ms/blueprintsprocessor/modules/commons/ssh-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/SshPropertiesDSL.kt
new file mode 100644
index 000000000..e63f2eb49
--- /dev/null
+++ b/ms/blueprintsprocessor/modules/commons/ssh-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/SshPropertiesDSL.kt
@@ -0,0 +1,101 @@
+/*
+ * Copyright © 2018-2019 AT&T Intellectual Property.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.ssh
+
+import com.fasterxml.jackson.databind.JsonNode
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintConstants
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonPrimitive
+import org.onap.ccsdk.cds.controllerblueprints.core.asJsonType
+import org.onap.ccsdk.cds.controllerblueprints.core.data.RelationshipType
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.PropertiesAssignmentBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.RelationshipTemplateBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.TopologyTemplateBuilder
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.relationshipType
+
+/** Relationships Types DSL for Message Producer */
+fun BluePrintTypes.relationshipTypeConnectsToSshClient(): RelationshipType {
+ return relationshipType(
+ id = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_SSH_CLIENT,
+ version = BluePrintConstants.DEFAULT_VERSION_NUMBER,
+ derivedFrom = BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO,
+ description = "Relationship connects to through SSH Client."
+ ) {
+ property(
+ BluePrintConstants.PROPERTY_CONNECTION_CONFIG,
+ BluePrintConstants.DATA_TYPE_MAP,
+ true,
+ "Connection Config details."
+ )
+ validTargetTypes(arrayListOf(BluePrintConstants.MODEL_TYPE_CAPABILITY_TYPE_ENDPOINT))
+ }
+}
+
+/** Relationships Templates for Ssh */
+fun TopologyTemplateBuilder.relationshipTemplateSshClient(
+ name: String,
+ description: String,
+ block: SshRelationshipTemplateBuilder.() -> Unit
+) {
+ if (relationshipTemplates == null) relationshipTemplates = hashMapOf()
+ val relationshipTemplate = SshRelationshipTemplateBuilder(name, description).apply(block).build()
+ relationshipTemplates!![relationshipTemplate.id!!] = relationshipTemplate
+}
+
+open class SshRelationshipTemplateBuilder(name: String, description: String) :
+ RelationshipTemplateBuilder(
+ name,
+ BluePrintConstants.MODEL_TYPE_RELATIONSHIPS_CONNECTS_TO_SSH_CLIENT, description
+ ) {
+
+ fun basicAuth(block: BasicAuthSshClientPropertiesAssignmentBuilder.() -> Unit) {
+ property(BluePrintConstants.PROPERTY_CONNECTION_CONFIG, BluePrintTypes.basicAuthSshProperties(block))
+ }
+}
+
+fun BluePrintTypes.basicAuthSshProperties(block: BasicAuthSshClientPropertiesAssignmentBuilder.() -> Unit): JsonNode {
+ val sshProperties = BasicAuthSshClientPropertiesAssignmentBuilder().apply(block).build()
+ sshProperties[SshClientProperties::type.name] = SshLibConstants.TYPE_BASIC_AUTH.asJsonPrimitive()
+ return sshProperties.asJsonType()
+}
+
+open class SshClientPropertiesAssignmentBuilder : PropertiesAssignmentBuilder() {
+
+ fun connectionTimeOut(connectionTimeOut: Int) = connectionTimeOut(connectionTimeOut.asJsonPrimitive())
+
+ fun connectionTimeOut(connectionTimeOut: JsonNode) =
+ property(SshClientProperties::connectionTimeOut.name, connectionTimeOut)
+
+ fun port(port: Int) = port(port.asJsonPrimitive())
+
+ fun port(port: JsonNode) = property(SshClientProperties::port.name, port)
+
+ fun host(host: String) = host(host.asJsonPrimitive())
+
+ fun host(host: JsonNode) = property(SshClientProperties::host.name, host)
+}
+
+class BasicAuthSshClientPropertiesAssignmentBuilder : SshClientPropertiesAssignmentBuilder() {
+
+ fun username(username: String) = username(username.asJsonPrimitive())
+
+ fun username(username: JsonNode) = property(BasicAuthSshClientProperties::username.name, username)
+
+ fun password(password: String) = password(password.asJsonPrimitive())
+
+ fun password(password: JsonNode) = property(BasicAuthSshClientProperties::password.name, password)
+}
diff --git a/ms/blueprintsprocessor/modules/commons/ssh-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/SshPropertiesDSLTest.kt b/ms/blueprintsprocessor/modules/commons/ssh-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/SshPropertiesDSLTest.kt
new file mode 100644
index 000000000..bc4355357
--- /dev/null
+++ b/ms/blueprintsprocessor/modules/commons/ssh-lib/src/test/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/ssh/SshPropertiesDSLTest.kt
@@ -0,0 +1,56 @@
+/*
+ * Copyright © 2018-2019 AT&T Intellectual Property.
+ *
+ * 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.
+ */
+
+package org.onap.ccsdk.cds.blueprintsprocessor.ssh
+
+import org.junit.Test
+import org.onap.ccsdk.cds.controllerblueprints.core.BluePrintTypes
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.relationshipTypeConnectsTo
+import org.onap.ccsdk.cds.controllerblueprints.core.dsl.serviceTemplate
+import kotlin.test.assertEquals
+import kotlin.test.assertNotNull
+
+class SshPropertiesDSLTest {
+
+ @Test
+ fun testSshPropertiesDSL() {
+ val serviceTemplate = serviceTemplate("ssh-properties-test", "1.0.0", "xxx.@xx.com", "ssh") {
+ topologyTemplate {
+ relationshipTemplateSshClient("sample-basic-auth", "SSH Connection") {
+ basicAuth {
+ username("sample-user")
+ password("sample-password")
+ host("sample-host")
+ connectionTimeOut(30)
+ }
+ }
+ }
+ relationshipTypes(
+ arrayListOf(
+ BluePrintTypes.relationshipTypeConnectsToSshClient(),
+ BluePrintTypes.relationshipTypeConnectsTo()
+ )
+ )
+ }
+
+ assertNotNull(serviceTemplate, "failed to create service template")
+ val relationshipTemplates = serviceTemplate.topologyTemplate?.relationshipTemplates
+ assertNotNull(relationshipTemplates, "failed to get relationship templates")
+ assertEquals(1, relationshipTemplates.size, "relationshipTemplates doesn't match")
+ assertNotNull(relationshipTemplates["sample-basic-auth"], "failed to get sample-basic-auth")
+ // println(serviceTemplate.asJsonString(true))
+ }
+}