mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 23:45:10 +00:00
* Experimental Support for using podman with the test-network Signed-off-by: Matthew B White <whitemat@uk.ibm.com> * supplement podman with nerdctl Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com> * adds experimental support for nerdctl compose Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com> * install fabric images to containerd with 'nerdctl' pull Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com> * Podman Support Use a core set of compose files, with overlays for specific details. In the case of podman, the overlays refer to a specific core.yaml for the peer that distables the use of teh docker daemon In the case of docker, the overlays add enable the docker daemon accesss for the peer to create chaincode containers Signed-off-by: Matthew B White <whitemat@uk.ibm.com> Co-authored-by: Josh Kneubuhl <jkneubuh@us.ibm.com>
106 lines
2.7 KiB
Bash
Executable file
106 lines
2.7 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# imports
|
|
. scripts/envVar.sh
|
|
. scripts/utils.sh
|
|
|
|
CHANNEL_NAME="$1"
|
|
DELAY="$2"
|
|
MAX_RETRY="$3"
|
|
VERBOSE="$4"
|
|
: ${CHANNEL_NAME:="mychannel"}
|
|
: ${DELAY:="3"}
|
|
: ${MAX_RETRY:="5"}
|
|
: ${VERBOSE:="false"}
|
|
|
|
: ${CONTAINER_CLI:="docker"}
|
|
: ${CONTAINER_CLI_COMPOSE:="${CONTAINER_CLI}-compose"}
|
|
infoln "Using ${CONTAINER_CLI} and ${CONTAINER_CLI_COMPOSE}"
|
|
|
|
if [ ! -d "channel-artifacts" ]; then
|
|
mkdir channel-artifacts
|
|
fi
|
|
|
|
createChannelGenesisBlock() {
|
|
which configtxgen
|
|
if [ "$?" -ne 0 ]; then
|
|
fatalln "configtxgen tool not found."
|
|
fi
|
|
set -x
|
|
configtxgen -profile TwoOrgsApplicationGenesis -outputBlock ./channel-artifacts/${CHANNEL_NAME}.block -channelID $CHANNEL_NAME
|
|
res=$?
|
|
{ set +x; } 2>/dev/null
|
|
verifyResult $res "Failed to generate channel configuration transaction..."
|
|
}
|
|
|
|
createChannel() {
|
|
setGlobals 1
|
|
# Poll in case the raft leader is not set yet
|
|
local rc=1
|
|
local COUNTER=1
|
|
while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do
|
|
sleep $DELAY
|
|
set -x
|
|
osnadmin channel join --channelID $CHANNEL_NAME --config-block ./channel-artifacts/${CHANNEL_NAME}.block -o localhost:7053 --ca-file "$ORDERER_CA" --client-cert "$ORDERER_ADMIN_TLS_SIGN_CERT" --client-key "$ORDERER_ADMIN_TLS_PRIVATE_KEY" >&log.txt
|
|
res=$?
|
|
{ set +x; } 2>/dev/null
|
|
let rc=$res
|
|
COUNTER=$(expr $COUNTER + 1)
|
|
done
|
|
cat log.txt
|
|
verifyResult $res "Channel creation failed"
|
|
}
|
|
|
|
# joinChannel ORG
|
|
joinChannel() {
|
|
FABRIC_CFG_PATH=$PWD/../config/
|
|
ORG=$1
|
|
setGlobals $ORG
|
|
local rc=1
|
|
local COUNTER=1
|
|
## Sometimes Join takes time, hence retry
|
|
while [ $rc -ne 0 -a $COUNTER -lt $MAX_RETRY ] ; do
|
|
sleep $DELAY
|
|
set -x
|
|
peer channel join -b $BLOCKFILE >&log.txt
|
|
res=$?
|
|
{ set +x; } 2>/dev/null
|
|
let rc=$res
|
|
COUNTER=$(expr $COUNTER + 1)
|
|
done
|
|
cat log.txt
|
|
verifyResult $res "After $MAX_RETRY attempts, peer0.org${ORG} has failed to join channel '$CHANNEL_NAME' "
|
|
}
|
|
|
|
setAnchorPeer() {
|
|
ORG=$1
|
|
${CONTAINER_CLI} exec cli ./scripts/setAnchorPeer.sh $ORG $CHANNEL_NAME
|
|
}
|
|
|
|
FABRIC_CFG_PATH=${PWD}/configtx
|
|
|
|
## Create channel genesis block
|
|
infoln "Generating channel genesis block '${CHANNEL_NAME}.block'"
|
|
createChannelGenesisBlock
|
|
|
|
FABRIC_CFG_PATH=$PWD/../config/
|
|
BLOCKFILE="./channel-artifacts/${CHANNEL_NAME}.block"
|
|
|
|
## Create channel
|
|
infoln "Creating channel ${CHANNEL_NAME}"
|
|
createChannel
|
|
successln "Channel '$CHANNEL_NAME' created"
|
|
|
|
## Join all the peers to the channel
|
|
infoln "Joining org1 peer to the channel..."
|
|
joinChannel 1
|
|
infoln "Joining org2 peer to the channel..."
|
|
joinChannel 2
|
|
|
|
## Set the anchor peers for each org in the channel
|
|
infoln "Setting anchor peer for org1..."
|
|
setAnchorPeer 1
|
|
infoln "Setting anchor peer for org2..."
|
|
setAnchorPeer 2
|
|
|
|
successln "Channel '$CHANNEL_NAME' joined"
|