fabric-samples/test-network-k8s/scripts/application_connection.sh
Aadithyan Raju b82a309d91
NixOS support (Multi-Linux Distro Support) (#1310)
Signed-off-by: AadithyanRaju <aadithyan75@gmail.com>
Signed-off-by: Aadithyan Raju <93834376+AadithyanRaju@users.noreply.github.com>
2025-03-24 19:15:58 +00:00

124 lines
No EOL
3.9 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# Copyright IBM Corp All Rights Reserved
#
# SPDX-License-Identifier: Apache-2.0
#
function app_one_line_pem {
echo "`awk 'NF {sub(/\\n/, ""); printf "%s\\\\\\\n",$0;}' $1`"
}
function app_json_ccp {
local ORG=$1
local PP=$(one_line_pem $2)
local CP=$(one_line_pem $3)
sed -e "s/\${ORG}/$ORG/" \
-e "s#\${PEERPEM}#$PP#" \
-e "s#\${CAPEM}#$CP#" \
scripts/ccp-template.json
}
function app_id {
local MSP=$1
local CERT=$(one_line_pem $2)
local PK=$(one_line_pem $3)
sed -e "s#\${CERTIFICATE}#$CERT#" \
-e "s#\${PRIVATE_KEY}#$PK#" \
-e "s#\${MSPID}#$MSP#" \
scripts/appuser.id.template
}
function construct_application_configmap() {
push_fn "Constructing application connection profiles"
ENROLLMENT_DIR=${TEMP_DIR}/enrollments
CHANNEL_MSP_DIR=${TEMP_DIR}/channel-msp
mkdir -p build/application/wallet
mkdir -p build/application/gateways
local peer_pem=$CHANNEL_MSP_DIR/peerOrganizations/org1/msp/tlscacerts/tlsca-signcert.pem
local ca_pem=$CHANNEL_MSP_DIR/peerOrganizations/org1/msp/cacerts/ca-signcert.pem
echo "$(json_ccp 1 $peer_pem $ca_pem)" > build/application/gateways/org1_ccp.json
peer_pem=$CHANNEL_MSP_DIR/peerOrganizations/org2/msp/tlscacerts/tlsca-signcert.pem
ca_pem=$CHANNEL_MSP_DIR/peerOrganizations/org2/msp/cacerts/ca-signcert.pem
echo "$(json_ccp 2 $peer_pem $ca_pem)" > build/application/gateways/org2_ccp.json
pop_fn
push_fn "Getting Application Identities"
local cert=$ENROLLMENT_DIR/org1/users/org1admin/msp/signcerts/cert.pem
local pk=$ENROLLMENT_DIR/org1/users/org1admin/msp/keystore/key.pem
echo "$(app_id Org1MSP $cert $pk)" > build/application/wallet/appuser_org1.id
local cert=$ENROLLMENT_DIR/org2/users/org2admin/msp/signcerts/cert.pem
local pk=$ENROLLMENT_DIR/org2/users/org2admin/msp/keystore/key.pem
echo "$(app_id Org2MSP $cert $pk)" > build/application/wallet/appuser_org2.id
pop_fn
push_fn "Creating ConfigMap \"app-fabric-tls-v1-map\" with TLS certificates for the application"
kubectl -n $NS delete configmap app-fabric-tls-v1-map || true
kubectl -n $NS create configmap app-fabric-tls-v1-map --from-file=$CHANNEL_MSP_DIR/peerOrganizations/org1/msp/tlscacerts
pop_fn
push_fn "Creating ConfigMap \"app-fabric-ids-v1-map\" with identities for the application"
kubectl -n $NS delete configmap app-fabric-ids-v1-map || true
kubectl -n $NS create configmap app-fabric-ids-v1-map --from-file=./build/application/wallet
pop_fn
push_fn "Creating ConfigMap \"app-fabric-ccp-v1-map\" with ConnectionProfile for the application"
kubectl -n $NS delete configmap app-fabric-ccp-v1-map || true
kubectl -n $NS create configmap app-fabric-ccp-v1-map --from-file=./build/application/gateways
pop_fn
push_fn "Creating ConfigMap \"app-fabric-org1-v1-map\" with Organization 1 information for the application"
cat <<EOF > build/app-fabric-org1-v1-map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: app-fabric-org1-v1-map
data:
fabric_channel: ${CHANNEL_NAME}
fabric_contract: ${CHAINCODE_NAME}
fabric_wallet_dir: /fabric/application/wallet
fabric_gateway_hostport: org1-peer-gateway-svc:7051
fabric_gateway_sslHostOverride: org1-peer-gateway-svc
fabric_user: appuser_org1
fabric_gateway_tlsCertPath: /fabric/tlscacerts/tlsca-signcert.pem
EOF
kubectl -n $NS apply -f build/app-fabric-org1-v1-map.yaml
# todo: could add the second org here
pop_fn
}
function application_connection() {
construct_application_configmap
log
log "For k8s applications:"
log "Config Maps created for the application"
log "To deploy your application updated the image name and issue these commands"
log ""
log "kubectl -n $NS apply -f kube/application-deployment.yaml"
log "kubectl -n $NS rollout status deploy/application-deployment"
log
log "For non-k8s applications:"
log "ConnectionPrfiles are in ${PWD}/build/application/gateways"
log "Identities are in ${PWD}/build/application/wallets"
log
}