Skip to content

Commit

Permalink
Allow start.sh to run blank or demo environments. Limit curl output. …
Browse files Browse the repository at this point in the history
…Set demo environment for pipelines
  • Loading branch information
SergeRadinovich committed May 19, 2019
1 parent 875f96d commit 58c8b46
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 26 deletions.
5 changes: 3 additions & 2 deletions azure-pipelines.yml
Expand Up @@ -25,7 +25,7 @@ steps:
displayName: 'Configure Test Runner image'

- script: |
./start.sh
./start.sh demo
displayName: 'Start Connector, Controller, and Agent'

- script: |
Expand All @@ -37,6 +37,7 @@ steps:
displayName: 'Stop Connector, Controller, and Agent'

- script: |
docker exec iofog-agent cat /var/log/agent.out.log
docker exec iofog-agent-1 cat /var/log/agent.out.log
docker exec iofog-agent-2 cat /var/log/agent.out.log
displayName: 'Test debug output'
condition: failed()
13 changes: 8 additions & 5 deletions init/blank/start.sh
Expand Up @@ -20,14 +20,15 @@ docker exec iofog-agent-1 iofog-agent config -idc off
docker exec iofog-agent-1 iofog-agent config -a $CONTROLLER_HOST

echo 'Waiting for Controller'
wait "curl --request GET --url $CONTROLLER_HOST/status" "Failed"
wait "curl --request GET --url $CONTROLLER_HOST/status 2> /dev/null" "Failed"

token=""
while true; do
login=$(curl --request POST \
--url $CONTROLLER_HOST/user/login \
--header 'Content-Type: application/json' \
--data '{"email":"user@domain.com","password":"#Bugs4Fun"}')
--data '{"email":"user@domain.com","password":"#Bugs4Fun"}' \
2> /dev/null)
token=$(echo $login | jq -r .accessToken)

if [ ! -z "$token" ]; then
Expand All @@ -41,8 +42,9 @@ while true; do
item=$(curl --request GET \
--url $CONTROLLER_HOST/iofog-list \
--header "Authorization: $token" \
--header 'Content-Type: application/json')
echo $item
--header 'Content-Type: application/json' \
2> /dev/null)
#echo $item
uuid=$(echo $item | jq -r '.fogs[] | select(.name == "ioFog Node") | .uuid')

if [ ! -z "$uuid" ]; then
Expand All @@ -54,7 +56,8 @@ done
provisioning=$(curl --request GET \
--url $CONTROLLER_HOST/iofog/$uuid/provisioning-key \
--header "Authorization: $token" \
--header 'Content-Type: application/json')
--header 'Content-Type: application/json' \
2> /dev/null)
key=$(echo $provisioning | jq -r .key)

docker exec iofog-agent-1 iofog-agent provision $key
36 changes: 24 additions & 12 deletions init/demo/catalog.sh
Expand Up @@ -16,7 +16,8 @@ while true; do
item=$(curl --request POST \
--url http://iofog-connector:8080/api/v2/status \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data mappingid=all)
--data mappingid=all \
2> /dev/null)
echo "$item"
status=$(echo "$item" | jq -r .status)

Expand All @@ -30,82 +31,93 @@ echo 'Logging in'
login=$(curl --request POST \
--url $CONTROLLER_HOST/user/login \
--header 'Content-Type: application/json' \
--data '{"email":"user@domain.com","password":"#Bugs4Fun"}')
--data '{"email":"user@domain.com","password":"#Bugs4Fun"}' \
2> /dev/null)
token=$(echo $login | jq -r .accessToken)

echo 'Creating Sensor microservice'
item=$(curl --request POST \
--url $CONTROLLER_HOST/catalog/microservices \
--header "Authorization: $token" \
--header 'Content-Type: application/json' \
--data '{"name":"Sensors","category": "DEMO","publisher":"Edgeworx","registryId":1,"images":[{"containerImage":"iofog/sensors:latest","fogTypeId":1}]}')
--data '{"name":"Sensors","category": "DEMO","publisher":"Edgeworx","registryId":1,"images":[{"containerImage":"iofog/sensors:latest","fogTypeId":1}]}' \
2> /dev/null)
sensorsId=$(echo $item | jq -r .id)

