This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git


The following commit(s) were added to refs/heads/main by this push:
     new 9010d30  Env demo (#350)
9010d30 is described below

commit 9010d30186a2fe3fc6465c42f2241bfbd6435fa3
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Tue May 24 15:05:19 2022 -0400

    Env demo (#350)
    
    * Profile run
    
    * Reorganize demos
    
    * Demo properties
---
 karavan-demo/builder/Dockerfile                    |  41 --------
 karavan-demo/builder/Dockerfile.maven              |  29 ------
 karavan-demo/builder/builder-demo.yaml             |   9 --
 .../dependency-injection/MyPrepareProcessor.java   |  11 ---
 karavan-demo/dependency-injection/test.yaml        |  20 ----
 karavan-demo/{ => deprecated}/openshift/README.md  |   0
 .../openshift/apps/gitea/config-pvc.yaml           |   0
 .../openshift/apps/gitea/data-pvc.yaml             |   0
 .../openshift/apps/gitea/gitea-cm.yaml             |   0
 .../openshift/apps/gitea/gitea-deployment.yaml     |   0
 .../openshift/apps/gitea/gitea-route.yaml          |   0
 .../openshift/apps/gitea/gitea-svc.yaml            |   0
 .../openshift/apps/gitea/giteadb-dc.yaml           |   0
 .../openshift/apps/gitea/giteadb-pvc.yaml          |   0
 .../openshift/apps/gitea/giteadb-secret.yaml       |   0
 .../openshift/apps/gitea/giteadb-svc.yaml          |   0
 .../openshift/apps/gitea/kustomization.yaml        |   0
 .../openshift/apps/gitops/clusterrolebinding.yaml  |   0
 .../openshift/apps/gitops/gitops-application.yaml  |   0
 .../openshift/apps/gitops/gitops-instance.yaml     |   0
 .../openshift/apps/gitops/kustomization.yaml       |   0
 .../openshift/apps/karavan/deployment.yaml         |   0
 .../openshift/apps/karavan/kustomization.yaml      |   0
 .../openshift/apps/karavan/route.yaml              |   0
 .../openshift/apps/karavan/service.yaml            |   0
 .../openshift/apps/kustomization.yaml              |   0
 .../openshift/apps/namespaces.yaml                 |   0
 karavan-demo/{ => deprecated}/openshift/gitops.png | Bin
 .../operators/camel-k-operator-subscription.yaml   |   0
 .../operators/gitops-operator-subscription.yaml    |   0
 .../openshift/operators/gitops-rbac.yaml           |   0
 .../operators/karavan-operator-group.yaml          |   0
 .../openshift/operators/kustomization.yaml         |   0
 karavan-demo/{ => deprecated}/serverless/README.md |   0
 .../serverless/karavan/access.yaml                 |   0
 .../serverless/karavan/deployment.yaml             |   0
 .../serverless/karavan/kustomization.yaml          |   0
 .../serverless/karavan/service.yaml                |   0
 .../{ => deprecated}/serverless/serverless.png     | Bin
 karavan-demo/integrations/experiments/Example.java |  16 ----
 .../integrations/experiments/docker-compose.yml    |  95 -------------------
 .../integrations/experiments/http-to-kafka.yaml    |  43 ---------
 .../integrations/experiments/postgres_db.sql       |  12 ---
 .../integrations/experiments/rest-dsl.yaml         |  28 ------
 .../integrations/experiments/sql-to-log-int.yaml   |  26 -----
 .../integrations/experiments/sql-to-log.yaml       |  18 ----
 karavan-demo/integrations/experiments/xxx.groovy   |   9 --
 karavan-demo/integrations/experiments/zzz-int.yaml |  22 -----
 karavan-demo/integrations/experiments/zzz.yaml     |   6 --
 karavan-demo/integrations/rest-database/README.MD  |  28 ------
 .../integrations/rest-database/docker-compose.yml  |  27 ------
 .../integrations/rest-database/postgres_db.sql     |  12 ---
 .../integrations/rest-database/rest-database.yaml  |  51 ----------
 .../integrations/traits/trait-example.yaml         |  43 ---------
 karavan-demo/integrations/vvvv.yaml                |   5 -
 karavan-demo/integrations/xxx.yaml                 |  12 ---
 karavan-demo/placeholder/application.properties    |   3 +-
 karavan-demo/placeholder/local.properties          |  22 ++++-
 karavan-demo/postman/README.md                     |  49 ----------
 karavan-demo/postman/docs/README.md                | 105 +++++++++++++++++++++
 karavan-demo/postman/docs/builder.png              | Bin 0 -> 143031 bytes
 karavan-demo/postman/docs/deploy.png               | Bin 0 -> 129412 bytes
 karavan-demo/postman/docs/operators.png            | Bin 0 -> 96712 bytes
 karavan-demo/postman/{ => docs}/parcels.png        | Bin
 .../openshift-manifests}/instances/amq-broker.yaml |   0
 .../instances/amq-streams.yaml                     |   0
 .../instances/kustomization.yaml                   |   0
 .../openshift-manifests}/instances/postgresql.yaml |   0
 .../openshift-manifests}/kustomization.yaml        |   0
 .../operators/amq-operator.yaml                    |   0
 .../operators/amq-streams-operator.yaml            |   0
 .../operators/kustomization.yaml                   |   0
 .../openshift-manifests}/operators/namespace.yaml  |   0
 .../operators/operator-group.yaml                  |   0
 .../postman/{ => project}/CustomProcessor.java     |   0
 .../postman/{ => project}/docker-compose.yaml      |   0
 .../project/local.properties}                      |   9 +-
 karavan-demo/postman/project/openshift.properties  |  42 +++++++++
 karavan-demo/postman/{ => project}/postgres_db.sql |   0
 karavan-demo/postman/{ => project}/postman.yaml    |  16 ++--
 karavan-demo/postman/{ => project}/start.sh        |   0
 karavan-designer/src/builder/BuilderPage.tsx       |  12 ++-
 karavan-designer/src/designer/karavan.css          |  18 +++-
 karavan-vscode/package.json                        |   2 +-
 karavan-vscode/src/builderView.ts                  |  12 ++-
 karavan-vscode/src/commands.ts                     |  16 +++-
 karavan-vscode/src/designerView.ts                 |  34 ++++++-
 karavan-vscode/src/utils.ts                        |  24 -----
 karavan-vscode/webview/App.tsx                     |   2 +-
 karavan-vscode/webview/builder/BuilderPage.tsx     |  12 ++-
 karavan-vscode/webview/index.css                   |   3 +-
 91 files changed, 269 insertions(+), 675 deletions(-)

