Release J: Simple Guide: ICS: Demo Application - Java Producer and Consumer
Sample application: ics-producer-consumer
Script for the demo: start.sh
bash start.sh
Running the script will check the requirements and start 4 containers:
Kafka(localhost:9092)
ICS(localhost:8083)
Producer(localhost:8080)
Consumer(localhost:8081)
The Producer implements these callbacks in order to work with ICS:
GET SUPERVISION_URL Return 200
DELETE JOB_URL + "/{infoJobId}" Return 200
GET JOB_URL Return 200 and a collection of JOB
POST JOB_URL Return 200 and send in body a JOB (It receives data from ICS)
The Consumer implements these callbacks in order to work with ICS:
POST /info-type-status Return 200 when a Information type status has been changed (It receives data from ICS) Status: REGISTERED/UNREGISTERED
This also assumes that the Demo Application has a definition of a TYPE and a JOB on that type.
Run the demo:
The demo.sh script will:
Check the system for dependencies such as Maven, Java, Docker and docker-compose
Package the demo application for a producer and a consumer and build the docker images
Start the docker container in the same docker network with docker-compose
After Strimzi kafka is up and running the user can run manually ./runproducer.sh and ./runconsumer.sh in different shells or use demo.sh to start the producer and consumer
The script will send type1 to ICS, which is already predefined in the demo application
The script will send the producer info to ICS
The script will send the consumer job info to ICS
ICS will trigger the demo application based on its callbacks
Data is produced on the demo application
The script sends docker logs of the Producer Callback function of ICS
The script sends docker logs of the Demo applications
Demo Producer Docker logs
2024-04-02 12:48:05 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"ygHwxXSIxW","key":"f8f1a7a7-a78e-4c7d-9b8d-108bb0cc9e2c"}
2024-04-02 12:48:06 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"KNIbP10zfN","key":"b058d00f-bbcd-4d2c-936b-6327847d4c2a"}
2024-04-02 12:48:07 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"V6fH1NkdeH","key":"ae1a83a3-d8a7-40c8-9d98-529230f8b585"}
2024-04-02 12:48:08 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"m76qvRFh6f","key":"abccde52-fa72-4fd4-99ab-5bc21514d825"}
2024-04-02 12:48:09 INFO c.d.p.p.SimpleProducer:141 - {"bootstrapServers":"kafka-zkless:9092","topic":"mytopic","source":"com.demo.producer.producer.SimpleProducer","message":"t7FJYnFr43","key":"0602239e-34e9-45a6-a04a-3c67b4c7d9e4"}
++++++++++++++++++++++++++++++++++++++++++++++++++++
Demo Consumer Docker logs
2024-04-02 12:48:05 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: ygHwxXSIxW"}
2024-04-02 12:48:06 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: KNIbP10zfN"}
2024-04-02 12:48:07 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: V6fH1NkdeH"}
2024-04-02 12:48:08 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: m76qvRFh6f"}
2024-04-02 12:48:09 INFO c.d.c.c.SimpleConsumer:158 - {"message":"Topic: mytopicMessage: t7FJYnFr43"}
++++++++++++++++++++++++++++++++++++++++++++++++++++
ICS logs
2024-04-02T12:48:05.615Z DEBUG 1 --- [or-http-epoll-2] o.o.i.c.r1producer.ProducerCallbacks : Job subscription 1 started OK 1
2024-04-02T12:48:05.820Z DEBUG 1 --- [io-8083-exec-10] o.o.i.repository.InfoTypeSubscriptions : Added type status subscription 1 |
GUI Consoles and Panels
Automatic
Running the script : red.sh will
Bring the sandbox setup (Kafka and ICS)
Build the local images for the producer and consumer
Redpanda console (visual monitor kafka data flow) and the NONRTRIC control panel (visual data type job subscriptions).
bash red.sh
There are the options to skip the build or the GUIs
bash red.sh --skip-build --no-console
Manual
Redpanda Console:
After kafka is up and running
docker-compose -f docker-composeRedPanda.yaml up -d
Redpanda console available at: http://localhost:8888
Manual NONRTRIC-controlpanel:
git clone "https://gerrit.o-ran-sc.org/r/portal/nonrtric-controlpanel"
Changed the configuration files as shown here:
/nonrtric-controlpanel$ git diff ./docker-compose/
diff --git a/docker-compose/.env b/docker-compose/.env
index 69fdd12..257ac73 100644
--- a/docker-compose/.env
+++ b/docker-compose/.env
@@ -16,9 +16,9 @@
#
#CONTROL_PANEL
-CONTROL_PANEL_IMAGE_BASE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-controlpanel"
+CONTROL_PANEL_IMAGE_BASE="nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-controlpanel"
CONTROL_PANEL_IMAGE_TAG="2.5.0"
#NONRTRIC_GATEWAY
-NONRTRIC_GATEWAY_IMAGE_BASE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-gateway"
+NONRTRIC_GATEWAY_IMAGE_BASE="nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-gateway"
NONRTRIC_GATEWAY_IMAGE_TAG="1.2.0"
\ No newline at end of file
diff --git a/docker-compose/control-panel/docker-compose.yaml b/docker-compose/control-panel/docker-compose.yaml
index 2716ed8..a42b7a8 100644
--- a/docker-compose/control-panel/docker-compose.yaml
+++ b/docker-compose/control-panel/docker-compose.yaml
@@ -16,18 +16,17 @@
version: '3.5'
networks:
- default:
- driver: bridge
- name: nonrtric-docker-net
+ kafka:
:...skipping...
diff --git a/docker-compose/.env b/docker-compose/.env
index 69fdd12..257ac73 100644
--- a/docker-compose/.env
+++ b/docker-compose/.env
@@ -16,9 +16,9 @@
#
#CONTROL_PANEL
-CONTROL_PANEL_IMAGE_BASE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-controlpanel"
+CONTROL_PANEL_IMAGE_BASE="nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-controlpanel"
CONTROL_PANEL_IMAGE_TAG="2.5.0"
#NONRTRIC_GATEWAY
-NONRTRIC_GATEWAY_IMAGE_BASE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-gateway"
+NONRTRIC_GATEWAY_IMAGE_BASE="nexus3.o-ran-sc.org:10002/o-ran-sc/nonrtric-gateway"
NONRTRIC_GATEWAY_IMAGE_TAG="1.2.0"
\ No newline at end of file
diff --git a/docker-compose/control-panel/docker-compose.yaml b/docker-compose/control-panel/docker-compose.yaml
index 2716ed8..a42b7a8 100644
--- a/docker-compose/control-panel/docker-compose.yaml
+++ b/docker-compose/control-panel/docker-compose.yaml
@@ -16,18 +16,17 @@
version: '3.5'
networks:
- default:
- driver: bridge
- name: nonrtric-docker-net
+ kafka:
+ external: true
services:
policy-control-panel:
image: "${CONTROL_PANEL_IMAGE_BASE}:${CONTROL_PANEL_IMAGE_TAG}"
container_name: policy-control-panel
networks:
- - default
+ - kafka
ports:
- - 8080:8080
- - 8082:8082
+ - 8181:8080
+ - 8282:8082
volumes:
- ./control-panel/config/nginx.conf:/etc/nginx/nginx.conf:ro
diff --git a/docker-compose/docker-compose.yaml b/docker-compose/docker-compose.yaml
index 64bcbb9..c30aa2c 100644
--- a/docker-compose/docker-compose.yaml
+++ b/docker-compose/docker-compose.yaml
@@ -16,6 +16,5 @@
version: '3.5'
networks:
- default:
- driver: bridge
- name: nonrtric-docker-net
\ No newline at end of file
+ kafka:
+ external: true
diff --git a/docker-compose/nonrtric-gateway/config/application-nonrtricgateway.yaml b/docker-compose/nonrtric-gateway/config/application-nonrtricgateway.yaml
index 7230175..c620b03 100644
--- a/docker-compose/nonrtric-gateway/config/application-nonrtricgateway.yaml
+++ b/docker-compose/nonrtric-gateway/config/application-nonrtricgateway.yaml
@@ -26,12 +26,8 @@ spring:
httpserver:
wiretap: true
routes:
- - id: A1-Policy
- uri: https://policy-agent:8433
- predicates:
- - Path=/a1-policy/**
- id: A1-EI
- uri: https://ics:8434
+ uri: http://informationcoordinatorservice:8083
predicates:
- Path=/data-producer/**,/data-consumer/**
management:
diff --git a/docker-compose/nonrtric-gateway/docker-compose.yaml b/docker-compose/nonrtric-gateway/docker-compose.yaml
index fbf3d9b..138229d 100644
--- a/docker-compose/nonrtric-gateway/docker-compose.yaml
+++ b/docker-compose/nonrtric-gateway/docker-compose.yaml
@@ -16,16 +16,15 @@
version: '3.5'
networks:
- default:
- driver: bridge
- name: nonrtric-docker-net
+ kafka:
+ external: true
services:
nonrtric-gateway:
image: "${NONRTRIC_GATEWAY_IMAGE_BASE}:${NONRTRIC_GATEWAY_IMAGE_TAG}"
container_name: nonrtric-gateway
networks:
- default:
+ kafka:
aliases:
- nonrtric-gateway-container
ports:
(END) |
docker-compose -f ./nonrtric-controlpanel/docker-compose/docker-compose.yaml \
-f ./nonrtric-controlpanel/docker-compose/control-panel/docker-compose.yaml \
-f ./nonrtric-controlpanel/docker-compose/nonrtric-gateway/docker-compose.yaml up -d
ICS informations displayed here: http://localhost:8181