echo 'Creating REST API microservice'
item=$(curl --request POST \
--url $CONTROLLER_HOST/catalog/microservices \
--header "Authorization: $token" \
--header 'Content-Type: application/json' \
--data '{"name":"Rest API","category": "DEMO","publisher":"Edgeworx","registryId":1,"images":[{"containerImage":"iofog/freeboard-api:latest","fogTypeId":1}]}')
--data '{"name":"Rest API","category": "DEMO","publisher":"Edgeworx","registryId":1,"images":[{"containerImage":"iofog/freeboard-api:latest","fogTypeId":1}]}' \
2> /dev/null)
apiId=$(echo $item | jq -r .id)

echo 'Creating Freeboard microservice'
item=$(curl --request POST \
--url $CONTROLLER_HOST/catalog/microservices \
--header "Authorization: $token" \
--header 'Content-Type: application/json' \
--data '{"name":"freeboard","category": "DEMO","publisher":"Edgeworx","registryId":1,"images":[{"containerImage":"iofog/freeboard:latest","fogTypeId":1}]}')
--data '{"name":"freeboard","category": "DEMO","publisher":"Edgeworx","registryId":1,"images":[{"containerImage":"iofog/freeboard:latest","fogTypeId":1}]}' \
2> /dev/null)
freeboardId=$(echo $item | jq -r .id)

echo 'Creating Agent'
item=$(curl --request POST \
--url $CONTROLLER_HOST/iofog \
--header "Authorization: $token" \
--header 'Content-Type: application/json' \
--data '{"name": "Agent 1","fogType": 1}')
--data '{"name": "Agent 1","fogType": 1}' \
2> /dev/null)
uuid1=$(echo $item | jq -r .uuid)

item=$(curl --request POST \
--url $CONTROLLER_HOST/iofog \
--header "Authorization: $token" \
--header 'Content-Type: application/json' \
--data '{"name": "Agent 2","fogType": 1}')
--data '{"name": "Agent 2","fogType": 1}' \
2> /dev/null)
uuid2=$(echo $item | jq -r .uuid)

echo 'Creating Flow'
item=$(curl --request POST \
--url $CONTROLLER_HOST/flow \
--header "Authorization: $token" \
--header 'Content-Type: application/json' \
--data '{"name": "Flow","isActivated":true}')
--data '{"name": "Flow","isActivated":true}' \
2> /dev/null)
flowId=$(echo $item | jq -r .id)

echo 'Configuring microservices'
item=$(curl --request POST \
--url $CONTROLLER_HOST/microservices \
--header "Authorization: $token" \
--header 'Content-Type: application/json' \
--data '{"name":"API","config":"{}","catalogItemId":'"$apiId"',"flowId":'"$flowId"',"iofogUuid":"'"$uuid2"'","rootHostAccess":false,"logSize":5,"volumeMappings":[],"ports":[{"internal":80,"external":10101,"publicMode":false}],"routes":[]}')
--data '{"name":"API","config":"{}","catalogItemId":'"$apiId"',"flowId":'"$flowId"',"iofogUuid":"'"$uuid2"'","rootHostAccess":false,"logSize":5,"volumeMappings":[],"ports":[{"internal":80,"external":10101,"publicMode":false}],"routes":[]}' \
2> /dev/null)
apiUUID=$(echo $item | jq -r .uuid)

echo 'Configuring Sensor microservice'
item=$(curl --request POST \
--url $CONTROLLER_HOST/microservices \
--header "Authorization: $token" \
--header 'Content-Type: application/json' \
--data '{"name":"Sensors","config":"{}","catalogItemId":'"$sensorsId"',"flowId":'"$flowId"',"iofogUuid":"'"$uuid1"'","rootHostAccess":false,"logSize":5,"volumeMappings":[],"ports":[],"routes":[]}') \
--data '{"name":"Sensors","config":"{}","catalogItemId":'"$sensorsId"',"flowId":'"$flowId"',"iofogUuid":"'"$uuid1"'","rootHostAccess":false,"logSize":5,"volumeMappings":[],"ports":[],"routes":[]}' \
2> /dev/null)
sensorsUUID=$(echo $item | jq -r .uuid)