diff --git a/karavan-demo/builder/Dockerfile b/karavan-demo/builder/Dockerfile
deleted file mode 100644
index f988a0e..0000000
--- a/karavan-demo/builder/Dockerfile
+++ /dev/null
@@ -1,41 +0,0 @@
-# FROM jbangdev/jbang-action
-# RUN jbang trust add https://github.com/apache/camel/blob/HEAD/dsl/camel-jbang
-
-FROM groovy:jdk11
-
-ARG MAVEN_VERSION=3.8.5
-ARG USER_HOME_DIR="/home/groovy"
-ARG 
SHA=89ab8ece99292476447ef6a6800d9842bbb60787b9b8a45c103aa61d2f205a971d8c3ddfb8b03e514455b4173602bd015e82958c0b3ddc1728a57126f773c743
-ARG BASE_URL=https://apache.osuosl.org/maven/maven-3/${MAVEN_VERSION}/binaries
-
-RUN mkdir -p /usr/share/maven /usr/share/maven/ref \
-  && curl -fsSL -o /tmp/apache-maven.tar.gz 
${BASE_URL}/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
-  && echo "${SHA}  /tmp/apache-maven.tar.gz" | sha512sum -c - \
-  && tar -xzf /tmp/apache-maven.tar.gz -C /usr/share/maven 
--strip-components=1 \
-  && rm -f /tmp/apache-maven.tar.gz \
-  && ln -s /usr/share/maven/bin/mvn /usr/bin/mvn
-
-ENV MAVEN_HOME /usr/share/maven
-ENV MAVEN_CONFIG "$USER_HOME_DIR/.m2"
-
-COPY mvn-entrypoint.sh /usr/local/bin/mvn-entrypoint.sh
-COPY settings-docker.xml /usr/share/maven/ref/
-
-RUN curl -Ls https://sh.jbang.dev | bash -s - app setup
-ENV PATH="${PATH}:/home/groovy/.jbang/bin"
-ENV JBANG_DIR="/home/groovy/.jbang"
-ENV CAMEL_VERSION="3.17.0-SNAPSHOT"
-
-COPY --chown=groovy builder-demo.yaml /home/groovy/scripts/
-COPY --chown=groovy grapeConfig.xml /home/groovy/.groovy/
-RUN jbang trust add https://github.com/apache/camel/blob/HEAD/dsl/camel-jbang
-
-# RUN jbang run -Dcamel.jbang.version=$CAMEL_VERSION camel@apache/camel \
-#     run /home/groovy/scripts/builder-demo.yaml --max-messages=1 \
-#     
--deps=org.apache.camel:camel-core:$CAMEL_VERSION,org.apache.camel:camel-rest:$CAMEL_VERSION
-
-RUN ls -la $HOME/.m2/repository/org/apache/camel
-RUN ls -la $HOME/.m2/repository/org/apache/camel
-
-CMD ["jbang", "-Dcamel.jbang.version=$CAMEL_VERSION", "camel@apache/camel", 
"run", "/home/groovy/scripts/builder-demo.yaml"]
-
diff --git a/karavan-demo/builder/Dockerfile.maven 
b/karavan-demo/builder/Dockerfile.maven
deleted file mode 100644
index f25e3b6..0000000
--- a/karavan-demo/builder/Dockerfile.maven
+++ /dev/null
@@ -1,29 +0,0 @@
-
-FROM maven:3.8.5-jdk-11
-
-#Install JBang
-RUN curl -Ls https://sh.jbang.dev | bash -s - app setup
-
-# Set Environment Variables
-ENV JBANG_PATH="/root/.jbang/bin"
-ENV PATH="$PATH:/root/.jbang/bin"
-ENV JBANG_DIR="/root/.jbang"
-ENV CAMEL_VERSION="3.17.0-SNAPSHOT"
-
-# Get Camel dependencies
-COPY pom.xml /usr/src/mymaven/
-RUN mvn dependency:resolve -f /usr/src/mymaven
-
-# Copy files
-COPY builder-demo.yaml /usr/src/mymaven/
-COPY grapeConfig.xml $HOME/.groovy/
-
-RUN jbang trust add https://github.com/apache/camel/blob/HEAD/dsl/camel-jbang
-RUN jbang run -Dcamel.jbang.version=$CAMEL_VERSION camel@apache/camel run 
/usr/src/mymaven/builder-demo.yaml --max-messages=1 
-
-RUN ls -la $HOME/.m2/repository/
-RUN ls -la $HOME/.m2/repository/org/apache/camel
-RUN ls -la $HOME/.groovy/grapes
-
-CMD ["jbang", "-Dcamel.jbang.version=3.17.0-SNAPSHOT", "camel@apache/camel", 
"package", "uber-jar"]
-
diff --git a/karavan-demo/builder/builder-demo.yaml 
b/karavan-demo/builder/builder-demo.yaml
deleted file mode 100644
index d8763d6..0000000
--- a/karavan-demo/builder/builder-demo.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-- route:
-    from:
-      uri: kamelet:timer-source
-      steps:
-        - log:
-            message: ${body}
-      parameters:
-        period: 2000
-        message: Hello World
diff --git a/karavan-demo/dependency-injection/MyPrepareProcessor.java 
b/karavan-demo/dependency-injection/MyPrepareProcessor.java
deleted file mode 100644
index b5c6ee4..0000000
--- a/karavan-demo/dependency-injection/MyPrepareProcessor.java
+++ /dev/null
@@ -1,11 +0,0 @@
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-import javax.enterprise.context.ApplicationScoped;
-
-@ApplicationScoped
-public class MyPrepareProcessor implements Processor {
-
-  public void process(Exchange exchange) throws Exception {
-      exchange.getIn().setBody("Hello world");
-  }
-}
diff --git a/karavan-demo/dependency-injection/test.yaml 
b/karavan-demo/dependency-injection/test.yaml
deleted file mode 100644
index 8286510..0000000
--- a/karavan-demo/dependency-injection/test.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-apiVersion: camel.apache.org/v1
-kind: Integration
-metadata:
-  name: test.yaml
-spec:
-  flows:
-    - route:
-        from:
-          uri: kamelet:timer-source
-          steps:
-            - log:
-                message: 'Received: ${body}'
-            - process:
-                ref: '#class:MyPrepareProcessor'
-            - log:
-                message: 'Received: ${body}'
-          parameters:
-            period: 2000
-            message: hello
-        id: demo
diff --git a/karavan-demo/openshift/README.md 
b/karavan-demo/deprecated/openshift/README.md
similarity index 100%
rename from karavan-demo/openshift/README.md
rename to karavan-demo/deprecated/openshift/README.md
diff --git a/karavan-demo/openshift/apps/gitea/config-pvc.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/config-pvc.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/config-pvc.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/config-pvc.yaml
diff --git a/karavan-demo/openshift/apps/gitea/data-pvc.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/data-pvc.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/data-pvc.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/data-pvc.yaml
diff --git a/karavan-demo/openshift/apps/gitea/gitea-cm.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/gitea-cm.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/gitea-cm.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/gitea-cm.yaml
diff --git a/karavan-demo/openshift/apps/gitea/gitea-deployment.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/gitea-deployment.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/gitea-deployment.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/gitea-deployment.yaml
diff --git a/karavan-demo/openshift/apps/gitea/gitea-route.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/gitea-route.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/gitea-route.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/gitea-route.yaml
diff --git a/karavan-demo/openshift/apps/gitea/gitea-svc.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/gitea-svc.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/gitea-svc.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/gitea-svc.yaml
diff --git a/karavan-demo/openshift/apps/gitea/giteadb-dc.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/giteadb-dc.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/giteadb-dc.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/giteadb-dc.yaml
diff --git a/karavan-demo/openshift/apps/gitea/giteadb-pvc.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/giteadb-pvc.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/giteadb-pvc.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/giteadb-pvc.yaml
diff --git a/karavan-demo/openshift/apps/gitea/giteadb-secret.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/giteadb-secret.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/giteadb-secret.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/giteadb-secret.yaml
diff --git a/karavan-demo/openshift/apps/gitea/giteadb-svc.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/giteadb-svc.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/giteadb-svc.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/giteadb-svc.yaml
diff --git a/karavan-demo/openshift/apps/gitea/kustomization.yaml 
b/karavan-demo/deprecated/openshift/apps/gitea/kustomization.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitea/kustomization.yaml
rename to karavan-demo/deprecated/openshift/apps/gitea/kustomization.yaml
diff --git a/karavan-demo/openshift/apps/gitops/clusterrolebinding.yaml 
b/karavan-demo/deprecated/openshift/apps/gitops/clusterrolebinding.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitops/clusterrolebinding.yaml
rename to karavan-demo/deprecated/openshift/apps/gitops/clusterrolebinding.yaml
diff --git a/karavan-demo/openshift/apps/gitops/gitops-application.yaml 
b/karavan-demo/deprecated/openshift/apps/gitops/gitops-application.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitops/gitops-application.yaml
rename to karavan-demo/deprecated/openshift/apps/gitops/gitops-application.yaml
diff --git a/karavan-demo/openshift/apps/gitops/gitops-instance.yaml 
b/karavan-demo/deprecated/openshift/apps/gitops/gitops-instance.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitops/gitops-instance.yaml
rename to karavan-demo/deprecated/openshift/apps/gitops/gitops-instance.yaml
diff --git a/karavan-demo/openshift/apps/gitops/kustomization.yaml 
b/karavan-demo/deprecated/openshift/apps/gitops/kustomization.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/gitops/kustomization.yaml
rename to karavan-demo/deprecated/openshift/apps/gitops/kustomization.yaml
diff --git a/karavan-demo/openshift/apps/karavan/deployment.yaml 
b/karavan-demo/deprecated/openshift/apps/karavan/deployment.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/karavan/deployment.yaml
rename to karavan-demo/deprecated/openshift/apps/karavan/deployment.yaml
diff --git a/karavan-demo/openshift/apps/karavan/kustomization.yaml 
b/karavan-demo/deprecated/openshift/apps/karavan/kustomization.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/karavan/kustomization.yaml
rename to karavan-demo/deprecated/openshift/apps/karavan/kustomization.yaml
diff --git a/karavan-demo/openshift/apps/karavan/route.yaml 
b/karavan-demo/deprecated/openshift/apps/karavan/route.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/karavan/route.yaml
rename to karavan-demo/deprecated/openshift/apps/karavan/route.yaml
diff --git a/karavan-demo/openshift/apps/karavan/service.yaml 
b/karavan-demo/deprecated/openshift/apps/karavan/service.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/karavan/service.yaml
rename to karavan-demo/deprecated/openshift/apps/karavan/service.yaml
diff --git a/karavan-demo/openshift/apps/kustomization.yaml 
b/karavan-demo/deprecated/openshift/apps/kustomization.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/kustomization.yaml
rename to karavan-demo/deprecated/openshift/apps/kustomization.yaml
diff --git a/karavan-demo/openshift/apps/namespaces.yaml 
b/karavan-demo/deprecated/openshift/apps/namespaces.yaml
similarity index 100%
rename from karavan-demo/openshift/apps/namespaces.yaml
rename to karavan-demo/deprecated/openshift/apps/namespaces.yaml
diff --git a/karavan-demo/openshift/gitops.png 
b/karavan-demo/deprecated/openshift/gitops.png
similarity index 100%
rename from karavan-demo/openshift/gitops.png
rename to karavan-demo/deprecated/openshift/gitops.png
diff --git 
a/karavan-demo/openshift/operators/camel-k-operator-subscription.yaml 
b/karavan-demo/deprecated/openshift/operators/camel-k-operator-subscription.yaml
similarity index 100%
rename from karavan-demo/openshift/operators/camel-k-operator-subscription.yaml
rename to 
karavan-demo/deprecated/openshift/operators/camel-k-operator-subscription.yaml
diff --git a/karavan-demo/openshift/operators/gitops-operator-subscription.yaml 
b/karavan-demo/deprecated/openshift/operators/gitops-operator-subscription.yaml
similarity index 100%
rename from karavan-demo/openshift/operators/gitops-operator-subscription.yaml
rename to 
karavan-demo/deprecated/openshift/operators/gitops-operator-subscription.yaml
diff --git a/karavan-demo/openshift/operators/gitops-rbac.yaml 
b/karavan-demo/deprecated/openshift/operators/gitops-rbac.yaml
similarity index 100%
rename from karavan-demo/openshift/operators/gitops-rbac.yaml
rename to karavan-demo/deprecated/openshift/operators/gitops-rbac.yaml
diff --git a/karavan-demo/openshift/operators/karavan-operator-group.yaml 
b/karavan-demo/deprecated/openshift/operators/karavan-operator-group.yaml
similarity index 100%
rename from karavan-demo/openshift/operators/karavan-operator-group.yaml
rename to 
karavan-demo/deprecated/openshift/operators/karavan-operator-group.yaml
diff --git a/karavan-demo/openshift/operators/kustomization.yaml 
b/karavan-demo/deprecated/openshift/operators/kustomization.yaml
similarity index 100%
rename from karavan-demo/openshift/operators/kustomization.yaml
rename to karavan-demo/deprecated/openshift/operators/kustomization.yaml
diff --git a/karavan-demo/serverless/README.md 
b/karavan-demo/deprecated/serverless/README.md
similarity index 100%
rename from karavan-demo/serverless/README.md
rename to karavan-demo/deprecated/serverless/README.md
diff --git a/karavan-demo/serverless/karavan/access.yaml 
b/karavan-demo/deprecated/serverless/karavan/access.yaml
similarity index 100%
rename from karavan-demo/serverless/karavan/access.yaml
rename to karavan-demo/deprecated/serverless/karavan/access.yaml
diff --git a/karavan-demo/serverless/karavan/deployment.yaml 
b/karavan-demo/deprecated/serverless/karavan/deployment.yaml
similarity index 100%
rename from karavan-demo/serverless/karavan/deployment.yaml
rename to karavan-demo/deprecated/serverless/karavan/deployment.yaml
diff --git a/karavan-demo/serverless/karavan/kustomization.yaml 
b/karavan-demo/deprecated/serverless/karavan/kustomization.yaml
similarity index 100%
rename from karavan-demo/serverless/karavan/kustomization.yaml
rename to karavan-demo/deprecated/serverless/karavan/kustomization.yaml
diff --git a/karavan-demo/serverless/karavan/service.yaml 
b/karavan-demo/deprecated/serverless/karavan/service.yaml
similarity index 100%
rename from karavan-demo/serverless/karavan/service.yaml
rename to karavan-demo/deprecated/serverless/karavan/service.yaml
diff --git a/karavan-demo/serverless/serverless.png 
b/karavan-demo/deprecated/serverless/serverless.png
similarity index 100%
rename from karavan-demo/serverless/serverless.png
rename to karavan-demo/deprecated/serverless/serverless.png
diff --git a/karavan-demo/integrations/experiments/Example.java 
b/karavan-demo/integrations/experiments/Example.java
deleted file mode 100644
index 3e78509..0000000
--- a/karavan-demo/integrations/experiments/Example.java
+++ /dev/null
@@ -1,16 +0,0 @@
-import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.Exchange;
-import org.apache.camel.Processor;
-
-public class Example extends RouteBuilder implements Processor {
-    @Override
-    public void configure() throws Exception {
-        from("timer:tick")
-            .process("#class:Example")
-            .to("log:info");
-    }
-
-    public void process(Exchange exchange) throws Exception {
-        exchange.getIn().setBody("Hello World");
-    }
-}
\ No newline at end of file
diff --git a/karavan-demo/integrations/experiments/docker-compose.yml 
b/karavan-demo/integrations/experiments/docker-compose.yml
deleted file mode 100644
index 4b88e47..0000000
--- a/karavan-demo/integrations/experiments/docker-compose.yml
+++ /dev/null
@@ -1,95 +0,0 @@
----
-version: '3.8'
-services:
-
-  mongo:
-    container_name: mongo
-    image: mongo
-    restart: always
-    ports:
-      - 27017:27017
-    environment:
-      MONGO_INITDB_ROOT_USERNAME: root
-      MONGO_INITDB_ROOT_PASSWORD: example
-
-  zookeeper:
-    container_name: zookeeper
-    image: confluentinc/cp-zookeeper:latest
-    ports:
-      - "2181:2181"
-    environment:
-      ZOOKEEPER_CLIENT_PORT: 2181
-      ZOOKEEPER_TICK_TIME: 2000
-
-  kafka:
-    container_name: kafka
-    image: confluentinc/cp-kafka:latest
-    depends_on:
-      - zookeeper
-    ports:
-      - "9092:9092"
-    environment:
-      KAFKA_BROKER_ID: 1
-      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
-      KAFKA_ADVERTISED_LISTENERS: 
PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
-      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: 
PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
-      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
-      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
-      KAFKA_CREATE_TOPICS: "events:1:1"
-
-  activemq:
-    image: registry.redhat.io/amq7/amq-broker:latest
-    container_name: activemq
-    environment:
-      - AMQ_USER=admin
-      - AMQ_PASSWORD=admin
-    ports:
-      - "61616:61616"
-      - "8161:8161"  
-  
-  postgres:
-    image: postgres
-    container_name: postgres
-    restart: always
-    environment:
-      - POSTGRES_USER=postgres
-      - POSTGRES_PASSWORD=postgres
-      - POSTGRES_DB=demo
-    ports:
-      - '5432:5432'
-    volumes:
-      - ./postgres_db.sql:/docker-entrypoint-initdb.d/postgres_db.sql
-    command: 'postgres --max_prepared_transactions=100'
-
-  pgadmin:
-    container_name: pgadmin
-    image: dpage/pgadmin4
-    restart: always
-    environment:
-      PGADMIN_DEFAULT_EMAIL: [email protected]
-      PGADMIN_DEFAULT_PASSWORD: root
-    ports:
-      - "5050:80"
-
-  mysql:
-    image: mysql
-    container_name: mysql
-    restart: always
-    environment:
-      MYSQL_DATABASE: 'demo'
-      MYSQL_USER: 'demo'
-      MYSQL_PASSWORD: 'demo'
-      MYSQL_ROOT_PASSWORD: 'demo'
-    volumes:
-      - ./mysql_db.sql:/docker-entrypoint-initdb.d/mysql_db.sql
-    ports:
-      - '3306:3306'
-    expose:
-      - '3306'
-
-  adminer:
-    image: adminer
-    container_name: adminer
-    restart: always
-    ports:
-      - 6060:8080
diff --git a/karavan-demo/integrations/experiments/http-to-kafka.yaml 
b/karavan-demo/integrations/experiments/http-to-kafka.yaml
deleted file mode 100644
index 643bf5e..0000000
--- a/karavan-demo/integrations/experiments/http-to-kafka.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-- route:
-    from:
-      uri: platform-http:/demo
-      steps:
-        - unmarshal:
-            json:
-              library: jackson
-        - choice:
-            when:
-              - expression:
-                  simple:
-                    expression: ${body[amount]} > 1000
-                steps:
-                  - marshal:
-                      json:
-                        library: jackson
-                  - kamelet:
-                      name: kafka-not-secured-sink
-                      parameters:
-                        topic: topic-demo
-                        bootstrapServers: localhost:9092
-            otherwise:
-              steps:
-                - log:
-                    message: Amount is too small
-                    loggingLevel: INFO
-                    logName: demo
-        - setBody:
-            expression:
-              constant:
-                expression: '{"result":"OK"}'
-      parameters:
-        httpMethodRestrict: POST
-        produces: application/json
-- route:
-    from:
-      uri: kamelet:kafka-not-secured-source
-      steps:
-        - log:
-            message: 'Received from kafka: ${body}'
-      parameters:
-        topic: topic-demo
-        bootstrapServers: localhost:9092
diff --git a/karavan-demo/integrations/experiments/postgres_db.sql 
b/karavan-demo/integrations/experiments/postgres_db.sql
deleted file mode 100644
index 0b3a370..0000000
--- a/karavan-demo/integrations/experiments/postgres_db.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-
-CREATE TABLE IF NOT EXISTS table1 (
-  id INT NOT NULL,
-  name varchar(250) NOT NULL,
-  PRIMARY KEY (id)
-);
-
-CREATE TABLE IF NOT EXISTS table2 (
-  id varchar(250) NOT NULL,
-  name varchar(250) NOT NULL,
-  PRIMARY KEY (id)
-);
\ No newline at end of file
diff --git a/karavan-demo/integrations/experiments/rest-dsl.yaml 
b/karavan-demo/integrations/experiments/rest-dsl.yaml
deleted file mode 100644
index 38133fe..0000000
--- a/karavan-demo/integrations/experiments/rest-dsl.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-apiVersion: camel.apache.org/v1
-kind: Integration
-metadata:
-  name: rest-dsl-example.yaml
-spec:
-  flows:
-    - rest-configuration:
-        component: "platform-http"
-        context-path: "/base"  
-        port: 8081
-    - rest:
-        post:
-          - uri: "/foo"
-            to: "direct:foo"
-          - uri: "/bar"
-            to: "direct:bar"  
-        get:
-          - uri: "/getFoo"
-            to: "direct:foo"        
-          - uri: "/getBar"
-            to: "direct:foo"    
-    - from:
-        uri: 'direct:foo'
-        steps:
-          - log: '${body}'
-          - log: '${headers}'
-          - setBody:
-              constant: "Hello world"  
\ No newline at end of file
diff --git a/karavan-demo/integrations/experiments/sql-to-log-int.yaml 
b/karavan-demo/integrations/experiments/sql-to-log-int.yaml
deleted file mode 100644
index 9e2d371..0000000
--- a/karavan-demo/integrations/experiments/sql-to-log-int.yaml
+++ /dev/null
@@ -1,26 +0,0 @@
-apiVersion: camel.apache.org/v1
-kind: Integration
-metadata:
-  name: sql-to-log.yaml
-spec:
-  dependencies:
-    - 'mvn:org.apache.commons:commons-dbcp2:2.9.0'
-    - 'mvn:org.postgresql:postgresql:42.2.14'
-  flows:
-    - from:
-        parameters:
-          dataSource: '#bean:datasource'
-        steps:
-          - marshal:
-              json:
-                library: Jackson
-          - log: '${body}'
-        uri: 'sql:SELECT * FROM table1'
-    - beans:
-        - name: datasource
-          properties:
-            driverClassName: org.postgresql.Driver
-            password: postgres
-            url: 'jdbc:postgresql:localhost:5432:demo'
-            username: postgres
-          type: 'org.apache.commons.dbcp2.BasicDataSource'
\ No newline at end of file
diff --git a/karavan-demo/integrations/experiments/sql-to-log.yaml 
b/karavan-demo/integrations/experiments/sql-to-log.yaml
deleted file mode 100644
index 85d9467..0000000
--- a/karavan-demo/integrations/experiments/sql-to-log.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-# camel-k: dependency=mvn:org.apache.commons:commons-dbcp2:2.9.0 
dependency=mvn:org.postgresql:postgresql:42.2.14
-- from:
-    uri: "sql:SELECT * FROM table1"
-    parameters:
-      dataSource: "#bean:datasource"
-    steps:
-      - marshal:
-          json: 
-            library: Jackson
-      - log: "${body}"
-- beans:
-    - name: datasource
-      type: "org.apache.commons.dbcp2.BasicDataSource"
-      properties:
-        username: postgres
-        password: postgres
-        url: jdbc:postgresql:localhost:5432:demo
-        driverClassName: org.postgresql.Driver
diff --git a/karavan-demo/integrations/experiments/xxx.groovy 
b/karavan-demo/integrations/experiments/xxx.groovy
deleted file mode 100644
index 654e3c8..0000000
--- a/karavan-demo/integrations/experiments/xxx.groovy
+++ /dev/null
@@ -1,9 +0,0 @@
-beans {
-    myProcessor = processor { (2)
-        it.in.body = 'Hello Camel K!'
-    }
-}
-
-from('timer:tick?period=3000')
-  .process("myProcessor")
-  .to('log:info')
\ No newline at end of file
diff --git a/karavan-demo/integrations/experiments/zzz-int.yaml 
b/karavan-demo/integrations/experiments/zzz-int.yaml
deleted file mode 100644
index 31007cf..0000000
--- a/karavan-demo/integrations/experiments/zzz-int.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-apiVersion: camel.apache.org/v1
-kind: Integration
-metadata:
-  name: zzz-int
-spec:
-  flows:
-    - from:
-        uri: "timer:demo"
-        parameters:
-          period: 3000
-        steps:
-          - process: 
-              ref: myProcessor  
-          - log: "${body} + ${headers}"
-  sources:
-    - content: |-
-        beans {
-            myProcessor = processor { 
-                it.in.body = 'Hello World!'
-            }
-        }
-      name: xxx.groovy
diff --git a/karavan-demo/integrations/experiments/zzz.yaml 
b/karavan-demo/integrations/experiments/zzz.yaml
deleted file mode 100644
index e15a298..0000000
--- a/karavan-demo/integrations/experiments/zzz.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-- from:
-    uri: "timer:demo"
-    parameters:
-      period: 3000
-    steps:
-      - log: "${body} ${headers}"
\ No newline at end of file
diff --git a/karavan-demo/integrations/rest-database/README.MD 
b/karavan-demo/integrations/rest-database/README.MD
deleted file mode 100644
index 271c1f2..0000000
--- a/karavan-demo/integrations/rest-database/README.MD
+++ /dev/null
@@ -1,28 +0,0 @@
-## REST service to store/retrieve data to/from database (Postgres)
-Localhost Integration prototype with Camel & Jbang
-
-## Prerequisites
-Docker, docker-compose, jbang, VSCode with Camel Karavan extension installed
-
-## How to
-
-1. Start Docker compose (Postgres and PgAdmin)
-```
-docker-compose up
-```
-
-2. Start Camel integration
-```
-jbang camel@apache/camel run rest-database.yaml --logging-level=info
-```
-
-3. Store data to database
-```
-curl -X POST -H "Content-Type: application/json" --data '{"id":1,"name":"John 
Doe"}' http://0.0.0.0:8080/client
-curl -X POST -H "Content-Type: application/json" --data '{"id":2,"name":"Jane 
Doe"}' http://0.0.0.0:8080/client
-```
-
-4. Retrieve data from database
-```
-curl -X GET -H "Content-Type: application/json" http://0.0.0.0:8080/client
-```
\ No newline at end of file
diff --git a/karavan-demo/integrations/rest-database/docker-compose.yml 
b/karavan-demo/integrations/rest-database/docker-compose.yml
deleted file mode 100644
index 50a0394..0000000
--- a/karavan-demo/integrations/rest-database/docker-compose.yml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-version: '3.8'
-services:
-
-  postgres:
-    image: postgres
-    container_name: postgres
-    restart: always
-    environment:
-      - POSTGRES_USER=postgres
-      - POSTGRES_PASSWORD=postgres
-      - POSTGRES_DB=demo
-    ports:
-      - '5432:5432'
-    volumes:
-      - ./postgres_db.sql:/docker-entrypoint-initdb.d/postgres_db.sql
-    command: 'postgres --max_prepared_transactions=100'
-
-  pgadmin:
-    container_name: pgadmin
-    image: dpage/pgadmin4
-    restart: always
-    environment:
-      PGADMIN_DEFAULT_EMAIL: [email protected]
-      PGADMIN_DEFAULT_PASSWORD: root
-    ports:
-      - "5050:80"
\ No newline at end of file
diff --git a/karavan-demo/integrations/rest-database/postgres_db.sql 
b/karavan-demo/integrations/rest-database/postgres_db.sql
deleted file mode 100644
index 0b3a370..0000000
--- a/karavan-demo/integrations/rest-database/postgres_db.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-
-CREATE TABLE IF NOT EXISTS table1 (
-  id INT NOT NULL,
-  name varchar(250) NOT NULL,
-  PRIMARY KEY (id)
-);
-
-CREATE TABLE IF NOT EXISTS table2 (
-  id varchar(250) NOT NULL,
-  name varchar(250) NOT NULL,
-  PRIMARY KEY (id)
-);
\ No newline at end of file
diff --git a/karavan-demo/integrations/rest-database/rest-database.yaml 
b/karavan-demo/integrations/rest-database/rest-database.yaml
deleted file mode 100644
index 8fd9a52..0000000
--- a/karavan-demo/integrations/rest-database/rest-database.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-- rest:
-    post:
-      - path: client
-        to: direct:post
-    get:
-      - path: client
-        to: direct:get
-    consumes: application/json
-    produces: application/json
-    bindingMode: 'off'
-- route:
-    from:
-      uri: direct:get
-      steps:
-        - setBody:
-            expression:
-              simple:
-                expression: '" "'
-                resultType: String
-        - kamelet:
-            name: postgresql-sink
-            parameters:
-              serverName: localhost
-              serverPort: '5432'
-              username: postgres
-              password: postgres
-              query: SELECT * FROM table1
-              databaseName: demo
-        - marshal:
-            json:
-              library: jackson
-    id: get
-- route:
-    from:
-      uri: direct:post
-      steps:
-        - kamelet:
-            name: postgresql-sink
-            parameters:
-              serverName: localhost
-              serverPort: '5432'
-              username: postgres
-              password: postgres
-              databaseName: demo
-              query: >-
-                INSERT INTO table1 (id,name) VALUES (:#id,:#name) ON CONFLICT
-                (id) DO UPDATE SET name = :#name 
-        - marshal:
-            json:
-              library: jackson
-    id: post
diff --git a/karavan-demo/integrations/traits/trait-example.yaml 
b/karavan-demo/integrations/traits/trait-example.yaml
deleted file mode 100644
index a56b528..0000000
--- a/karavan-demo/integrations/traits/trait-example.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-apiVersion: camel.apache.org/v1
-kind: Integration
-metadata:
-  name: trait-example.yaml
-spec:
-  traits:
-    camel:
-      configuration:
-        properties:
-          - camel.component.seda.queueSize = 1
-          - camel.component.seda.defaultPollTimeout = 5000
-    environment:
-      configuration:
-        vars:
-          - TEST_VARIABLE = HELLO_WORLD_
-    logging:
-      configuration:
-        json: true
-        level: DEBUG
-  flows:
-    - route:
-        id: route1
-        from:
-          uri: timer:demo
-          parameters:
-            repeatCount: 10
-          steps:
-            - setBody:
-                simple: '{{TEST_VARIABLE}}'
-            - log:
-                message: ${body}
-                loggingLevel: INFO
-            - to: seda:seda1
-    - route:
-        id: route2
-        from:
-          uri: seda:seda1
-          parameters:
-            size: 1
-          steps:
-            - log:
-                message: ${body}
-                loggingLevel: INFO    
diff --git a/karavan-demo/integrations/vvvv.yaml 
b/karavan-demo/integrations/vvvv.yaml
deleted file mode 100644
index c906bbe..0000000
--- a/karavan-demo/integrations/vvvv.yaml
+++ /dev/null
@@ -1,5 +0,0 @@
-- route:
-    from:
-      uri: google-mail
-      steps:
-        - choice: {}
diff --git a/karavan-demo/integrations/xxx.yaml 
b/karavan-demo/integrations/xxx.yaml
deleted file mode 100644
index e5196d9..0000000
--- a/karavan-demo/integrations/xxx.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-- route:
-    from:
-      uri: as2
-      steps:
-        - filter:
-            expression:
-              simple:
-                expression: ${body} != null
-            steps:
-              - unmarshal:
-                  json:
-                    library: jackson
diff --git a/karavan-demo/placeholder/application.properties 
b/karavan-demo/placeholder/application.properties
index fda338d..8480f5f 100644
--- a/karavan-demo/placeholder/application.properties
+++ b/karavan-demo/placeholder/application.properties
@@ -1,9 +1,8 @@
-
 message=Hello Placeholder!
 camel.jbang.project.name=demo
 camel.jbang.project.version=1.0.0
 camel.jbang.project.namespace=default
-camel.jbang.project.cleanup=true
+camel.jbang.project.cleanup=false
 camel.jbang.package=true
 camel.jbang.package.uber-jar.jar=camel-runner.jar
 camel.jbang.package.uber-jar.fresh=true
diff --git a/karavan-demo/placeholder/local.properties 
b/karavan-demo/placeholder/local.properties
index 8147934..f82f431 100644
--- a/karavan-demo/placeholder/local.properties
+++ b/karavan-demo/placeholder/local.properties
@@ -1,3 +1,21 @@
-
-message=Local mode
+message=Local Placeholder!
+camel.jbang.project.cleanup=false
+camel.jbang.package=true
+camel.jbang.package.uber-jar.fresh=true
 camel.main.routesIncludePattern=file:demo.yaml
+camel.jbang.build.image=false
+camel.jbang.build.image.openshift=false
+camel.jbang.build.image.build-config=false
+camel.jbang.build.image.push=false
+camel.jbang.build.image.image=undefined/undefined:undefined
+camel.jbang.deploy=false
+camel.jbang.deploy.openshift=false
+camel.jbang.deploy.minikube=false
+camel.jbang.deploy.image=undefined/undefined:undefined
+camel.jbang.undeploy.openshift=false
+camel.jbang.undeploy.minikube=false
+camel.jbang.manifests=false
+camel.jbang.manifests.path=false
+camel.jbang.manifests.openshift=false
+camel.jbang.manifests.minikube=false
+camel.jbang.manifests.image=undefined/undefined:undefined
\ No newline at end of file
diff --git a/karavan-demo/postman/README.md b/karavan-demo/postman/README.md
deleted file mode 100644
index 8ae9880..0000000
--- a/karavan-demo/postman/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Demo: Parcels Delivery Service 
-
-![Demo](parcels.png)
-
-## Prerequisites
-
-1. [VSCode](https://code.visualstudio.com/download)  installed
-2. Apache Camel 
[Karavan](https://marketplace.visualstudio.com/items?itemName=camel-karavan.karavan)
 extension installed
-3. [Jbang](https://www.jbang.dev/download/) installed
-4. Docker and Docker compose installed
-5. Build Apache Artemis Docker Image
-```
-cd artemis
-./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 ../../../../
-```
-For MacOS users, in case of `tree command not found` error, install tree `brew 
install tree`
-
-## How-to
-
-### Start environment
-```
-docker-compose up
-```
-
-### Start integration 
-```
-jbang -Dcamel.jbang.version=3.16.0-SNAPSHOT camel@apache/camel run postman.yaml
-```
-
-### Publish parcel
-```
-curl -X POST -H "Content-Type: application/json" --data 
'{"id":"1","address":"666 Sin Street, Holy City"}' http://0.0.0.0:8080/parcels
-```
-
-### Publish payment
-Open AMQ7 Broker Management [Console](http://localhost:8161)
-
-Send message to `payments` queue
-```
-<?xml version="1.0" encoding="UTF-8" ?>
-<root>
-  <id>1</id>
-  <amount>777</amount>
-  <status>confirmed</status>  
-</root>
-```
diff --git a/karavan-demo/postman/docs/README.md 
b/karavan-demo/postman/docs/README.md
new file mode 100644
index 0000000..8808460
--- /dev/null
+++ b/karavan-demo/postman/docs/README.md
@@ -0,0 +1,105 @@
+# Demo: Parcels Delivery Service 
+
+![Demo](parcels.png)
+
+## Localhost
+### Prerequisites
+
+1. [VSCode](https://code.visualstudio.com/download)  installed
+2. Apache Camel 
[Karavan](https://marketplace.visualstudio.com/items?itemName=camel-karavan.karavan)
 extension installed
+3. [Jbang](https://www.jbang.dev/download/) installed
+4. Docker and Docker compose installed
+5. Build Apache Artemis Docker Image
+```
+cd ../artemis
+./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
+```
+docker-compose up
+```
+
+### Start integration 
+```
+jbang -Dcamel.jbang.version=3.18.0-SNAPSHOT camel@apache/camel run *
+```
+
+### Publish parcel
+```
+curl -X POST -H "Content-Type: application/json" --data 
'{"id":"1","address":"666 Sin Street, Holy City"}' http://0.0.0.0:8080/parcels
+```
+
+### Publish payment
+Open AMQ7 Broker Management [Console](http://localhost:8161)
+
+Send message to `payments` queue
+```
+<?xml version="1.0" encoding="UTF-8" ?>
+<root>
+  <id>1</id>
+  <amount>777</amount>
+  <status>confirmed</status>  
+</root>
+```
+
+## OpenShift
+## Prerequisites
+
+1. [VSCode](https://code.visualstudio.com/download)  installed
+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
+
+
+### Install AMQ and AMQ Streams Operators
+Also creates `postman` namespace required for the demo
+```
+oc apply -k manifests/operators
+```
+Check that operators are succesfully installed
+![operators](operators.png)
+
+### Create AMQ, Kafka and Postgres demo instances 
+```
+oc apply -k manifests/instances
+```
+
+### Package, build and deploy project
+1. Open Project builder
+![builder](builder.png)
+
+2. Configure Project and click Start
+![deploy](deploy.png)
+```
+
+```
+
+### Publish parcel
+```
+appsurl=$(oc get ingresses.config.openshift.io cluster  -o template --template 
'{{.spec.domain}}')
+
+curl -X POST -H "Content-Type: application/json" --data 
'{"id":"1","address":"666 Sin Street, Holy City"}' 
http://postman-postman.$appsurl/parcels
+```
+### Publish payment
+Open AMQ7 Broker Management 
+```
+open http://console-postman.$appsurl
+```
+
+Send message to `payments` queue
+```
+<?xml version="1.0" encoding="UTF-8" ?>
+<root>
+  <id>1</id>
+  <amount>777</amount>
+  <status>confirmed</status>  
+</root>
+```
+
+### Check postman logs and Database
diff --git a/karavan-demo/postman/docs/builder.png 
b/karavan-demo/postman/docs/builder.png
new file mode 100644
index 0000000..880bf92
Binary files /dev/null and b/karavan-demo/postman/docs/builder.png differ
diff --git a/karavan-demo/postman/docs/deploy.png 
b/karavan-demo/postman/docs/deploy.png
new file mode 100644
index 0000000..67b343f
Binary files /dev/null and b/karavan-demo/postman/docs/deploy.png differ
diff --git a/karavan-demo/postman/docs/operators.png 
b/karavan-demo/postman/docs/operators.png
new file mode 100644
index 0000000..3582bcb
Binary files /dev/null and b/karavan-demo/postman/docs/operators.png differ
diff --git a/karavan-demo/postman/parcels.png 
b/karavan-demo/postman/docs/parcels.png
similarity index 100%
rename from karavan-demo/postman/parcels.png
rename to karavan-demo/postman/docs/parcels.png
diff --git a/karavan-demo/postman-openshift/manifests/instances/amq-broker.yaml 
b/karavan-demo/postman/openshift-manifests/instances/amq-broker.yaml
similarity index 100%
rename from karavan-demo/postman-openshift/manifests/instances/amq-broker.yaml
rename to karavan-demo/postman/openshift-manifests/instances/amq-broker.yaml
diff --git 
a/karavan-demo/postman-openshift/manifests/instances/amq-streams.yaml 
b/karavan-demo/postman/openshift-manifests/instances/amq-streams.yaml
similarity index 100%
rename from karavan-demo/postman-openshift/manifests/instances/amq-streams.yaml
rename to karavan-demo/postman/openshift-manifests/instances/amq-streams.yaml
diff --git 
a/karavan-demo/postman-openshift/manifests/instances/kustomization.yaml 
b/karavan-demo/postman/openshift-manifests/instances/kustomization.yaml
similarity index 100%
rename from 
karavan-demo/postman-openshift/manifests/instances/kustomization.yaml
rename to karavan-demo/postman/openshift-manifests/instances/kustomization.yaml
diff --git a/karavan-demo/postman-openshift/manifests/instances/postgresql.yaml 
b/karavan-demo/postman/openshift-manifests/instances/postgresql.yaml
similarity index 100%
rename from karavan-demo/postman-openshift/manifests/instances/postgresql.yaml
rename to karavan-demo/postman/openshift-manifests/instances/postgresql.yaml
diff --git a/karavan-demo/postman-openshift/manifests/kustomization.yaml 
b/karavan-demo/postman/openshift-manifests/kustomization.yaml
similarity index 100%
rename from karavan-demo/postman-openshift/manifests/kustomization.yaml
rename to karavan-demo/postman/openshift-manifests/kustomization.yaml
diff --git 
a/karavan-demo/postman-openshift/manifests/operators/amq-operator.yaml 
b/karavan-demo/postman/openshift-manifests/operators/amq-operator.yaml
similarity index 100%
rename from karavan-demo/postman-openshift/manifests/operators/amq-operator.yaml
rename to karavan-demo/postman/openshift-manifests/operators/amq-operator.yaml
diff --git 
a/karavan-demo/postman-openshift/manifests/operators/amq-streams-operator.yaml 
b/karavan-demo/postman/openshift-manifests/operators/amq-streams-operator.yaml
similarity index 100%
rename from 
karavan-demo/postman-openshift/manifests/operators/amq-streams-operator.yaml
rename to 
karavan-demo/postman/openshift-manifests/operators/amq-streams-operator.yaml
diff --git 
a/karavan-demo/postman-openshift/manifests/operators/kustomization.yaml 
b/karavan-demo/postman/openshift-manifests/operators/kustomization.yaml
similarity index 100%
rename from 
karavan-demo/postman-openshift/manifests/operators/kustomization.yaml
rename to karavan-demo/postman/openshift-manifests/operators/kustomization.yaml
diff --git a/karavan-demo/postman-openshift/manifests/operators/namespace.yaml 
b/karavan-demo/postman/openshift-manifests/operators/namespace.yaml
similarity index 100%
rename from karavan-demo/postman-openshift/manifests/operators/namespace.yaml
rename to karavan-demo/postman/openshift-manifests/operators/namespace.yaml
diff --git 
a/karavan-demo/postman-openshift/manifests/operators/operator-group.yaml 
b/karavan-demo/postman/openshift-manifests/operators/operator-group.yaml
similarity index 100%
rename from 
karavan-demo/postman-openshift/manifests/operators/operator-group.yaml
rename to karavan-demo/postman/openshift-manifests/operators/operator-group.yaml
diff --git a/karavan-demo/postman/CustomProcessor.java 
b/karavan-demo/postman/project/CustomProcessor.java
similarity index 100%
rename from karavan-demo/postman/CustomProcessor.java
rename to karavan-demo/postman/project/CustomProcessor.java
diff --git a/karavan-demo/postman/docker-compose.yaml 
b/karavan-demo/postman/project/docker-compose.yaml
similarity index 100%
rename from karavan-demo/postman/docker-compose.yaml
rename to karavan-demo/postman/project/docker-compose.yaml
diff --git a/karavan-demo/builder/application.properties 
b/karavan-demo/postman/project/local.properties
similarity index 80%
rename from karavan-demo/builder/application.properties
rename to karavan-demo/postman/project/local.properties
index 19f2988..7b45580 100644
--- a/karavan-demo/builder/application.properties
+++ b/karavan-demo/postman/project/local.properties
@@ -1,12 +1,15 @@
-message=Hello World
-camel.jbang.project.name=builder-demo
+kafka-brokers=localhost:9092
+postgres-server=localhost
+jms-broker=tcp://localhost:61616
+mqtt-broker=tcp://localhost:1883
+camel.jbang.project.name=postman
 camel.jbang.project.version=1.0.0
 camel.jbang.project.namespace=default
 camel.jbang.project.cleanup=false
 camel.jbang.package=true
 camel.jbang.package.uber-jar.jar=camel-runner.jar
 camel.jbang.package.uber-jar.fresh=true
-camel.main.routesIncludePattern=file:builder-demo.yaml
+camel.main.routesIncludePattern=file:CustomProcessor.java,file:postman.yaml
 camel.jbang.build.image=false
 camel.jbang.build.image.openshift=false
 camel.jbang.build.image.build-config=false
diff --git a/karavan-demo/postman/project/openshift.properties 
b/karavan-demo/postman/project/openshift.properties
new file mode 100644
index 0000000..e24823f
--- /dev/null
+++ b/karavan-demo/postman/project/openshift.properties
@@ -0,0 +1,42 @@
+kafka-brokers=kafka-kafka-brokers:9092
+postgres-server=postgres
+jms-broker=tcp://amq-hdls-svc:61616
+mqtt-broker=tcp://amq-hdls-svc:1883
+camel.jbang.project.name=postman
+camel.jbang.project.version=1.0.0
+camel.jbang.project.namespace=postman
+camel.jbang.project.cleanup=false
+camel.jbang.package=true
+camel.jbang.package.uber-jar.jar=camel-runner.jar
+camel.jbang.package.uber-jar.fresh=true
+camel.main.routesIncludePattern=file:CustomProcessor.java,file:postman.yaml
+camel.jbang.build.image=true
+camel.jbang.build.image.openshift=true
+camel.jbang.build.image.build-config=false
+camel.jbang.build.image.push=true
+camel.jbang.build.image.jar=camel-runner.jar
+camel.jbang.build.image.image=postman/demo:1.0.0
+camel.jbang.build.image.source-image=java:openjdk-11-ubi8
+camel.jbang.build.image.from=gcr.io/distroless/java:11
+camel.jbang.build.image.server=https://api.cluster-9tpgc.9tpgc.sandbox928.opentlc.com:6443
+camel.jbang.build.image.username=opentlc-mgr
+camel.jbang.deploy=true
+camel.jbang.deploy.openshift=true
+camel.jbang.deploy.minikube=false
+camel.jbang.deploy.image=postman/demo:1.0.0
+camel.jbang.deploy.replicas=1
+camel.jbang.deploy.node-port=30777
+camel.jbang.deploy.server=https://api.cluster-9tpgc.9tpgc.sandbox928.opentlc.com:6443
+camel.jbang.deploy.username=opentlc-mgr
+camel.jbang.undeploy.openshift=true
+camel.jbang.undeploy.minikube=false
+camel.jbang.undeploy.server=https://api.cluster-9tpgc.9tpgc.sandbox928.opentlc.com:6443
+camel.jbang.manifests=true
+camel.jbang.manifests.path=true
+camel.jbang.manifests.openshift=true
+camel.jbang.manifests.minikube=false
+camel.jbang.manifests.image=postman/demo:1.0.0
+camel.jbang.manifests.replicas=1
+camel.jbang.manifests.node-port=30777
+camel.jbang.manifests.server=https://api.cluster-9tpgc.9tpgc.sandbox928.opentlc.com:6443
+camel.jbang.manifests.jar=camel-runner.jar
\ No newline at end of file
diff --git a/karavan-demo/postman/postgres_db.sql 
b/karavan-demo/postman/project/postgres_db.sql
similarity index 100%
rename from karavan-demo/postman/postgres_db.sql
rename to karavan-demo/postman/project/postgres_db.sql
diff --git a/karavan-demo/postman/postman.yaml 
b/karavan-demo/postman/project/postman.yaml
similarity index 91%
rename from karavan-demo/postman/postman.yaml
rename to karavan-demo/postman/project/postman.yaml
index 9c7b86d..acbe3ad 100644
--- a/karavan-demo/postman/postman.yaml
+++ b/karavan-demo/postman/project/postman.yaml
@@ -22,11 +22,11 @@ spec:
                       uri: kamelet:kafka-not-secured-sink
                       parameters:
                         topic: parcels
-                        bootstrapServers: localhost:9092
+                        bootstrapServers: '{{kafka-brokers}}'
                   - to:
                       uri: kamelet:postgresql-sink
                       parameters:
-                        serverName: localhost
+                        serverName: '{{postgres-server}}'
                         serverPort: '5432'
                         username: postgres
                         password: postgres
@@ -51,11 +51,11 @@ spec:
                 uri: kamelet:kafka-not-secured-sink
                 parameters:
                   topic: payments
-                  bootstrapServers: localhost:9092
+                  bootstrapServers: '{{kafka-brokers}}'
           parameters:
             destinationType: queue
             destinationName: payments
-            brokerURL: tcp://localhost:61616
+            brokerURL: '{{jms-broker}}'
         id: payment
     - route:
         from:
@@ -85,7 +85,7 @@ spec:
                                 uri: kamelet:mqtt-sink
                                 parameters:
                                   topic: deliveries
-                                  brokerUrl: tcp://localhost:1883
+                                  brokerUrl: '{{mqtt-broker}}'
                       otherwise:
                         steps:
                           - setBody:
@@ -100,7 +100,7 @@ spec:
                           - to:
                               uri: kamelet:postgresql-sink
                               parameters:
-                                serverName: localhost
+                                serverName: '{{postgres-server}}'
                                 serverPort: '5432'
                                 username: postgres
                                 password: postgres
@@ -115,7 +115,7 @@ spec:
                     expression: body.get('id')
           parameters:
             topic: parcels,payments
-            bootstrapServers: localhost:9092
+            bootstrapServers: '{{kafka-brokers}}'
             autoCommitEnable: true
             consumerGroup: postman
         id: aggregator
@@ -127,7 +127,7 @@ spec:
                 message: 'Delivery: ${body}'
           parameters:
             topic: deliveries
-            brokerUrl: tcp://localhost:1883
+            brokerUrl: '{{mqtt-broker}}'
     - beans:
         - name: aggregator
           type: 
org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy
diff --git a/karavan-demo/postman/start.sh 
b/karavan-demo/postman/project/start.sh
similarity index 100%
rename from karavan-demo/postman/start.sh
rename to karavan-demo/postman/project/start.sh
diff --git a/karavan-designer/src/builder/BuilderPage.tsx 
b/karavan-designer/src/builder/BuilderPage.tsx
index c7999ce..fe699ed 100644
--- a/karavan-designer/src/builder/BuilderPage.tsx
+++ b/karavan-designer/src/builder/BuilderPage.tsx
@@ -45,6 +45,7 @@ import DeployIcon from 
'@patternfly/react-icons/dist/esm/icons/cloud-upload-alt-
 import CleanupIcon from '@patternfly/react-icons/dist/esm/icons/remove2-icon';
 import ProjectIcon from '@patternfly/react-icons/dist/esm/icons/cubes-icon';
 import ClipboardIcon from 
'@patternfly/react-icons/dist/esm/icons/clipboard-icon';
+import RunIcon from '@patternfly/react-icons/dist/esm/icons/play-circle-icon';
 import {FileSelector} from "./FileSelector";
 import {Profile, ProjectModel, StepStatus} from 
"karavan-core/lib/model/ProjectModel";
 import {ProfileSelector} from "./ProfileSelector";
@@ -56,7 +57,7 @@ interface Props {
     profile?: Profile
     files: string
     onChange?: (profiles: Profile[]) => void
-    onAction?: (action: "start" | "stop" | "undeploy", profile: Profile) => 
void
+    onAction?: (action: "start" | "stop" | "undeploy" | "run", profile: 
Profile) => void
 }
 
 interface State {
@@ -302,7 +303,7 @@ export class BuilderPage extends React.Component<Props, 
State> {
                 <Flex className="tools" direction={{default: 'row'}} 
justifyContent={{default: 'justifyContentSpaceBetween'}} spaceItems={{default: 
'spaceItemsLg'}}>
                     <FlexItem>
                         <TextContent className="header">
-                            <Text component="h2">Project Builder</Text>
+                            <Text component="h2">Build Runner</Text>
                             <Badge isRead className="labels">Powered by Camel 
JBang</Badge>
                         </TextContent>
                     </FlexItem>
@@ -345,13 +346,13 @@ export class BuilderPage extends React.Component<Props, 
State> {
         )
     }
 
-    onButtonClick(action: "start" | "stop" | "undeploy") {
+    onButtonClick(action: "start" | "stop" | "undeploy" | "run") {
         this.props.onAction?.call(this, action, this.state.profile);
     }
 
     getFooter() {
         const active = this.state.profile.project.status.active;
-        const label = active ? "Stop" : "Start";
+        const label = active ? "Stop" : "Package";
         const icon = active ? <InProgressIcon/> : <AutomationIcon/>;
         return <div key={this.state.key} className="footer">
             <div className="progress">
@@ -366,6 +367,9 @@ export class BuilderPage extends React.Component<Props, 
State> {
                         <ToolbarItem>
                             <Button variant="primary" isSmall icon={icon} 
onClick={event => this.onButtonClick(active ? "stop" : 
"start")}>{label}</Button>
                         </ToolbarItem>
+                        <ToolbarItem>
+                            <Button variant="primary" isSmall 
icon={<RunIcon/>} onClick={event => this.onButtonClick( "run")}>Run</Button>
+                        </ToolbarItem>
                     </ToolbarContent>
                 </Toolbar>
             </div>
diff --git a/karavan-designer/src/designer/karavan.css 
b/karavan-designer/src/designer/karavan.css
index b84d783..b95446e 100644
--- a/karavan-designer/src/designer/karavan.css
+++ b/karavan-designer/src/designer/karavan.css
@@ -1107,6 +1107,18 @@ reactour-portal .reactour__popover button:focus-visible {
 
 .karavan .project-builder .tools-section {
     padding-left: 10px;
+    padding-right: 10px;
+}
+
+.karavan .project-builder .pf-c-toolbar__content {
+    padding: 0;
+}
+
+.karavan .project-builder .pf-c-tabs__link,
+.karavan .project-builder .pf-c-card__title,
+.karavan .project-builder .profile-caption
+{
+    font-size: 14px;
 }
 
 .karavan .project-builder .card-header svg {
@@ -1196,8 +1208,4 @@ reactour-portal .reactour__popover button:focus-visible {
 .karavan .project-builder .add-button {
     width: fit-content;
     margin-top: 6px;
-}
-
-.karavan .project-builder .profile-caption {
-    font-size: 1.1em;
-}
+}
\ No newline at end of file
diff --git a/karavan-vscode/package.json b/karavan-vscode/package.json
index 4fd1b4c..69caad9 100644
--- a/karavan-vscode/package.json
+++ b/karavan-vscode/package.json
@@ -136,7 +136,7 @@
       },
       {
         "command": "karavan.projectBuilder",
-        "title": "Karavan: Project Builder",
+        "title": "Karavan: Build Runner",
         "icon": {
           "light": "icons/light/builder.svg",
           "dark": "icons/dark/builder.svg"
diff --git a/karavan-vscode/src/builderView.ts 
b/karavan-vscode/src/builderView.ts
index e8e7e95..e6c04c2 100644
--- a/karavan-vscode/src/builderView.ts
+++ b/karavan-vscode/src/builderView.ts
@@ -36,7 +36,7 @@ export class BuilderView {
             // Karavan webview
             builderPanel = vscode.window.createWebviewPanel(
                 "karavan",
-                "Builder",
+                "Build Runner",
                 vscode.ViewColumn.One,
                 {
                     enableScripts: true,
@@ -99,11 +99,12 @@ export class BuilderView {
         }
     }
 
-    actionProfile(action: "start" | "stop" | "undeploy", profile: Profile) {
+    actionProfile(action: "start" | "stop" | "undeploy" | "run", profile: 
Profile) {
         switch (action) {
             case "start": this.start(profile); break;
             case "stop": { }; break;
             case "undeploy": this.undelpoy(profile); break;
+            case "run": this.run(profile); break;
         }
     }
 
@@ -224,6 +225,7 @@ export class BuilderView {
                 console.log(err)
             }
         })
+        if (profiles.length === 0) profiles.push(Profile.createNew("local"))
         return profiles;
     }
 
@@ -236,4 +238,10 @@ export class BuilderView {
         builderPanel?.webview.postMessage({ command: 'profile', files: files, 
profile: Profile.create(profile.name, project) });
         commands.camelJbangUndeploy(this.rootPath || '',profile.name, project, 
(code) => this.finish(profile.name, project, files, code));
     }
+
+    run(profile: Profile) {
+        const project = profile.project;
+        console.log("run", project);
+        commands.camelJbangRun(this.rootPath || '', profile.name);
+    }
 }
diff --git a/karavan-vscode/src/commands.ts b/karavan-vscode/src/commands.ts
index b820e60..29c2e12 100644
--- a/karavan-vscode/src/commands.ts
+++ b/karavan-vscode/src/commands.ts
@@ -21,6 +21,8 @@ import * as shell from 'shelljs';
 import { CamelDefinitionYaml } from "karavan-core/lib/api/CamelDefinitionYaml";
 import { ProjectModel } from "karavan-core/lib/model/ProjectModel";
 
+const TERMINALS: Map<string, vscode.Terminal> = new Map<string, 
vscode.Terminal>();
+
 export function camelJbangGenerate(rootPath: string, openApiFullPath: string, 
fullPath: string, add: boolean, crd?: boolean, generateRoutes?: boolean) {
     let command = prepareCommand("generate rest -i " + openApiFullPath, 
"application"); // TODO: set profile configurable
     if (generateRoutes === true) command = command + " --routes";
@@ -67,7 +69,7 @@ export function createYaml(filename: string, restYaml: 
string, camelYaml?: strin
 }
 
 export function camelJbangPackage(rootPath: string, profile: string, callback: 
(code: number) => any) {
-    executeJbangCommand(rootPath, prepareCommand("package uber-jar --fresh", 
profile), (code, stdout, stderr) => callback(code));
+    executeJbangCommand(rootPath, prepareCommand("package uber-jar", profile), 
(code, stdout, stderr) => callback(code));
 }
 
 export function camelJbangBuildImage(rootPath: string, profile: string, 
project: ProjectModel, callback: (code: number) => any) {
@@ -112,6 +114,18 @@ function prepareCommand(command: string, profile: string, 
project?: ProjectModel
     return "jbang -Dcamel.jbang.version=" + version + " camel@apache/camel " + 
command + token + password + " --profile " + profile;
 }
 
+export function camelJbangRun(rootPath: string, profile: string, filename?: 
string) {
+    const maxMessages: number = 
vscode.workspace.getConfiguration().get("camel.maxMessages") || -1;
+    const cmd = (filename ? "run " + filename : "run * " ) + (maxMessages > -1 
? " --max-messages=" + maxMessages : "");
+    const command = prepareCommand(cmd, profile);
+    const existTerminal = TERMINALS.get(profile);
+    if (existTerminal) existTerminal.dispose();
+    const terminal = vscode.window.createTerminal('Camel run: ' + profile);
+    TERMINALS.set(profile, terminal);
+    terminal.show();
+    terminal.sendText(command);
+}
+
 function executeJbangCommand(rootPath: string, command: string, callback: 
(code: number, stdout: any, stderr: any) => any) {
     console.log("excute command", command)
     const jbang = shell.which('jbang');
diff --git a/karavan-vscode/src/designerView.ts 
b/karavan-vscode/src/designerView.ts
index d2e08b3..57bbb4d 100644
--- a/karavan-vscode/src/designerView.ts
+++ b/karavan-vscode/src/designerView.ts
@@ -18,11 +18,13 @@ import * as vscode from "vscode";
 import * as fs from "fs";
 import * as path from "path";
 import * as utils from "./utils";
+import * as commands from "./commands";
 import { CamelDefinitionYaml } from "karavan-core/lib/api/CamelDefinitionYaml";
 import { Integration } from "karavan-core/lib/model/IntegrationDefinition";
 
 const KARAVAN_LOADED = "karavan:loaded";
 const KARAVAN_PANELS: Map<string, vscode.WebviewPanel> = new Map<string, 
vscode.WebviewPanel>();
+const extension = '.properties';
 
 export class DesignerView {
 
@@ -44,24 +46,48 @@ export class DesignerView {
     }
 
     jbangRun(fullPath: string) {
+        const filename = this.getFilename(fullPath);
+        if (filename && this.rootPath){
+            this.selectProfile(this.rootPath, filename);
+        }        
+    }
+
+    getFilename(fullPath: string) {
         if (fullPath.startsWith('webview-panel/webview')) {
             const filename = Array.from(KARAVAN_PANELS.entries()).filter(({ 1: 
v }) => v.active).map(([k]) => k)[0];
-            if (filename) {
-                utils.camelJbangRun(filename);
+            if (filename && this.rootPath) {
+                return filename;
             }
         } else {
             const yaml = 
fs.readFileSync(path.resolve(fullPath)).toString('utf8');
             const relativePath = utils.getRalativePath(fullPath);
             const filename = path.basename(fullPath);
             const integration = utils.parceYaml(filename, yaml);
-            if (integration[0]) {
-                utils.camelJbangRun(relativePath);
+            if (integration[0] && this.rootPath) {
+                return relativePath;
             } else {
                 vscode.window.showErrorMessage("File is not Camel 
Integration!")
             }
         }
     }
 
+    selectProfile(rootPath: string, filename?: string) {
+        if (this.rootPath) {
+            const profiles: string [] = fs.readdirSync(this.rootPath).filter(f 
=> f.endsWith(extension)).map(file => path.basename(file).replace(extension, 
""));
+            if (profiles && profiles.length > 0){
+                vscode.window.showQuickPick(profiles).then((profile) => {
+                    if (!profile) {
+                        return
+                    } else {
+                        commands.camelJbangRun(rootPath, profile, filename);
+                    }
+                })
+            } else {
+                commands.camelJbangRun(rootPath, "application", filename);
+            }
+        }
+    }
+
     createIntegration(crd: boolean, rootPath?: string) {
         vscode.window
             .showInputBox({
diff --git a/karavan-vscode/src/utils.ts b/karavan-vscode/src/utils.ts
index 273a1db..3cd2682 100644
--- a/karavan-vscode/src/utils.ts
+++ b/karavan-vscode/src/utils.ts
@@ -20,8 +20,6 @@ import * as path from "path";
 import * as shell from 'shelljs';
 import { CamelDefinitionYaml } from "karavan-core/lib/api/CamelDefinitionYaml";
 
-const TERMINALS: Map<string, vscode.Terminal> = new Map<string, 
vscode.Terminal>();
-
 export function save(relativePath: string, text: string){
     if (vscode.workspace.workspaceFolders) {
         const uriFolder: vscode.Uri = vscode.workspace.workspaceFolders[0].uri;
@@ -79,28 +77,6 @@ export function disableStartHelp(){
     config.update("Karavan.showStartHelp", false);
 }
 
-export function camelJbangRun(filename: string) {
-    const version = vscode.workspace.getConfiguration().get("camel.version");
-    const maxMessages: number = 
vscode.workspace.getConfiguration().get("camel.maxMessages") || -1;
-    const loggingLevel = 
vscode.workspace.getConfiguration().get("camel.loggingLevel");
-    const dev = vscode.workspace.getConfiguration().get("camel.dev");
-    const health = vscode.workspace.getConfiguration().get("camel.health");
-    const messageTracing = 
vscode.workspace.getConfiguration().get("camel.messageTracing");
-    const command = "jbang -Dcamel.jbang.version=" + version + " 
camel@apache/camel run "
-        + toCliFilename(filename)
-        + (maxMessages > -1 ? " --max-messages=" + maxMessages : "")
-        + " --logging-level=" + loggingLevel
-        + (messageTracing ? " --trace" : "")
-        + (dev ? " --dev" : "")
-        + (health ? " --health" : "");
-    const existTerminal = TERMINALS.get(filename);
-    if (existTerminal) existTerminal.dispose();
-    const terminal = vscode.window.createTerminal('Camel: ' + filename);
-    TERMINALS.set(filename, terminal);
-    terminal.show();
-    terminal.sendText(command);
-}
-
 export function toCliFilename(filename: string): string {
     return (/\s/).test(filename)
         ? '"' + filename + '"'
diff --git a/karavan-vscode/webview/App.tsx b/karavan-vscode/webview/App.tsx
index da79480..36e850b 100644
--- a/karavan-vscode/webview/App.tsx
+++ b/karavan-vscode/webview/App.tsx
@@ -150,7 +150,7 @@ class App extends React.Component<Props, State> {
     vscode.postMessage({ command: 'saveProfiles', profiles: profiles });
   }
 
-  actionProfile(action: "start" | "stop" | "undeploy", profile: Profile) {
+  actionProfile(action: "start" | "stop" | "undeploy" | "run", profile: 
Profile) {
     vscode.postMessage({ command: 'action', action: action, profile: profile 
});
   }
 
diff --git a/karavan-vscode/webview/builder/BuilderPage.tsx 
b/karavan-vscode/webview/builder/BuilderPage.tsx
index c7999ce..fe699ed 100644
--- a/karavan-vscode/webview/builder/BuilderPage.tsx
+++ b/karavan-vscode/webview/builder/BuilderPage.tsx
@@ -45,6 +45,7 @@ import DeployIcon from 
'@patternfly/react-icons/dist/esm/icons/cloud-upload-alt-
 import CleanupIcon from '@patternfly/react-icons/dist/esm/icons/remove2-icon';
 import ProjectIcon from '@patternfly/react-icons/dist/esm/icons/cubes-icon';
 import ClipboardIcon from 
'@patternfly/react-icons/dist/esm/icons/clipboard-icon';
+import RunIcon from '@patternfly/react-icons/dist/esm/icons/play-circle-icon';
 import {FileSelector} from "./FileSelector";
 import {Profile, ProjectModel, StepStatus} from 
"karavan-core/lib/model/ProjectModel";
 import {ProfileSelector} from "./ProfileSelector";
@@ -56,7 +57,7 @@ interface Props {
     profile?: Profile
     files: string
     onChange?: (profiles: Profile[]) => void
-    onAction?: (action: "start" | "stop" | "undeploy", profile: Profile) => 
void
+    onAction?: (action: "start" | "stop" | "undeploy" | "run", profile: 
Profile) => void
 }
 
 interface State {
@@ -302,7 +303,7 @@ export class BuilderPage extends React.Component<Props, 
State> {
                 <Flex className="tools" direction={{default: 'row'}} 
justifyContent={{default: 'justifyContentSpaceBetween'}} spaceItems={{default: 
'spaceItemsLg'}}>
                     <FlexItem>
                         <TextContent className="header">
-                            <Text component="h2">Project Builder</Text>
+                            <Text component="h2">Build Runner</Text>
                             <Badge isRead className="labels">Powered by Camel 
JBang</Badge>
                         </TextContent>
                     </FlexItem>
@@ -345,13 +346,13 @@ export class BuilderPage extends React.Component<Props, 
State> {
         )
     }
 
-    onButtonClick(action: "start" | "stop" | "undeploy") {
+    onButtonClick(action: "start" | "stop" | "undeploy" | "run") {
         this.props.onAction?.call(this, action, this.state.profile);
     }
 
     getFooter() {
         const active = this.state.profile.project.status.active;
-        const label = active ? "Stop" : "Start";
+        const label = active ? "Stop" : "Package";
         const icon = active ? <InProgressIcon/> : <AutomationIcon/>;
         return <div key={this.state.key} className="footer">
             <div className="progress">
@@ -366,6 +367,9 @@ export class BuilderPage extends React.Component<Props, 
State> {
                         <ToolbarItem>
                             <Button variant="primary" isSmall icon={icon} 
onClick={event => this.onButtonClick(active ? "stop" : 
"start")}>{label}</Button>
                         </ToolbarItem>
+                        <ToolbarItem>
+                            <Button variant="primary" isSmall 
icon={<RunIcon/>} onClick={event => this.onButtonClick( "run")}>Run</Button>
+                        </ToolbarItem>
                     </ToolbarContent>
                 </Toolbar>
             </div>
diff --git a/karavan-vscode/webview/index.css b/karavan-vscode/webview/index.css
index a0b993d..9dd0bb8 100644
--- a/karavan-vscode/webview/index.css
+++ b/karavan-vscode/webview/index.css
@@ -355,14 +355,13 @@ color: var(--vscode-editor-foreground);
 
 /* Builder */
 .vscode-dark .karavan .project-builder {
-  background: var(--vscode-tab-inactiveBackground);
+  background: var(--vscode-editor-background);
   border: none;
 }
 .vscode-dark .karavan .project-builder .header .pf-c-badge {
   --pf-c-badge--BackgroundColor: var(--pf-global--primary-color--200);
 }
 
-
 .vscode-dark .karavan .project-builder h2,
 .vscode-dark .karavan .project-builder .pf-c-card__title,
 .vscode-dark .karavan .project-builder .pf-c-form__label-text {

Reply via email to