Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions samples/deployment/k8s/core.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -562,9 +562,12 @@ chaincode:
# - GOPROXY
externalBuilders:
# FPC Addition 0: external builder for fpc-c chaincode
- path: /builders/external
name: fpc-c
propagateEnvironment:
# - path: /builders/external
# name: fpc-c
- name: ccaas_builder
path: /opt/hyperledger/ccaas_builder/ccaas/bin
propagateEnvironment:
- CHAINCODE_AS_A_SERVICE_BUILDER_CONFIG
- CORE_PEER_ID
- FPC_HOSTING_MODE
- FABRIC_LOGGING_SPEC
Expand Down
75 changes: 66 additions & 9 deletions samples/deployment/k8s/generate.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,19 @@
# Copyright IBM Corp. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0

C_RESET='\033[0m'
C_RED='\033[0;31m'
C_GREEN='\033[0;32m'
C_BLUE='\033[0;34m'
C_YELLOW='\033[1;33m'
# successln echos in green color
function successln() {
println "${C_GREEN}${1}${C_RESET}"
}
# println echos string
function println() {
echo -e "$1"
}
set -euo pipefail

if [[ -z "${FPC_PATH}" ]]; then
Expand All @@ -19,9 +32,10 @@ cryptoConfigDir="${outDir}/crypto-config"
channelArtifactsDir="${outDir}/channel-artifacts"
packageDir="${outDir}/packages"


CHAINCODE_SERVER_PORT=9999

FABRIC_BIN_DIR="${FABRIC_BIN_DIR:-${FABRIC_PATH}/build/bin}"
FABRIC_BIN_DIR="${FPC_PATH}/fabric/_internal/bin"
if [[ -z "${FABRIC_BIN_DIR}" ]]; then
echo "Error: FABRIC_BIN_DIR not set"
echo "Error: FABRIC_BIN_DIR must point to the location of cryptogen and configtxgen"
Expand Down Expand Up @@ -54,7 +68,44 @@ do
done

echo "Package ercc and fpccc"
CC_TYPE="external"
function packageChaincode() {

address="{{.peername}}_${CC_NAME}_ccaas:${CHAINCODE_SERVER_PORT}"
prefix=$(basename "$0")
tempdir=$(mktemp -d -t "$prefix.XXXXXXXX") || error_exit "Error creating temporary directory"
label=${CC_NAME}_${CC_VERSION}
mkdir -p "$tempdir/src"

cat > "$tempdir/src/connection.json" <<CONN_EOF
{
"address": "${address}",
"dial_timeout": "10s",
"tls_required": false
}
CONN_EOF

mkdir -p "$tempdir/pkg"

cat << METADATA-EOF > "$tempdir/pkg/metadata.json"
{
"type": "ccaas",
"label": "$label"
}
METADATA-EOF

tar -C "$tempdir/src" -czf "$tempdir/pkg/code.tar.gz" .
tar -C "$tempdir/pkg" -czf "$CC_NAME.tar.gz" metadata.json code.tar.gz
rm -Rf "$tempdir"

# PACKAGE_ID=$(peer lifecycle chaincode calculatepackageid ${CC_NAME}.tar.gz)
# commenting due to the network not yet being setup to calculate package_id

mv $CC_NAME.tar.gz packageDir
successln "Chaincode is packaged ${address} and in ${packageDir}/$CC_NAME.tar.gz"

}

CC_TYPE="ccaas"
ERCC_ID="ercc"
ERCC_VER="1.0"
FPCCC_ID="fpccc"
Expand All @@ -66,19 +117,25 @@ if [[ -z "${TEST_CC_PATH}" ]]; then
fi

FPC_MRENCLAVE="$(cat "${FPCCC_PATH}"/_build/lib/mrenclave)"

mkdir packageDir
for peer in $(shopt -s globstar; find ${cryptoConfigDir}/**/peers/ -mindepth 1 -maxdepth 1 -execdir echo {} ';' | sed 's/^\.\///g');
do
# ercc
endpoint="${ERCC_ID}-${peer}:${CHAINCODE_SERVER_PORT}"
packageName="${ERCC_ID}-${peer}.tgz"
packageChaincode "${packageDir}" "${packageName}" "${ERCC_ID}" "${ERCC_VER}" "${CC_TYPE}" "${endpoint}" "${peer}"
CC_NAME=ERCC_ID
CC_VERSION=ERCC_VER
# endpoint="${ERCC_ID}-${peer}:${CHAINCODE_SERVER_PORT}"
# packageName="${ERCC_ID}-${peer}.tgz"
# packageChaincode "${packageDir}" "${packageName}" "${ERCC_ID}" "${ERCC_VER}" "${CC_TYPE}" "${endpoint}" "${peer}"
packageChaincode "${peer}"

# fpc cc
endpoint="${FPCCC_ID}-${peer}:${CHAINCODE_SERVER_PORT}"
packageName="${FPCCC_ID}-${peer}.tgz"
packageChaincode "${packageDir}" "${packageName}" "${FPCCC_ID}" "${FPC_MRENCLAVE}" "${CC_TYPE}" "${endpoint}" "${peer}"
CC_NAME=FPCCC_ID
# endpoint="${FPCCC_ID}-${peer}:${CHAINCODE_SERVER_PORT}"
# packageName="${FPCCC_ID}-${peer}.tgz"
# packageChaincode "${packageDir}" "${packageName}" "${FPCCC_ID}" "${FPC_MRENCLAVE}" "${CC_TYPE}" "${endpoint}" "${peer}"
packageChaincode "${peer}"
done


echo "Store mrenclave for fpccc"
echo "FPC_MRENCLAVE=${FPC_MRENCLAVE}" >> ${packageDir}/chaincode-config.properties
3 changes: 3 additions & 0 deletions samples/deployment/k8s/org1/org1-fpcclient-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,9 @@ spec:
- mountPath: /opt/gopath/src/github.com/hyperledger/fabric-private-chaincode/
name: fpc-claim
workingDir: /opt/gopath/src/github.com/hyperledger/fabric/peer
# nodeSelector:
# kubernetes.io/arch: amd64
# test to see if minikube can start a docker amd64 image even though it is running arm64
restartPolicy: Always
volumes:
- name: fpcclient-claim3
Expand Down
2 changes: 2 additions & 0 deletions samples/deployment/k8s/org1/org1-peer0-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ spec:
value: 0.0.0.0:9443
- name: CORE_METRICS_PROVIDER
value: prometheus
- name: CHAINCODE_AS_A_SERVICE_BUILDER_CONFIG
value: "{\"peername\":\"peer0org1\"}"
image: hyperledger/fabric-peer:2.5.9
name: peer0
ports:
Expand Down
Loading