Building and running CPS Temporal locally
Building Java Archive only
Following command builds Java executable jar to target/cps-temporal-x.y.z-SNAPSHOT
JAR file
without generating any docker images:
mvn clean install
Building Java Archive and local Docker image
Following command builds the JAR file and also generates the Docker image:
mvn clean install -Pdocker -Ddocker.repository.push=
Running via Docker Compose
docker-compose.yml
file is provided to be run with docker-compose
tool and local image previously built.
It starts following services:
- CPS Temporal service (cps-temporal)
- Postgres Timescale database (timescaledb)
- Kafka broker (zookeeper and kafka)
Execute following command from project root folder to start all services:
docker-compose up
Then, use kafkacat
tool to produce a data updated event into the Kafka topic:
docker run -i --rm --network=host edenhill/kafkacat:1.6.0 -b localhost:19092 -t cps.data-updated-events -D/ -P <<EOF
{
"schema": "urn:cps:org.onap.cps:data-updated-event-schema:v1",
"id": "38aa6cc6-264d-4ede-b534-18f5c1f403ea",
"source": "urn:cps:org.onap.cps",
"type": "org.onap.cps.data-updated-event",
"content": {
"observedTimestamp": "2021-06-09T13:00:00.123-0400",
"dataspaceName": "my-dataspace",
"schemaSetName": "my-schema-set",
"anchorName": "my-anchor",
"data": {
"interface": {
"name": "itf-1",
"status": "up"
}
}
}
}
EOF
Finally, verify that CPS Temporal data is persisted as expected:
psql -h localhost -p 5433 -d cpstemporaldb -U cpstemporal -c \
"select * from network_data order by created_timestamp desc limit 1"
Alternative local db setup
A Postgres instance with Timescale extension can be started by running the following command:
docker run --name postgres-cps-temporal -p 5433:5432 -d \
-e POSTGRES_DB=cpstemporaldb \
-e POSTGRES_USER=cpstemporal \
-e POSTGRES_PASSWORD=cpstemporal \
timescale/timescaledb:2.5.1-pg14
Liquibase is used to manage database schema changes and versions. Then, the database schema is updated when the application is started or by running the following command:
mvn org.liquibase:liquibase-maven-plugin:4.3.2:update \
-Dliquibase.url=jdbc:postgresql://localhost:5433/cpstemporaldb \
-Dliquibase.username=cpstemporal \
-Dliquibase.password=cpstemporal \
-Dliquibase.changeLogFile=db/changelog/changelog-master.xml
Accessing services
Swagger UI is available to discover service endpoints and send requests.
http://localhost:<port-number>/swagger-ui.html