echo 'Routing microservices'
item=$(curl -X POST \
--url "$CONTROLLER_HOST/microservices/$sensorsUUID/routes/$apiUUID" \
--header "Authorization: $token" \
--header 'Content-Type: application/json')
--header 'Content-Type: application/json' \
2> /dev/null)

echo 'Configuring Freeboard microservice'
item=$(curl --request POST \
--url $CONTROLLER_HOST/microservices \
--header "Authorization: $token" \
--header 'Content-Type: application/json' \
--data '{"name":"freeboard","config":"{}","catalogItemId":'"$freeboardId"',"flowId":'"$flowId"',"iofogUuid":"'"$uuid2"'","rootHostAccess":false,"logSize":5,"volumeMappings":[],"ports":[{"internal":80,"external":10102,"publicMode":false}],"routes":[]}')
--data '{"name":"freeboard","config":"{}","catalogItemId":'"$freeboardId"',"flowId":'"$flowId"',"iofogUuid":"'"$uuid2"'","rootHostAccess":false,"logSize":5,"volumeMappings":[],"ports":[{"internal":80,"external":10102,"publicMode":false}],"routes":[]}' \
2> /dev/null)
freeboardUUID=$(echo $item | jq -r .uuid)
13 changes: 8 additions & 5 deletions init/demo/provision.sh
Expand Up @@ -22,7 +22,8 @@ function login() {
login=$(curl --request POST \
--url $CONTROLLER_HOST/user/login \
--header 'Content-Type: application/json' \
--data '{"email":"user@domain.com","password":"#Bugs4Fun"}')
--data '{"email":"user@domain.com","password":"#Bugs4Fun"}' \
2> /dev/null)
echo "$login"
token=$(echo $login | jq -r .accessToken)
}
Expand All @@ -34,8 +35,9 @@ function provision() {
item=$(curl --request GET \
--url $CONTROLLER_HOST/iofog-list \
--header "Authorization: $token" \
--header 'Content-Type: application/json')
echo "$item"
--header 'Content-Type: application/json' \
2> /dev/null)
#echo "$item"
uuid=$(echo $item | jq -r '.fogs[] | select(.name == "Agent '"$AGENT"'") | .uuid')

if [ ! -z "$uuid" ]; then
Expand All @@ -49,15 +51,16 @@ function provision() {
provisioning=$(curl --request GET \
--url $CONTROLLER_HOST/iofog/$uuid/provisioning-key \
--header "Authorization: $token" \
--header 'Content-Type: application/json')
--header 'Content-Type: application/json' \
2> /dev/null)
echo "$provisioning"
key=$(echo $provisioning | jq -r .key)

docker exec iofog-agent-"$AGENT" sh -c "iofog-agent provision $key"
}

echo 'Waiting for Controller'
wait "curl --request GET --url $CONTROLLER_HOST/status" "Failed"
wait "curl --request GET --url $CONTROLLER_HOST/status 2> /dev/null" "Failed"

login

Expand Down
17 changes: 15 additions & 2 deletions start.sh
@@ -1,8 +1,18 @@
#!/usr/bin/env sh
#!/bin/bash

set -e

ENV="$1"
ENV='blank'
if [ ! -z "$1" ]; then
if [[ "$1" == *help* ]]; then
echo 'Usage: ./start.sh [Environment]'
echo 'Arguments: Environment - Compose environment to start. Optional. Defalut is "demo"'
exit 0
fi
ENV="$1"
fi

echo "Starting up $ENV environment"

# Generate SSH keys for Tests to access Agent container
rm conf/id_ecdsa* || true
Expand All @@ -11,5 +21,8 @@ cp conf/id_ecdsa.pub iofog-agent

# Bring up ioFog services
docker-compose -f docker-compose.yml up --build --detach

# Initialize ioFog services
sed "s|/init/.*|/init/$ENV|g" ./docker-compose-init.yml > /tmp/docker-compose-init.yml
cp /tmp/docker-compose-init.yml .
docker-compose -f docker-compose-init.yml up --build

0 comments on commit 58c8b46

Please sign in to comment.