Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,11 @@
*/-%>
printHeadline "Packaging chaincode '<%= chaincode.name %>'" "U1F60E"
<% if (chaincode.lang === "ccaas") { -%>
<% chaincode.peerChaincodeInstances.forEach((instance) => { -%>
chaincodePackageCCaaS <% -%>
"<%= chaincode.instantiatingOrg.cli.address %>" <% -%>
"<%= instance.peerAddress %>" <% -%>
"<%= chaincode.name %>" <% -%>
"$version" <% -%>
"<%= chaincode.image %>" <% -%>
"<%= instance.port %>" <% -%>
"<%= instance.containerName %>" <% -%>
"<%= global.tls %>" <% -%>
"<%= chaincode.channel.name %>" <% -%>
"<%= instance.orgDomain %>"
<% }) -%>
chaincodePackageCCaaS <% -%>
"<%= chaincode.instantiatingOrg.cli.address %>" <% -%>
"<%= chaincode.name %>" <% -%>
"$version" <% -%>
"<%= chaincode.channel.name %>"
<% } else { -%>
chaincodeBuild <% -%>
"<%= chaincode.name %>" <% -%>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ services:
- CORE_PEER_GATEWAY_ENABLED=true
<%_ } _%>
# ccaas builder configuration
- CHAINCODE_AS_A_SERVICE_BUILDER_CONFIG={"peername":"<%= peer.name %><%= org.name %>"}
- CHAINCODE_AS_A_SERVICE_BUILDER_CONFIG={"peer_hostname":"<%= peer.address %>","peername":"<%= peer.name %><%= org.name %>"}
working_dir: /etc/hyperledger/fabric/peer/
command: peer node start <%= global.peerDevMode ? '--peer-chaincodedev=true' : '' %>
ports:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,62 +104,31 @@ chaincodePackage() {

chaincodePackageCCaaS() {
local CLI_NAME=$1
local PEER_ADDRESS=$2
local CHAINCODE_NAME=$3
local CHAINCODE_VERSION=$4
local CHAINCODE_IMAGE=$5
local CONTAINER_PORT=$6
local CONTAINER_NAME=$7
local TLS_ENABLED=$8
local CHANNEL_NAME=$9
local ORG_DOMAIN=${10}
local CHAINCODE_NAME=$2
local CHAINCODE_VERSION=$3
local CHANNEL_NAME=$4
local CHAINCODE_LABEL="${CHANNEL_NAME}_${CHAINCODE_NAME}_$CHAINCODE_VERSION"

echo "Packaging CCaaS chaincode $CHAINCODE_NAME..."
inputLog "CHAINCODE_VERSION: $CHAINCODE_VERSION"
inputLog "PEER_ADDRESS: $PEER_ADDRESS"
inputLog "CLI_NAME: $CLI_NAME"
inputLog "CHAINCODE_IMAGE: $CHAINCODE_IMAGE"
inputLog "CONTAINER_PORT: $CONTAINER_PORT"
inputLog "TLS_ENABLED: $TLS_ENABLED"
inputLog "CHANNEL_NAME: $CHANNEL_NAME"
inputLog "CONTAINER_NAME: $CONTAINER_NAME"
inputLog "ORG_DOMAIN: $ORG_DOMAIN"


local ACTUAL_CONTAINER_NAME="$CONTAINER_NAME"
ACTUAL_CONTAINER_NAME=$(echo "$ACTUAL_CONTAINER_NAME" | tr '[:upper:]' '[:lower:]')
local PACKAGE_DIR="./chaincode-packages/ccaas_$ACTUAL_CONTAINER_NAME"
local PACKAGE_DIR="./chaincode-packages/ccaas_$CHAINCODE_LABEL"

mkdir -p "$PACKAGE_DIR"
echo "{\"type\":\"ccaas\",\"label\":\"$CHAINCODE_LABEL\"}" >"$PACKAGE_DIR/metadata.json"

mkdir -p "$PACKAGE_DIR/code"

if [ "$TLS_ENABLED" = true ]; then
# Use peer0.org1.example.com TLS certificates instead of CCaaS certificates
local PEER_TLS_PATH="$FABLO_NETWORK_ROOT/fabric-config/crypto-config/peerOrganizations/$ORG_DOMAIN/peers/$PEER_ADDRESS/tls"
local ROOT_CERT=$(awk '{printf "%s\\n", $0}' "$PEER_TLS_PATH/ca.crt")
local SERVER_CERT=$(awk '{printf "%s\\n", $0}' "$PEER_TLS_PATH/server.crt")
local SERVER_KEY=$(awk '{printf "%s\\n", $0}' "$PEER_TLS_PATH/server.key")

echo "{
\"address\": \"${ACTUAL_CONTAINER_NAME}:7052\",
\"domain\": \"${ACTUAL_CONTAINER_NAME}\",
\"dial_timeout\": \"10s\",
\"tls_required\": $TLS_ENABLED,
\"client_auth_required\": true,
\"client_cert\": \"$SERVER_CERT\",
\"client_key\": \"$SERVER_KEY\",
\"root_cert\": \"$ROOT_CERT\"
}" >"$PACKAGE_DIR/code/connection.json"
else
echo "{
\"address\": \"${ACTUAL_CONTAINER_NAME}:7052\",
\"dial_timeout\": \"10s\",
\"tls_required\": $TLS_ENABLED
}" >"$PACKAGE_DIR/code/connection.json"
fi
# One package per channel/chaincode/version, with peer-specific host substituted by Fabric builder config.
echo "{
\"address\": \"ccaas_{{.peer_hostname}}_${CHANNEL_NAME}_${CHAINCODE_NAME}_${CHAINCODE_VERSION}:7052\",
\"domain\": \"ccaas_{{.peer_hostname}}_${CHANNEL_NAME}_${CHAINCODE_NAME}_${CHAINCODE_VERSION}\",
\"dial_timeout\": \"10s\",
\"tls_required\": false,
\"client_auth_required\": false
}" >"$PACKAGE_DIR/code/connection.json"

