Skip to content

Commit 007edcf

Browse files
authored
Merge pull request #662 from YoungHypo/issue-chaincode_install
Upgrade chaincode installation to Fabric V2.5.10
2 parents 8eef62e + 076c2bb commit 007edcf

File tree

5 files changed

+54
-72
lines changed

5 files changed

+54
-72
lines changed

src/agent/docker-rest-agent/server.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ def create_node():
4646
port_map = ast.literal_eval(request.form.get("port_map"))
4747
volumes = [
4848
'{}/fabric/{}:/etc/hyperledger/fabric'.format(storage_path, node_name),
49-
'{}/production/{}:/var/hyperledger/production'.format(storage_path, node_name)
49+
'{}/production/{}:/var/hyperledger/production'.format(storage_path, node_name),
50+
'/var/run/docker.sock:/host/var/run/docker.sock'
5051
]
5152
if request.form.get('type') == "peer":
5253
peer_envs = {

src/api-engine/api/lib/peer/chaincode.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
import subprocess
77
from api.lib.peer.command import Command
88
from api.config import FABRIC_TOOL, FABRIC_CFG, FABRIC_VERSION
9+
import logging
910

11+
LOG = logging.getLogger(__name__)
1012

1113
class ChainCode(Command):
1214
def __init__(self, version=FABRIC_VERSION, peer=FABRIC_TOOL, **kwargs):
@@ -39,8 +41,13 @@ def lifecycle_install(self, cc_targz):
3941
:return: 0 means success.
4042
"""
4143
try:
42-
res = os.system(
43-
"{} lifecycle chaincode install {}".format(self.peer, cc_targz))
44+
command = [
45+
self.peer,
46+
"lifecycle", "chaincode", "install",
47+
cc_targz
48+
]
49+
LOG.info(" ".join(command))
50+
res = os.system(" ".join(command))
4451
res = res >> 8
4552
except Exception as e:
4653
err_msg = "install chaincode failed for {}!".format(e)

src/api-engine/api/routes/chaincode/views.py

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
from api.lib.peer.chaincode import ChainCode as PeerChainCode
2222
from api.common.serializers import PageQuerySerializer
23-
from api.utils.common import with_common_response
23+
from api.utils.common import with_common_response, init_env_vars
2424
from api.exceptions import ResourceNotFound
2525

2626
from api.routes.chaincode.serializers import (
@@ -33,7 +33,9 @@
3333
from api.common import ok, err
3434
import threading
3535
import hashlib
36+
import logging
3637

38+
LOG = logging.getLogger(__name__)
3739

3840
class ChainCodeViewSet(viewsets.ViewSet):
3941
"""Class represents Channel related operations."""
@@ -239,8 +241,8 @@ def install(self, request):
239241
if not qs.exists():
240242
raise ResourceNotFound
241243
peer_node = qs.first()
242-
envs = init_env_vars(peer_node, org)
243244

245+
envs = init_env_vars(peer_node, org)
244246
peer_channel_cli = PeerChainCode(**envs)
245247
res = peer_channel_cli.lifecycle_install(cc_targz)
246248
if res != 0:
@@ -551,31 +553,3 @@ def query_committed(self, request):
551553
return Response(
552554
ok(chaincodes_commited), status=status.HTTP_200_OK
553555
)
554-
555-
556-
def init_env_vars(node, org):
557-
"""
558-
Initialize environment variables for peer channel CLI.
559-
:param node: Node object
560-
:param org: Organization object.
561-
:return env: dict
562-
"""
563-
org_name = org.name
564-
org_domain = org_name.split(".", 1)[1]
565-
dir_certificate = "{}/{}/crypto-config/ordererOrganizations/{}".format(
566-
CELLO_HOME, org_name, org_domain)
567-
dir_node = "{}/{}/crypto-config/peerOrganizations".format(
568-
CELLO_HOME, org_name)
569-
570-
envs = {
571-
"CORE_PEER_TLS_ENABLED": "true",
572-
# "Org1.cello.comMSP"
573-
"CORE_PEER_LOCALMSPID": "{}MSP".format(org_name.capitalize()),
574-
"CORE_PEER_TLS_ROOTCERT_FILE": "{}/{}/peers/{}/tls/ca.crt".format(dir_node, org_name, node.name + "." + org_name),
575-
"CORE_PEER_ADDRESS": "{}:{}".format(
576-
node.name + "." + org_name, str(7051)),
577-
"CORE_PEER_MSPCONFIGPATH": "{}/{}/users/Admin@{}/msp".format(dir_node, org_name, org_name),
578-
"FABRIC_CFG_PATH": "{}/{}/peers/{}/".format(dir_node, org_name, node.name + "." + org_name),
579-
"ORDERER_CA": "{}/msp/tlscacerts/tlsca.{}-cert.pem".format(dir_certificate, org_domain)
580-
}
581-
return envs

src/api-engine/api/routes/channel/views.py

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
from api.config import CELLO_HOME
2020
from api.common.serializers import PageQuerySerializer
21-
from api.utils.common import with_common_response, parse_block_file, to_dict, json_filter, json_add_anchor_peer, json_create_envelope
21+
from api.utils.common import with_common_response, parse_block_file, to_dict, json_filter, json_add_anchor_peer, json_create_envelope, init_env_vars
2222
from api.lib.configtxgen import ConfigTX, ConfigTxGen
2323
from api.lib.peer.channel import Channel as PeerChannel
2424
from api.lib.configtxlator.configtxlator import ConfigTxLator
@@ -549,40 +549,3 @@ def peer_channel_update(name, org, anchor_peer, ordering_node, channel_artifacts
549549
orderer_url="{}.{}:{}".format(
550550
ordering_node.name, org.name.split(".", 1)[1], str(7050)),
551551
)
552-
553-
554-
def init_env_vars(node, org):
555-
"""
556-
Initialize environment variables for peer channel CLI.
557-
:param node: Node object
558-
:param org: Organization object.
559-
:return env: dict
560-
"""
561-
org_name = org.name
562-
org_domain = org_name.split(".", 1)[1]
563-
dir_certificate = "{}/{}/crypto-config/ordererOrganizations/{}".format(
564-
CELLO_HOME, org_name, org_domain)
565-
dir_node = "{}/{}/crypto-config/peerOrganizations".format(
566-
CELLO_HOME, org_name)
567-
568-
envs = {}
569-
570-
if(node.type == "orderer"):
571-
envs = {
572-
"CORE_PEER_TLS_ENABLED": "true",
573-
"ORDERER_CA": "{}/orderers/{}/msp/tlscacerts/tlsca.{}-cert.pem".format(dir_certificate, node.name + "." + org_domain, org_domain),
574-
"ORDERER_ADMIN_TLS_SIGN_CERT": "{}/orderers/{}/tls/server.crt".format(dir_certificate, node.name + "." + org_domain),
575-
"ORDERER_ADMIN_TLS_PRIVATE_KEY": "{}/orderers/{}/tls/server.key".format(dir_certificate, node.name + "." + org_domain)
576-
}
577-
elif(node.type == "peer"):
578-
envs = {
579-
"CORE_PEER_TLS_ENABLED": "true",
580-
"CORE_PEER_LOCALMSPID": "{}MSP".format(org_name.split(".")[0].capitalize()),
581-
"CORE_PEER_TLS_ROOTCERT_FILE": "{}/{}/peers/{}/tls/ca.crt".format(dir_node, org_name, node.name + "." + org_name),
582-
"CORE_PEER_MSPCONFIGPATH": "{}/{}/users/Admin@{}/msp".format(dir_node, org_name, org_name),
583-
"CORE_PEER_ADDRESS": "{}:{}".format(
584-
node.name + "." + org_name, str(7051)),
585-
"FABRIC_CFG_PATH": "{}/{}/peers/{}/".format(dir_node, org_name, node.name + "." + org_name)
586-
}
587-
588-
return envs

src/api-engine/api/utils/common.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import uuid
1414
from zipfile import ZipFile
1515
from json import loads
16+
from api.config import CELLO_HOME
1617
import json
1718
import logging
1819

@@ -261,4 +262,40 @@ def json_create_envelope(input, output, channel):
261262

262263
except Exception as e:
263264
LOG.error("Failed to create config update envelope: {}".format(str(e)))
264-
raise
265+
raise
266+
267+
def init_env_vars(node, org):
268+
"""
269+
Initialize environment variables for peer channel CLI.
270+
:param node: Node object
271+
:param org: Organization object.
272+
:return env: dict
273+
"""
274+
org_name = org.name
275+
org_domain = org_name.split(".", 1)[1]
276+
dir_certificate = "{}/{}/crypto-config/ordererOrganizations/{}".format(
277+
CELLO_HOME, org_name, org_domain)
278+
dir_node = "{}/{}/crypto-config/peerOrganizations".format(
279+
CELLO_HOME, org_name)
280+
281+
envs = {}
282+
283+
if(node.type == "orderer"):
284+
envs = {
285+
"CORE_PEER_TLS_ENABLED": "true",
286+
"ORDERER_CA": "{}/orderers/{}/msp/tlscacerts/tlsca.{}-cert.pem".format(dir_certificate, node.name + "." + org_domain, org_domain),
287+
"ORDERER_ADMIN_TLS_SIGN_CERT": "{}/orderers/{}/tls/server.crt".format(dir_certificate, node.name + "." + org_domain),
288+
"ORDERER_ADMIN_TLS_PRIVATE_KEY": "{}/orderers/{}/tls/server.key".format(dir_certificate, node.name + "." + org_domain)
289+
}
290+
elif(node.type == "peer"):
291+
envs = {
292+
"CORE_PEER_TLS_ENABLED": "true",
293+
"CORE_PEER_LOCALMSPID": "{}MSP".format(org_name.split(".")[0].capitalize()),
294+
"CORE_PEER_TLS_ROOTCERT_FILE": "{}/{}/peers/{}/tls/ca.crt".format(dir_node, org_name, node.name + "." + org_name),
295+
"CORE_PEER_MSPCONFIGPATH": "{}/{}/users/Admin@{}/msp".format(dir_node, org_name, org_name),
296+
"CORE_PEER_ADDRESS": "{}:{}".format(
297+
node.name + "." + org_name, str(7051)),
298+
"FABRIC_CFG_PATH": "{}/{}/peers/{}/".format(dir_node, org_name, node.name + "." + org_name)
299+
}
300+
301+
return envs

0 commit comments

Comments
 (0)