Skip to content
Snippets Groups Projects
manage_virt_env.sh 1.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/bin/bash
    
    POSITIONAL_ARGS=()
    KEEPDB='false'
    
    while [[ $# -gt 0 ]]; do
      case $1 in
        -m|--mode)
          MODE="$2"
          shift # past argument
          shift # past value
          ;;
        -t|--topology)
          TOPOLOGY="$2"
          shift # past argument
          shift # past value
          ;;
        -s|--sdnconfig)
          SDNCONFIG="$2"
          shift # past argument
          shift # past value
          ;;
        --keepdb)
          KEEPDB="true"
          shift # past argument
          ;;
        -*|--*)
          echo "Unknown option $1"
          exit 1
          ;;
        *)
          POSITIONAL_ARGS+=("$1") # save positional arg
          shift # past argument
          ;;
      esac
    done
    
    start_gosdn () {
        # Start controller
        cd controller
        GOSDN_ADMIN_PASSWORD="admin" make start &
        pid=$!
        cd ..
    }
    
    if [ $MODE = 'start' ];
    then
        echo "Need sudo rights."
        sudo echo "sudo rights granted"
        # Start databases, etc.
        docker compose up -d
    
        # Start clab topology
        if [ $KEEPDB = 'true' ];
        then
            sudo containerlab deploy -t $TOPOLOGY
            start_gosdn
        else
            sleep 5
            start_gosdn
            ./artifacts/venv-manager --mode deploy --topology $TOPOLOGY  --sdnconfig $SDNCONFIG
        fi
    
        echo "#########################################################################################"
        echo "Initialisation finished. You will now see the output of goSDN. Press Ctrl+C to stop it."
        wait $pid
    fi
    
    if [ $MODE = 'stop' ];
    then
        docker compose down
        sudo containerlab destroy -t $TOPOLOGY -c
        rm -f dev_env_data/clab/.*.bak
    fi