Saas feature45 (#444)
* Fix issue with Postman Demo
* Postman localhost
* Postman Demo
diff --git a/karavan-demo/postman/project/docker-compose.yaml b/karavan-demo/postman/docker-compose/docker-compose.yaml
similarity index 100%
rename from karavan-demo/postman/project/docker-compose.yaml
rename to karavan-demo/postman/docker-compose/docker-compose.yaml
diff --git a/karavan-demo/postman/project/postgres_db.sql b/karavan-demo/postman/docker-compose/postgres_db.sql
similarity index 100%
rename from karavan-demo/postman/project/postgres_db.sql
rename to karavan-demo/postman/docker-compose/postgres_db.sql
diff --git a/karavan-demo/postman/project/start.sh b/karavan-demo/postman/docker-compose/start.sh
similarity index 100%
rename from karavan-demo/postman/project/start.sh
rename to karavan-demo/postman/docker-compose/start.sh
diff --git a/karavan-demo/postman/docs/README.md b/karavan-demo/postman/docs/README.md
index fc9b2b6..340fd00 100644
--- a/karavan-demo/postman/docs/README.md
+++ b/karavan-demo/postman/docs/README.md
@@ -15,12 +15,12 @@
./prepare-docker.sh --from-release --artemis-version 2.22.0
cd _TMP_/artemis/2.22.0
docker build -f ./docker/Dockerfile-adoptopenjdk-11 -t artemis-adoptopenjdk-11 .
-cd ../../../../project
```
For MacOS users, in case of `tree command not found` error, install tree `brew install tree`
### Start environment
```
+cd docker-compose
docker-compose up
```
@@ -54,7 +54,8 @@
2. Apache Camel [Karavan](https://marketplace.visualstudio.com/items?itemName=camel-karavan.karavan) extension installed
3. [Jbang](https://www.jbang.dev/download/) installed
4. OpenShift 4.9+ cluster up and running
-4. OpenShift 4.9+ CLI installed
+5. OpenShift 4.9+ CLI installed
+6. Apache Camel Karavan installed in OpenShift
### Install AMQ and AMQ Streams Operators
@@ -73,14 +74,13 @@
```
### Package, build and deploy project
-1. Open Project builder
-![builder](builder.png)
+1. Open Karavan Application
+2. Create project Postman
+3. Create integration postman
+4. Replace integration code with [postman.yaml](project/postman.yaml)
+5. Set Kamelets configuration according their services in Openshift
+6. Click `Run` button
-2. Configure Project and click Start
-![deploy](deploy.png)
-```
-
-```
### Publish parcel
```
diff --git a/karavan-demo/postman/docs/builder.png b/karavan-demo/postman/docs/builder.png
deleted file mode 100644
index 880bf92..0000000
--- a/karavan-demo/postman/docs/builder.png
+++ /dev/null
Binary files differ
diff --git a/karavan-demo/postman/docs/deploy.png b/karavan-demo/postman/docs/deploy.png
deleted file mode 100644
index 67b343f..0000000
--- a/karavan-demo/postman/docs/deploy.png
+++ /dev/null
Binary files differ
diff --git a/karavan-demo/postman/project/application.properties b/karavan-demo/postman/project/application.properties
index 1caacea..33e323c 100644
--- a/karavan-demo/postman/project/application.properties
+++ b/karavan-demo/postman/project/application.properties
@@ -1,5 +1,15 @@
-kafka-brokers=localhost:9092
-postgres-server=localhost
-jms-broker=tcp://localhost:61616
-mqtt-broker=tcp://localhost:1883
-%dev.mqtt-broker=tcp://localhost:1883
+camel.jbang.project-id=postman
+camel.jbang.project-name=postman
+camel.jbang.project-description=Postman Demo
+camel.jbang.gav=org.camel.karavan.demo:postman:1.0.0
+camel.jbang.runtime=quarkus
+camel.jbang.quarkusVersion=2.11.1.Final
+camel.jbang.dependencies=camel:microprofile-health,mvn:io.quarkus:quarkus-container-image-jib,mvn:io.quarkus:quarkus-openshift
+camel.health.enabled=true
+camel.health.exposure-level=full
+quarkus.kubernetes-client.trust-certs=true
+quarkus.container-image.group=karavan
+quarkus.container-image.name=postman
+quarkus.openshift.route.expose=false
+quarkus.openshift.part-of=postman
+quarkus.openshift.replicas=1
\ No newline at end of file
diff --git a/karavan-demo/postman/project/postman.yaml b/karavan-demo/postman/project/postman.yaml
index 45a2dc0..80a7124 100644
--- a/karavan-demo/postman/project/postman.yaml
+++ b/karavan-demo/postman/project/postman.yaml
@@ -4,221 +4,130 @@
name: Postman Demo
spec:
flows:
- - dslName: RestDefinition
- post:
- - dslName: PostDefinition
- stepName: post
- to: 'direct:post'
- inArray: true
- inSteps: false
- stepName: rest
- path: /parcels
- consumes: application/json
- produces: application/json
- - dslName: RouteDefinition
- stepName: route
- from:
- uri: 'direct:post'
- steps:
- - dslName: LogDefinition
- stepName: log
- message: 'Received: ${body}'
- inArray: true
- inSteps: true
- - steps:
- - uri: 'kamelet:kafka-not-secured-sink'
- dslName: ToDefinition
- stepName: to
- parameters:
- topic: parcels
- bootstrapServers: 'localhost:9091'
- inArray: true
- inSteps: true
- - uri: 'kamelet:postgresql-sink'
- dslName: ToDefinition
- stepName: to
- parameters:
- serverName: localhost
- serverPort: '5432'
- username: postgres
- password: postgres
- databaseName: demo
- query: >-
- INSERT INTO parcels (id,address) VALUES (:#id,:#address) ON
- CONFLICT (id) DO NOTHING
- inArray: true
- inSteps: true
- dslName: MulticastDefinition
- stepName: multicast
- aggregationStrategy: >-
- #class:org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy
- parallelProcessing: true
- streaming: true
- inArray: true
- inSteps: true
- dslName: FromDefinition
- stepName: from
- id: post
- - dslName: RouteDefinition
- stepName: route
- from:
- uri: 'kamelet:jms-apache-artemis-source'
- steps:
- - uri: 'xj:identity'
- dslName: ToDefinition
- stepName: to
- parameters:
- transformDirection: XML2JSON
- inArray: true
- inSteps: true
- - uri: 'kamelet:kafka-not-secured-sink'
- dslName: ToDefinition
- stepName: to
- parameters:
- topic: payments
- bootstrapServers: 'localhost:9091'
- inArray: true
- inSteps: true
- dslName: FromDefinition
- stepName: from
- parameters:
- destinationType: queue
- destinationName: payments
- brokerURL: 'tcp://localhost:61616'
- id: payment
- - dslName: RouteDefinition
- stepName: route
- from:
- uri: 'kamelet:kafka-not-secured-source'
- steps:
- - dslName: LogDefinition
- stepName: log
- message: 'Aggegating: ${body}'
- inArray: true
- inSteps: true
- - dslName: UnmarshalDefinition
- stepName: unmarshal
- json:
- dslName: JsonDataFormat
- library: jackson
- inArray: true
- inSteps: true
- - steps:
- - dslName: ChoiceDefinition
- stepName: choice
- when:
- - steps:
- - dslName: MarshalDefinition
- stepName: marshal
- json:
- dslName: JsonDataFormat
- library: jackson
- inArray: true
- inSteps: true
- - dslName: LogDefinition
- stepName: log
- message: 'Send to MQTT : ${body}'
- inArray: true
- inSteps: true
- - uri: 'kamelet:mqtt-sink'
- dslName: ToDefinition
- stepName: to
- parameters:
- topic: deliveries
- brokerUrl: 'tcp://localhost:61616'
- inArray: true
- inSteps: true
- dslName: WhenDefinition
- stepName: when
- expression:
- dslName: ExpressionDefinition
- stepName: expression
- groovy:
- dslName: GroovyExpression
- expression: >-
- body.find { it.containsKey('status') }.status ==
- 'confirmed'
- inArray: true
- inSteps: false
- otherwise:
- steps:
- - dslName: SetBodyDefinition
- stepName: setBody
- expression:
- dslName: ExpressionDefinition
- stepName: expression
- groovy:
- dslName: GroovyExpression
- expression: 'body.find { it.containsKey(''status'') } '
- inArray: true
- inSteps: true
- - dslName: MarshalDefinition
- stepName: marshal
- json:
- dslName: JsonDataFormat
- library: jackson
- inArray: true
- inSteps: true
- - dslName: LogDefinition
- stepName: log
- message: 'Send to database: ${body}'
- inArray: true
- inSteps: true
- - uri: 'kamelet:postgresql-sink'
- dslName: ToDefinition
- stepName: to
+ - rest:
+ post:
+ - to: direct:post
+ path: /parcels
+ consumes: application/json
+ produces: application/json
+ - route:
+ from:
+ uri: direct:post
+ steps:
+ - log:
+ message: 'Received: ${body}'
+ - multicast:
+ steps:
+ - to:
+ uri: kamelet:kafka-not-secured-sink
+ parameters:
+ topic: parcels
+ bootstrapServers: localhost:9092
+ - to:
+ uri: kamelet:postgresql-sink
parameters:
serverName: localhost
serverPort: '5432'
username: postgres
password: postgres
databaseName: demo
- query: 'UPDATE parcels set status = ''CANCELED'' WHERE id = :#id'
- inArray: true
- inSteps: true
- dslName: OtherwiseDefinition
- stepName: otherwise
- inArray: true
- inSteps: true
- dslName: AggregateDefinition
- aggregationStrategy: aggregator
- stepName: aggregate
- completionSize: 2
- correlationExpression:
- dslName: ExpressionSubElementDefinition
- stepName: expressionSubElement
- groovy:
- dslName: GroovyExpression
- expression: body.get('id')
- inArray: true
- inSteps: true
- dslName: FromDefinition
- stepName: from
- parameters:
- topic: 'parcels,payments'
- bootstrapServers: 'localhost:9091'
- autoCommitEnable: true
- consumerGroup: postman
- id: aggregator
- - dslName: RouteDefinition
- stepName: route
- from:
- uri: 'kamelet:mqtt-source'
- steps:
- - dslName: LogDefinition
- stepName: log
- message: 'Delivery: ${body}'
- inArray: true
- inSteps: true
- dslName: FromDefinition
- stepName: from
- parameters:
- topic: deliveries
- brokerUrl: 'tcp://localhost:61616'
- - dslName: Beans
- beans:
- - dslName: NamedBeanDefinition
- name: aggregator
- type: org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy
- inArray: true
- inSteps: false
+ query: >-
+ INSERT INTO parcels (id,address) VALUES
+ (:#id,:#address) ON CONFLICT (id) DO NOTHING
+ aggregationStrategy: >-
+ #class:org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy
+ parallelProcessing: true
+ streaming: true
+ id: post
+ - route:
+ from:
+ uri: kamelet:jms-apache-artemis-source
+ steps:
+ - to:
+ uri: xj:identity
+ parameters:
+ transformDirection: XML2JSON
+ - to:
+ uri: kamelet:kafka-not-secured-sink
+ parameters:
+ topic: payments
+ bootstrapServers: localhost:9092
+ parameters:
+ destinationType: queue
+ destinationName: payments
+ brokerURL: tcp://localhost:61616
+ id: payment
+ - route:
+ from:
+ uri: kamelet:kafka-not-secured-source
+ steps:
+ - log:
+ message: 'Aggegating: ${body}'
+ - unmarshal:
+ json:
+ library: jackson
+ - aggregate:
+ steps:
+ - choice:
+ when:
+ - expression:
+ groovy:
+ expression: >-
+ body.find { it.containsKey('status') }.status ==
+ 'confirmed'
+ steps:
+ - marshal:
+ json:
+ library: jackson
+ - log:
+ message: 'Send to MQTT : ${body}'
+ - to:
+ uri: kamelet:mqtt-sink
+ parameters:
+ topic: deliveries
+ brokerUrl: tcp://localhost:1883
+ otherwise:
+ steps:
+ - setBody:
+ expression:
+ groovy:
+ expression: 'body.find { it.containsKey(''status'') } '
+ - marshal:
+ json:
+ library: jackson
+ - log:
+ message: 'Send to database: ${body}'
+ - to:
+ uri: kamelet:postgresql-sink
+ parameters:
+ serverName: localhost
+ serverPort: '5432'
+ username: postgres
+ password: postgres
+ databaseName: demo
+ query: >-
+ UPDATE parcels set status = 'CANCELED' WHERE
+ id = :#id
+ aggregationStrategy: aggregator
+ completionSize: 2
+ correlationExpression:
+ groovy:
+ expression: body.get('id')
+ parameters:
+ topic: parcels,payments
+ bootstrapServers: localhost:9092
+ autoCommitEnable: true
+ consumerGroup: postman
+ id: aggregator
+ - route:
+ from:
+ uri: kamelet:mqtt-source
+ steps:
+ - log:
+ message: 'Delivery: ${body}'
+ parameters:
+ topic: deliveries
+ brokerUrl: tcp://localhost:1883
+ - beans:
+ - name: aggregator
+ type: org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy
\ No newline at end of file