tar -czf "$PACKAGE_DIR/code.tar.gz" -C "$PACKAGE_DIR/code" connection.json
tar -czf "./chaincode-packages/$CHAINCODE_LABEL.tar.gz" -C "$PACKAGE_DIR" metadata.json code.tar.gz
Expand Down Expand Up @@ -239,22 +208,10 @@ startCCaaSContainer() {

echo "Starting CCaaS container: $CONTAINER_NAME with ID: ${CHAINCODE_LABEL}:${PACKAGE_HASH}"

# Extract peer name and organization domain from peer address
local PEER_NAME="${PEER_ADDRESS%%:*}"

local ORG_DOMAIN=$(echo "$PEER_NAME" | sed 's/^[^.]*\.//')
local CONFIG_PATH="$FABLO_NETWORK_ROOT/fabric-config/crypto-config/"
local PORT_MAP="${EXTERNAL_PORT}:7052"

local NETWORK=$(docker inspect "${PEER_ADDRESS%%:*}" | jq -r '.[0].NetworkSettings.Networks | keys[]')

# Generate CCAAS-specific certificates with correct CN
echo "Generating CCAAS certificates for $CONTAINER_NAME..."
certsGenerateCCaaS "$CONFIG_PATH" "$CONTAINER_NAME" "$ORG_DOMAIN" "$CHAINCODE_NAME" "$PEER_ADDRESS"

# Use generated CCAAS certificates
local CCAAS_TLS_PATH="$CONFIG_PATH/ccaas/$CONTAINER_NAME/tls"

if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
local STATE
STATE=$(docker inspect -f '{{.State.Status}}' "$CONTAINER_NAME" 2>/dev/null || echo "unknown")
Expand Down Expand Up @@ -290,14 +247,6 @@ startCCaaSContainer() {
-e CHAINCODE_ID="${CHAINCODE_LABEL}:${PACKAGE_HASH}" \
-e CORE_CHAINCODE_LOGGING_LEVEL=info \
-e CORE_CHAINCODE_LOGGING_SHIM=info \
-e CORE_PEER_TLS_ENABLED=true \
-e CORE_CHAINCODE_TLS_CERT_FILE=/etc/hyperledger/fabric/client.crt \
-e CORE_CHAINCODE_TLS_KEY_FILE=/etc/hyperledger/fabric/client.key \
-e CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/peer.crt \
-e CORE_PEER_LOCALMSPID=Org1MSP \
-v "$CCAAS_TLS_PATH/client.key:/etc/hyperledger/fabric/client.key" \
-v "$CCAAS_TLS_PATH/client.crt:/etc/hyperledger/fabric/client.crt" \
-v "$CCAAS_TLS_PATH/peer.crt:/etc/hyperledger/fabric/peer.crt" \
"${MOUNT_PATH_PARAMS[@]+"${MOUNT_PATH_PARAMS[@]}"}" \
-p "$PORT_MAP" \
--network "$NETWORK" \
Expand Down
Loading