github.com/myafeier/fabric@v1.0.1-0.20170722181825-3a4b1f2bce86/examples/e2e_cli/network_setup.sh (about)

     1  #!/bin/bash
     2  #
     3  # Copyright IBM Corp. All Rights Reserved.
     4  #
     5  # SPDX-License-Identifier: Apache-2.0
     6  #
     7  
     8  
     9  UP_DOWN="$1"
    10  CH_NAME="$2"
    11  CLI_TIMEOUT="$3"
    12  IF_COUCHDB="$4"
    13  
    14  : ${CLI_TIMEOUT:="10000"}
    15  
    16  COMPOSE_FILE=docker-compose-cli.yaml
    17  COMPOSE_FILE_COUCH=docker-compose-couch.yaml
    18  #COMPOSE_FILE=docker-compose-e2e.yaml
    19  
    20  function printHelp () {
    21  	echo "Usage: ./network_setup <up|down> <\$channel-name> <\$cli_timeout> <couchdb>.\nThe arguments must be in order."
    22  }
    23  
    24  function validateArgs () {
    25  	if [ -z "${UP_DOWN}" ]; then
    26  		echo "Option up / down / restart not mentioned"
    27  		printHelp
    28  		exit 1
    29  	fi
    30  	if [ -z "${CH_NAME}" ]; then
    31  		echo "setting to default channel 'mychannel'"
    32  		CH_NAME=mychannel
    33  	fi
    34  }
    35  
    36  function clearContainers () {
    37          CONTAINER_IDS=$(docker ps -aq)
    38          if [ -z "$CONTAINER_IDS" -o "$CONTAINER_IDS" = " " ]; then
    39                  echo "---- No containers available for deletion ----"
    40          else
    41                  docker rm -f $CONTAINER_IDS
    42          fi
    43  }
    44  
    45  function removeUnwantedImages() {
    46          DOCKER_IMAGE_IDS=$(docker images | grep "dev\|none\|test-vp\|peer[0-9]-" | awk '{print $3}')
    47          if [ -z "$DOCKER_IMAGE_IDS" -o "$DOCKER_IMAGE_IDS" = " " ]; then
    48                  echo "---- No images available for deletion ----"
    49          else
    50                  docker rmi -f $DOCKER_IMAGE_IDS
    51          fi
    52  }
    53  
    54  function networkUp () {
    55      if [ -f "./crypto-config" ]; then
    56        echo "crypto-config directory already exists."
    57      else
    58        #Generate all the artifacts that includes org certs, orderer genesis block,
    59        # channel configuration transaction
    60        source generateArtifacts.sh $CH_NAME
    61      fi
    62  
    63      if [ "${IF_COUCHDB}" == "couchdb" ]; then
    64        CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE -f $COMPOSE_FILE_COUCH up -d 2>&1
    65      else
    66        CHANNEL_NAME=$CH_NAME TIMEOUT=$CLI_TIMEOUT docker-compose -f $COMPOSE_FILE up -d 2>&1
    67      fi
    68      if [ $? -ne 0 ]; then
    69  	echo "ERROR !!!! Unable to pull the images "
    70  	exit 1
    71      fi
    72      docker logs -f cli
    73  }
    74  
    75  function networkDown () {
    76      docker-compose -f $COMPOSE_FILE down
    77  
    78      #Cleanup the chaincode containers
    79      clearContainers
    80  
    81      #Cleanup images
    82      removeUnwantedImages
    83  
    84      # remove orderer block and other channel configuration transactions and certs
    85      rm -rf channel-artifacts/*.block channel-artifacts/*.tx crypto-config
    86  }
    87  
    88  validateArgs
    89  
    90  #Create the network using docker compose
    91  if [ "${UP_DOWN}" == "up" ]; then
    92  	networkUp
    93  elif [ "${UP_DOWN}" == "down" ]; then ## Clear the network
    94  	networkDown
    95  elif [ "${UP_DOWN}" == "restart" ]; then ## Restart the network
    96  	networkDown
    97  	networkUp
    98  else
    99  	printHelp
   100  	exit 1
   101  fi