diff --git a/src/agent/docker-rest-agent/server.py b/src/agent/docker-rest-agent/server.py index d4522ba7b..e06485ab4 100644 --- a/src/agent/docker-rest-agent/server.py +++ b/src/agent/docker-rest-agent/server.py @@ -5,6 +5,8 @@ import os import ast +logging.basicConfig(level=logging.INFO) + app = Flask(__name__) PASS_CODE = 'OK' FAIL_CODE = 'Fail' @@ -52,7 +54,7 @@ def create_node(): 'CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE': 'cello-net', 'FABRIC_LOGGING_SPEC': 'INFO', 'CORE_PEER_TLS_ENABLED': 'true', - 'CORE_PEER_PROFILE_ENABLED': 'true', + 'CORE_PEER_PROFILE_ENABLED': 'false', 'CORE_PEER_TLS_CERT_FILE': '/etc/hyperledger/fabric/tls/server.crt', 'CORE_PEER_TLS_KEY_FILE': '/etc/hyperledger/fabric/tls/server.key', 'CORE_PEER_TLS_ROOTCERT_FILE': '/etc/hyperledger/fabric/tls/ca.crt', @@ -63,14 +65,19 @@ def create_node(): 'CORE_PEER_CHAINCODELISTENADDRESS':'0.0.0.0:7052', 'CORE_PEER_GOSSIP_BOOTSTRAP': node_name+":7051", 'CORE_PEER_GOSSIP_EXTERNALENDPOINT': node_name+":7051", - 'CORE_OPERATIONS_LISTENADDRESS': '0.0.0.0:17051' + 'CORE_PEER_LOCALMSPID': node_name.split('.')[1].capitalize()+'MSP', + 'CORE_PEER_MSPCONFIGPATH': '/etc/hyperledger/fabric/msp', + 'CORE_OPERATIONS_LISTENADDRESS': node_name+":9444", + 'CORE_METRICS_PROVIDER': 'prometheus' } env.update(peer_envs) else: order_envs = { - 'FABRIC_LOGGING_SPEC':'DEBUG', + 'FABRIC_LOGGING_SPEC':'INFO', 'ORDERER_GENERAL_LISTENADDRESS': '0.0.0.0', 'ORDERER_GENERAL_LISTENPORT': '7050', + 'ORDERER_GENERAL_LOCALMSPID': 'OrdererMSP', + 'ORDERER_GENERAL_LOCALMSPDIR': '/etc/hyperledger/fabric/msp', 'ORDERER_GENERAL_TLS_ENABLED': 'true', 'ORDERER_GENERAL_TLS_PRIVATEKEY':'/etc/hyperledger/fabric/tls/server.key', 'ORDERER_GENERAL_TLS_CERTIFICATE':'/etc/hyperledger/fabric/tls/server.crt', @@ -78,15 +85,17 @@ def create_node(): 'ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE': '/etc/hyperledger/fabric/tls/server.crt', 'ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY': '/etc/hyperledger/fabric/tls/server.key', 'ORDERER_GENERAL_CLUSTER_ROOTCAS': '[/etc/hyperledger/fabric/tls/ca.crt]', - 'ORDERER_GENERAL_LOCALMSPDIR': '/etc/hyperledger/fabric/msp', - 'ORDERER_GENERAL_LOCALMSPID': 'OrdererMSP', + "ORDERER_GENERAL_BOOTSTRAPMETHOD": "none", + "ORDERER_CHANNELPARTICIPATION_ENABLED": "true", - "ORDERER_ADMIN_LISTENADDRESS": "0.0.0.0:7053", "ORDERER_ADMIN_TLS_ENABLED": "true", "ORDERER_ADMIN_TLS_CERTIFICATE": "/etc/hyperledger/fabric/tls/server.crt", "ORDERER_ADMIN_TLS_PRIVATEKEY": "/etc/hyperledger/fabric/tls/server.key", + "ORDERER_ADMIN_TLS_ROOTCAS": "[/etc/hyperledger/fabric/tls/ca.crt]", "ORDERER_ADMIN_TLS_CLIENTROOTCAS": "[/etc/hyperledger/fabric/tls/ca.crt]", - "ORDERER_ADMIN_TLS_CLIENTAUTHREQUIRED": "true" + "ORDERER_ADMIN_LISTENADDRESS": "0.0.0.0:7053", + "ORDERER_OPERATIONS_LISTENADDRESS": node_name+":9443", + "ORDERER_METRICS_PROVIDER": "prometheus" } env.update(order_envs) try: @@ -117,6 +126,7 @@ def create_node(): res['data']['public-grpc'] = '127.0.0.1:7050' # TODO: read the info from config file res['data']['public-raft'] = '127.0.0.1:7052' res['msg'] = 'node created' + return jsonify(res) @app.route('/api/v1/nodes/', methods=['GET', 'POST']) diff --git a/src/api-engine/api/routes/node/views.py b/src/api-engine/api/routes/node/views.py index f64b90093..dd810e59c 100644 --- a/src/api-engine/api/routes/node/views.py +++ b/src/api-engine/api/routes/node/views.py @@ -59,9 +59,10 @@ ) from api.utils.node_config import NodeConfig from api.lib.agent import AgentHandler +from api.lib.peer.channel import Channel as PeerChannel from api.utils.port_picker import set_ports_mapping, find_available_ports from api.common import ok, err -from api.routes.channel.views import init_env_vars, join_peers +from api.routes.channel.views import init_env_vars LOG = logging.getLogger(__name__) @@ -346,12 +347,17 @@ def _set_port(self, type, node, agent): set_ports_mapping( node.id, [{"internal": 7051, "external": ports[0]}, { - "internal": 7053, "external": ports[1]}], + "internal": 9444, "external": ports[1]}], True) else: - ports = find_available_ports(ip, node.id, agent.id, 1) + # unify the port mapping for orderer + ports = find_available_ports(ip, node.id, agent.id, 3) set_ports_mapping( - node.id, [{"internal": 7050, "external": ports[0]}], True) + node.id, + [{"internal": 7050, "external": ports[0]}, { + "internal": 7053, "external": ports[1]}, { + "internal": 9443, "external": ports[2]}], + True) def _conversion_msp_tls_cfg(self, type, org, node): """ @@ -394,7 +400,7 @@ def _conversion_msp_tls_cfg(self, type, org, node): def _generate_config(self, type, org, node): """ - generate config for node + generate config for node (core.yaml, orderer.yaml) :param org: organization name :param type: node type @@ -405,20 +411,41 @@ def _generate_config(self, type, org, node): """ args = {} if type == "peer": - args.update({"peer_id": "{}.{}".format(node, org)}) - args.update({"peer_address": "{}.{}:{}".format(node, org, 7051)}) - args.update( - {"peer_gossip_externalEndpoint": "{}.{}:{}".format(node, org, 7051)}) - args.update( - {"peer_chaincodeAddress": "{}.{}:{}".format(node, org, 7052)}) args.update({"peer_tls_enabled": True}) - args.update({"peer_localMspId": "{}MSP".format(org.capitalize())}) + args.update({"operations_listenAddress": node + "." + org + ":9444"}) + args.update({"peer_address": node + "." + org + ":7051"}) + args.update({"peer_gossip_bootstrap": node + "." + org + ":7051"}) + args.update({"peer_gossip_externalEndpoint": node + "." + org + ":7051"}) + args.update({"peer_id": node + "." + org}) + args.update({"peer_localMspId": org.capitalize() + "MSP"}) + args.update({"peer_mspConfigPath": "/etc/hyperledger/fabric/msp"}) + args.update({"peer_tls_cert_file": "/etc/hyperledger/fabric/tls/server.crt"}) + args.update({"peer_tls_key_file": "/etc/hyperledger/fabric/tls/server.key"}) + args.update({"peer_tls_rootcert_file": "/etc/hyperledger/fabric/tls/ca.crt"}) + args.update({"vm_docker_hostConfig_NetworkMode": "cello_net"}) + args.update({"vm_endpoint": 'unix:///host/var/run/docker.sock'}) a = NodeConfig(org) a.peer(node, **args) else: - args.update({"General_BootstrapMethod": "none"}) + args.update({"Admin_TLS_Enabled": True}) + args.update({"Admin_ListenAddress": "0.0.0.0:7053"}) + args.update({"Admin_TLS_Certificate": "/etc/hyperledger/fabric/tls/server.crt"}) + args.update({"Admin_TLS_PrivateKey": "/etc/hyperledger/fabric/tls/server.key"}) args.update({"ChannelParticipation_Enabled": True}) + args.update({"General_Cluster_ClientCertificate": "/etc/hyperledger/fabric/tls/server.crt"}) + args.update({"General_Cluster_ClientPrivateKey": "/etc/hyperledger/fabric/tls/server.key"}) + args.update({"General_ListenAddress": "0.0.0.0"}) + args.update({"General_ListenPort": 7050}) + args.update({"General_LocalMSPID": "OrdererMSP"}) + args.update({"General_LocalMSPDir": "/etc/hyperledger/fabric/msp"}) + args.update({"General_TLS_Enabled": True}) + args.update({"General_TLS_Certificate": "/etc/hyperledger/fabric/tls/server.crt"}) + args.update({"General_TLS_PrivateKey": "/etc/hyperledger/fabric/tls/server.key"}) + args.update({"General_TLS_RootCAs": "[/etc/hyperledger/fabric/tls/ca.crt]"}) + args.update({"General_BootstrapMethod": "none"}) + args.update({"Metrics_Provider": "prometheus"}) + args.update({"Operations_ListenAddress": node + "." + org.split(".", 1)[1] + ":9443"}) a = NodeConfig(org) a.orderer(node, **args) @@ -809,7 +836,9 @@ def block_file(self, request, pk=None): with open(block_path, 'wb+') as f: for chunk in uploaded_block_file.chunks(): f.write(chunk) - join_peers(envs, block_path) + peer_channel_cli = PeerChannel(**envs) + peer_channel_cli.join( + block_path) os.remove(block_path) return Response(status=status.HTTP_202_ACCEPTED) except Exception as e: diff --git a/src/api-engine/api/utils/common.py b/src/api-engine/api/utils/common.py index 164a0e1cb..f16ed85ab 100644 --- a/src/api-engine/api/utils/common.py +++ b/src/api-engine/api/utils/common.py @@ -118,6 +118,10 @@ def zip_dir(dirpath, outFullName): for filename in filenames: zdir.write(os.path.join(path, filename), os.path.join(fpath, filename)) + # zip empty folder + for dirname in dirnames: + zdir.write(os.path.join(path, dirname), + os.path.join(fpath, dirname)) zdir.close() diff --git a/src/api-engine/requirements.txt b/src/api-engine/requirements.txt index eda82b554..2d58d3f05 100644 --- a/src/api-engine/requirements.txt +++ b/src/api-engine/requirements.txt @@ -39,7 +39,7 @@ pyparsing==2.4.7 pyrsistent==0.17.3 python-dateutil==2.8.1 python3-openid==3.2.0 -PyYAML==5.4 +PyYAML==5.3.1 redis==4.4.4 requests==2.32.2 requests-oauthlib==1.3.0