...
- build - creates from the Dockerfile created which is based on postgres and added curl
- environment - mandatory config values for postgres image; added same config values as the main Postgres DB used by cps
- volumes : folders located inside cps project's docker-compose folder
- -initfile: contains the bash script and Dockerfile; mounted on ENTRYPOINT
-POC: 'initprojecct.sh'
Section | ||||
---|---|---|---|---|
Column | ||||
| ||||
Code Block | ||||
| ||||
#!/bin/bash
true=t
echo "Getting ready to upload model for subscription events"
while :
do
sleep 30
echo "Checking that NCMP dataspace and anchor exist ..."
ncmpDataspaceExists=$(psql -h db -d cpsdb -U cps -t -c "SELECT EXISTS (SELECT FROM public.dataspace WHERE name = 'NCMP-Admin');")
ncmpAnchorExists=$(psql -h db -d cpsdb -U cps -t -c "SELECT EXISTS (SELECT FROM public.anchor WHERE name = 'ncmp-dmi-registry');")
echo "NCMP dataspace exist: $ncmpDataspaceExists"
echo "NCMP anchor exist: $ncmpAnchorExists"
echo "$ncmpDataspaceExists == $true and $ncmpAnchorExists == $true"
if [ $ncmpDataspaceExists == $true ] && [ $ncmpAnchorExists == $true ]
then
echo "Uploading model ..."
cpsAndNcmpAsHostAddress=$(ping -c1 cps-and-ncmp | sed -nE 's/^PING[^(]+\(([^)]+)\).*/\1/p')
curl -X 'POST' -i 'http://'"$cpsAndNcmpAsHostAddress"':8080/cps/api/v2/dataspaces?dataspace-name=my-dataspace' -H 'accept: */*' --header 'Authorization: Basic Y3BzdXNlcjpjcHNyMGNrcyE='
curl -X 'POST' 'http://'"$cpsAndNcmpAsHostAddress"':8080/cps/api/v2/dataspaces/my-dataspace/schema-sets?schema-set-name=my-schema-set' -H 'accept: */*' --form "file=@"/model/subscription.yang"" --header 'Authorization: Basic Y3BzdXNlcjpjcHNyMGNrcyE='
curl -X 'POST' 'http://'"$cpsAndNcmpAsHostAddress"':8080/cps/api/v2/dataspaces/my-dataspace/anchors?schema-set-name=my-schema-set&anchor-name=my-anchor' -H 'accept: */*' --header 'Authorization: Basic Y3BzdXNlcjpjcHNyMGNrcyE='
echo "Model upload finish ..."
break
fi
sleep 10 &
echo $!
echo $?
done Column | |
- line 3: psql returns 't' for true
- line 6: while loop used to re try uploading the model whenever the dataspace and anchor is ready
- line 8: sleep for number of seconds to allow the liquibase set up of the database via cps-and-ncmp container
- line 10-11: postgres commands to confirm that the needed dataspace and anchor exists (for this POC case subscription model requires the 'NCMP-Admin' dataspace and 'ncmp-dmi-registry' anchor)
- line 17: if condition specifies to only upload the model if dataspace and anchor exists
- line 21: command to get the IP address of 'cps-and-ncmp' docker container via ping's output manipulation and store in a variable; this variable is used in call of curl
- line 23-25: curl 'POST' commands to create dataspace, anchor and upload schemaset
- - model: contains the subscription model
- depends_on:
- -db: healthcheck is added on the db container/service which leaves seconds after the database has started
- -cps-and-ncmp: service should be started before init-db container is brought up
...