def generate_prom_config(): prom_target = '' # Get orderer target orderers = settings.ORDERER_ORGS.split(' ') for orderer in orderers: domain = util.get_domain(orderer) settings.k8s.prereqs(domain) for peer in range(int(settings.NUM_ORDERERS)): if len(prom_target) > 0: prom_target += ',' prom_target += '\'orderer%s-%s.%s:10443\'' % (peer, orderer, domain) # Get peer target peerorgs = settings.PEER_ORGS.split(' ') for peerorg in peerorgs: domain = util.get_domain(peerorg) for peer in range(int(settings.NUM_PEERS)): if len(prom_target) > 0: prom_target += ',' prom_target += '\'peer%s-%s.%s:10443\'' % (peer, peerorg, domain) dict_env = {'PROM_TARGET': prom_target} # Load config config_template = '%s/prometheus/prometheus-template.yml' % util.get_k8s_template_path( ) yaml_path, config = util.load_yaml_config_template( yaml_template_path=config_template, dict_env=dict_env) print('config: ', config) return yaml_path
def setup_peer(peer, index): # Get domain domain = util.get_domain(peer) # Create temp folder & namespace settings.k8s.prereqs(domain) dict_env = { 'PEER_ORG': peer, 'PEER_DOMAIN': domain, 'PEER_INDEX': index, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND } peer_stateful = '%s/peer-sts/peer-stateful.yaml' % util.get_k8s_template_path() settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=peer_stateful, dict_env=dict_env) peer_service = '%s/peer-sts/peer-service-stateful.yaml' % util.get_k8s_template_path() settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=peer_service, dict_env=dict_env) num_peers = int(settings.NUM_PEERS) if (num_peers > 2): hiss.echo('NUM_PEER > 2: Does not support deployment nlb service') if (util.get_peer_external_domain(peer, index) != ''): peer_service_nlb = '%s/peer-sts/peer-service-nlb.yaml' % util.get_k8s_template_path() settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=peer_service_nlb, dict_env=dict_env)
def setup_orderer(orderer, index): # Get domain domain = util.get_domain(orderer) # Create temp folder & namespace settings.k8s.prereqs(domain) dict_env = { 'ORDERER': orderer, 'ORDERER_DOMAIN': domain, 'ORDERER_INDEX': index, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND } orderer_stateful = '%s/orderer-sts/orderer-stateful.yaml' % util.get_k8s_template_path() settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=orderer_stateful, dict_env=dict_env) orderer_service = '%s/orderer-sts/orderer-service.yaml' % util.get_k8s_template_path() settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=orderer_service, dict_env=dict_env) if settings.EXTERNAL_ORDERER_ADDRESSES != '': # Setup nlb orderer_service_nlb = '%s/orderer-sts/orderer-service-nlb.yaml' % util.get_k8s_template_path() settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=orderer_service_nlb, dict_env=dict_env)
def deploy_external_cc(peer, cc_name, cc_image, cc_package_id): # Get domain domain = util.get_domain(peer) # Create temp folder & namespace settings.k8s.prereqs(domain) # Create config map k8s_template_file = '%s/external-chaincode/chaincode-stateful.yaml' % util.get_k8s_template_path( ) dict_env = { 'PEER_NAME': peer, 'PEER_DOMAIN': domain, 'CHAINCODE_NAME': cc_name, 'CHAINCODE_IMAGE': cc_image, 'CHAINCODE_PACKAGE_ID': cc_package_id } settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=k8s_template_file, dict_env=dict_env) chaincode_service = '%s/external-chaincode/chaincode-service.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=chaincode_service, dict_env=dict_env)
def setup_ica(ica_org): # Get domain ica to create namespace ica_domain = util.get_domain(ica_org) if not ica_domain: return hiss.hiss('Fail to get domain of %s ' % ica_org) # Create temp folder & namespace settings.k8s.prereqs(ica_domain) ica_name = 'ica-%s' % ica_org rca_host = settings.EXTERNAL_RCA_ADDRESSES if not settings.EXTERNAL_RCA_ADDRESSES: rca_host = '%s.%s' % (settings.RCA_NAME, settings.RCA_ORG) k8s_template_file = '%s/ica/fabric-deployment-ica.yaml' % util.get_k8s_template_path() dict_env = { 'ORG': ica_org, 'ICA_NAME': ica_name, 'ICA_DOMAIN': ica_domain, 'RCA_NAME': settings.RCA_NAME, 'RCA_HOST': rca_host, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND } settings.k8s.apply_yaml_from_template( namespace=ica_domain, k8s_template_file=k8s_template_file, dict_env=dict_env)
def enroll_peer(peer, index): # Get domain domain = util.get_domain(peer) # Get external domain external_domain = util.get_peer_external_domain(peer, index) # Create temp folder & namespace settings.k8s.prereqs(domain) k8s_template_file = '%s/enroll-peer/fabric-deployment-enroll-peer.yaml' % util.get_k8s_template_path( ) dict_env = { 'PEER': peer, 'PEER_DOMAIN': domain, 'PEER_INDEX': index, 'EXTERNAL_PEER_HOST': external_domain, 'FABRIC_CA_TAG': settings.FABRIC_CA_TAG, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND, 'PVS_PATH': settings.PVS_PATH } settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=k8s_template_file, dict_env=dict_env)
def delete_all_external_cc(): peers = settings.PEER_ORGS.split(' ') results = [] for peer in peers: domain = util.get_domain(peer) results.append(delete_external_cc(peer)) return results
def del_enroll_orderer(orderer, index): # Get domain domain = util.get_domain(orderer) jobname = 'enroll-o%s-%s' % (index, orderer) # Delete job pod return settings.k8s.delete_job(name=jobname, namespace=domain)
def del_admin(org): # Get domain domain = util.get_domain(org) name = 'admin-v2-%s' % org # Delete job pod return settings.k8s.delete_stateful(name=name, namespace=domain)
def del_generate_ccp(org): # Get domain domain = util.get_domain(org) jobname = 'generate-ccp-%s' % org # Delete job pod return settings.k8s.delete_job(name=jobname, namespace=domain)
def del_reg_orderer(orderer): # Get domain domain = util.get_domain(orderer) jobname = 'register-o-%s' % orderer # Delete job pod return settings.k8s.delete_job(name=jobname, namespace=domain)
def del_reg_peer(org): # Get domain domain = util.get_domain(org) jobname = 'register-p-%s' % org # Delete job pod return settings.k8s.delete_job(name=jobname, namespace=domain)
def delete_orderer(orderer, index): # Get domain domain = util.get_domain(orderer) name = 'orderer%s-%s' % (index, orderer) # Delete stateful set return settings.k8s.delete_stateful(name=name, namespace=domain)
def get_working_orgs_domain(): orgs = settings.PEER_ORGS.split(' ') if len(orgs) > 1: hiss.hiss('Function is still develop') domain = util.get_domain(orgs[0]) settings.k8s.prereqs(domain) return [orgs[0], domain]
def delete_ica(ica_org): ica_name = 'ica-%s' % ica_org # Get domain ica to create namespace ica_domain = util.get_domain(ica_org) if not ica_domain: return hiss.hiss('Fail to get domain of %s ' % ica_org) # Delete stateful set return settings.k8s.delete_stateful(name=ica_name, namespace=ica_domain)
def delete_external_cc(peer): ## Find explorer_db pod domain = util.get_domain(peer) list_stateful_set = settings.k8s.find_stateful_set(namespace=domain, keyword="chaincode") # Remove chaincode container of another org for sts in list_stateful_set: if peer not in sts: list_stateful_set.remove(sts) for sts in list_stateful_set: # Delete stateful set return settings.k8s.delete_stateful(name=sts, namespace=domain)
def config_peer(peer): # Get domain domain = util.get_domain(peer) # Create temp folder & namespace settings.k8s.prereqs(domain) # Create config map k8s_template_file = '%s/external-chaincode/builders-config.yaml' % util.get_k8s_template_path( ) dict_env = {'PEER_DOMAIN': domain} settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=k8s_template_file, dict_env=dict_env)
def setup_peer(peer, index): # Get domain domain = util.get_domain(peer) # Create temp folder & namespace settings.k8s.prereqs(domain) if settings.K8S_TYPE == 'minikube': storage_class = 'standard' else: storage_class = 'gp2' dict_env = { 'PEER_ORG': peer, 'PEER_DOMAIN': domain, 'PEER_INDEX': index, 'FABRIC_TAG': settings.FABRIC_TAG, 'COUCHDB_TAG': settings.COUCHDB_TAG, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND, 'PVS_PATH': settings.PVS_PATH, 'STORAGE_CLASS': storage_class } peer_stateful = '%s/peer-sts/peer-stateful.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=peer_stateful, dict_env=dict_env) peer_service = '%s/peer-sts/peer-service-stateful.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=peer_service, dict_env=dict_env) num_peers = int(settings.NUM_PEERS) if (num_peers > 2): hiss.echo('NUM_PEER > 2: Does not support deployment nlb service') if (util.get_peer_external_domain(peer, index) != ''): peer_service_nlb = '%s/peer-sts/peer-service-nlb.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=peer_service_nlb, dict_env=dict_env)
def reg_org(org): # Get domain domain = util.get_domain(org) # Create temp folder & namespace settings.k8s.prereqs(domain) k8s_template_file = '%s/register-org/fabric-deployment-register-org.yaml' % util.get_k8s_template_path() dict_env = { 'ORG': org, 'REG_DOMAIN': domain, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND } settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=k8s_template_file, dict_env=dict_env)
def delete_peer(peer, index): # Get domain domain = util.get_domain(peer) # peer service name name = 'peer%s-%s' % (index, peer) # Delete peer stateful set res_del_peer = settings.k8s.delete_stateful(name=name, namespace=domain) # couchdb service name name = 'couchdb%s-%s' % (index, peer) # Delete couchdb stateful set res_del_db = settings.k8s.delete_stateful(name=name, namespace=domain) if res_del_peer.success == True and res_del_db.success == True: hiss.sub_echo('Delete peer & couchdb success')
def setup_orderer(orderer, index): # Get domain domain = util.get_domain(orderer) # Create temp folder & namespace settings.k8s.prereqs(domain) if settings.K8S_TYPE == 'minikube': store_class = 'standard' else: store_class = 'gp2' dict_env = { 'ORDERER': orderer, 'ORDERER_DOMAIN': domain, 'ORDERER_INDEX': index, 'FABRIC_TAG': settings.FABRIC_TAG, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND, 'PVS_PATH': settings.PVS_PATH, 'STORE_CLASS': store_class } orderer_stateful = '%s/orderer-sts/orderer-stateful.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=orderer_stateful, dict_env=dict_env) orderer_service = '%s/orderer-sts/orderer-service.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=orderer_service, dict_env=dict_env) if settings.EXTERNAL_ORDERER_ADDRESSES != '': # Setup nlb orderer_service_nlb = '%s/orderer-sts/orderer-service-nlb.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=orderer_service_nlb, dict_env=dict_env)
def generate_ccp(org): # Get domain domain = util.get_domain(org) # Create temp folder & namespace settings.k8s.prereqs(domain) k8s_template_file = '%s/connection-profile/generate-ccp-job.yaml' % util.get_k8s_template_path() dict_env = { 'ORG_NAME': org, 'ORG_DOMAIN': domain, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND, 'PVS_PATH': settings.PVS_PATH } settings.k8s.apply_yaml_from_template( namespace=domain, k8s_template_file=k8s_template_file, dict_env=dict_env)
def enroll_orderer(orderer): # Get domain domain = util.get_domain(orderer) # Create temp folder & namespace settings.k8s.prereqs(domain) k8s_template_file = '%s/enroll-orderer/fabric-deployment-enroll-orderer.yaml' % util.get_k8s_template_path( ) dict_env = { 'ORDERER': orderer, 'ENROLL_DOMAIN': domain, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND } settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=k8s_template_file, dict_env=dict_env)
def reg_orderer(orderer): # Get domain domain = util.get_domain(orderer) # Create temp folder & namespace settings.k8s.prereqs(domain) k8s_template_file = '%s/register-orderer/fabric-deployment-register-orderer.yaml' % util.get_k8s_template_path( ) dict_env = { 'ORDERER_ORG': orderer, 'ORDERER_DOMAIN': domain, 'FABRIC_CA_TAG': settings.FABRIC_CA_TAG, 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND, 'PVS_PATH': settings.PVS_PATH } settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=k8s_template_file, dict_env=dict_env)
def update_folder(): hiss.rattle('Update folder crt in EFS') # Find efs pod pods = settings.k8s.find_pod(namespace="default", keyword="test-efs") if not pods: return hiss.hiss('cannot find tiller pod') all_command = '' prepare_cmd = 'rm -rf %s/akc-ca-data/crypto-config-v1;' % settings.EFS_ROOT prepare_cmd += 'cd %s/akc-ca-data/;' % settings.EFS_ROOT all_command += prepare_cmd if settings.ORDERER_ORGS != '': # Build orderer command orderers = settings.ORDERER_ORGS.split(' ') orderer_cmd = '' for orderer in orderers: # Get domain domain = util.get_domain(orderer) orderer_cmd += ('' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/ca;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/msp/admincerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/msp/cacerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/msp/tlscacerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/tlsca;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/admincerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/cacerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/keystore;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/signcerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/tlscacerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/tls;' '') for index in range(int(settings.NUM_ORDERERS)): orderer_cmd += ( '' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/admincerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/cacerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/keystore;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/signcerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/tlscacerts;' 'mkdir -p crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/tls;' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/cacerts/ca.' + domain + '-cert.pem;' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/tlscacerts/tlsca.' + domain + '-cert.pem;' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/tls/tlsca.' + domain + '-cert.pem;' 'cp crypto-config/' + orderer + '.' + domain + '/users/admin/msp/signcerts/cert.pem crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/admincerts/cert.pem;' 'cp crypto-config/' + orderer + '.' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/signcerts/cert.pem crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/signcerts/;' 'cp crypto-config/' + orderer + '.' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/keystore/*_sk crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/msp/keystore/key.pem;' 'cp crypto-config/' + orderer + '.' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/tls/server.crt crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/tls/;' 'cp crypto-config/' + orderer + '.' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/tls/server.key crypto-config-v1/ordererOrganizations/' + domain + '/orderers/orderer' + str(index) + '-' + orderer + '.' + domain + '/tls/server.key;' '') orderer_cmd += ( '' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/ca/ca.' + domain + '-cert.pem;' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/msp/cacerts/ca.' + domain + '-cert.pem;' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/cacerts/ca.' + domain + '-cert.pem;' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/tlsca/tlsca.' + domain + '-cert.pem;' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/msp/tlscacerts/tlsca.' + domain + '-cert.pem;' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/tlscacerts/tlsca.' + domain + '-cert.pem;' 'cp ica-' + orderer + '-ca-chain.pem crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/tls/tlsca.' + domain + '-cert.pem;' 'cp crypto-config/' + orderer + '.' + domain + '/users/admin/msp/signcerts/cert.pem crypto-config-v1/ordererOrganizations/' + domain + '/msp/admincerts/cert.pem;' 'cp crypto-config/' + orderer + '.' + domain + '/users/admin/msp/signcerts/cert.pem crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/admincerts/cert.pem;' 'cp crypto-config/' + orderer + '.' + domain + '/users/admin/msp/keystore/*_sk crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/keystore/key.pem;' 'cp crypto-config/' + orderer + '.' + domain + '/users/admin/msp/signcerts/cert.pem crypto-config-v1/ordererOrganizations/' + domain + '/users/admin/msp/signcerts/cert.pem;' 'echo "succeed";' '') all_command += orderer_cmd # Build peer command peers = settings.PEER_ORGS.split(' ') peer_cmd = '' for peer in peers: # Get domain domain = util.get_domain(peer) peer_cmd += ('' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/ca;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/msp/admincerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/msp/cacerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/msp/tlscacerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/tlsca;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/admincerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/cacerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/keystore;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/signcerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/tlscacerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/users/admin/tls;' '') for index in range(int(settings.NUM_PEERS)): peer_cmd += ( '' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/admincerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/cacerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/keystore;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/signcerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/tlscacerts;' 'mkdir -p crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/tls;' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/cacerts/ca.' + domain + '-cert.pem;' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/tlscacerts/tlsca.' + domain + '-cert.pem;' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/tls/tlsca.' + domain + '-cert.pem;' 'cp crypto-config/' + peer + '.' + domain + '/users/admin/msp/signcerts/cert.pem crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/admincerts/cert.pem;' 'cp crypto-config/' + peer + '.' + domain + '/peers/peer' + str(index) + '-' + peer + '.' + domain + '/msp/signcerts/cert.pem crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/signcerts/;' 'cp crypto-config/' + peer + '.' + domain + '/peers/peer' + str(index) + '-' + peer + '.' + domain + '/msp/keystore/*_sk crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/msp/keystore/key.pem;' 'cp crypto-config/' + peer + '.' + domain + '/peers/peer' + str(index) + '-' + peer + '.' + domain + '/tls/server.crt crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/tls/;' 'cp crypto-config/' + peer + '.' + domain + '/peers/peer' + str(index) + '-' + peer + '.' + domain + '/tls/server.key crypto-config-v1/peerOrganizations/' + domain + '/peers/peer' + str(index) + '.' + domain + '/tls/server.key;' '') peer_cmd += ( '' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/ca/ca.' + domain + '-cert.pem;' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/msp/cacerts/ca.' + domain + '-cert.pem;' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/cacerts/ca.' + domain + '-cert.pem;' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/tlsca/tlsca.' + domain + '-cert.pem;' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/msp/tlscacerts/tlsca.' + domain + '-cert.pem;' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/tlscacerts/tlsca.' + domain + '-cert.pem;' 'cp ica-' + peer + '-ca-chain.pem crypto-config-v1/peerOrganizations/' + domain + '/users/admin/tls/tlsca.' + domain + '-cert.pem;' 'cp crypto-config/' + peer + '.' + domain + '/users/admin/msp/signcerts/cert.pem crypto-config-v1/peerOrganizations/' + domain + '/msp/admincerts/cert.pem;' 'cp crypto-config/' + peer + '.' + domain + '/users/admin/msp/signcerts/cert.pem crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/admincerts/cert.pem;' 'cp crypto-config/' + peer + '.' + domain + '/users/admin/msp/keystore/* crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/keystore/key.pem;' 'cp crypto-config/' + peer + '.' + domain + '/users/admin/msp/signcerts/cert.pem crypto-config-v1/peerOrganizations/' + domain + '/users/admin/msp/signcerts/cert.pem;' '') all_command += peer_cmd # Exec command exec_command = ['/bin/bash', '-c', '%s' % (all_command)] result_get_folder = settings.k8s.exec_pod(podName=pods[0], namespace="default", command=exec_command) hiss.sub_echo(result_get_folder.data) return True
def generate_explorer_config(): # Load template config config_template_path = os.path.abspath(os.path.join(__file__, "../config.json")) with open(config_template_path, 'r') as f: explorer_config = json.load(f) # Update config orgs = settings.PEER_ORGS.split(' ') orgs_msp = [] for org in orgs: orgs_msp.append('%sMSP' % org) client = { orgs[0]: { 'tlsEnable': True, 'organization': orgs_msp[0], 'channel': settings.CHANNEL_NAME, 'credentialStore': { 'path': '/opt/explorer/crypto-path/fabric-client-kv-%s' % orgs[0], 'cryptoStore': { 'path': '/tmp/crypto-store/fabric-client-kv-%s' % orgs[0] } } } } explorer_config['network-configs']['network-1']['clients'] = client channel_peers = {} for x in range(len(orgs)): domain = util.get_domain(orgs[x]) for y in range(int(settings.NUM_PEERS)): peer_name = 'peer%s-%s.%s' % (y, orgs[x], domain) channel_peers[peer_name] = {} explorer_config['network-configs']['network-1']['channels'] = { '%s' % settings.CHANNEL_NAME: { 'peers': channel_peers, 'connection': { 'timeout': { 'peer': { "endorser": "6000", "eventReg": "6000", "eventHub": "6000" } } } } } orgs_config = {} # org for i in range(len(orgs)): domain = util.get_domain(orgs[i]) p_config = { 'mspid': '%s' % orgs_msp[i], 'fullpath': False, 'adminPrivateKey': { 'path': '/opt/explorer/crypto-config/peerOrganizations/%s/users/admin/msp/keystore' % domain }, 'signedCert': { 'path': '/opt/explorer/crypto-config/peerOrganizations/%s/users/admin/msp/signcerts' % domain } } orgs_config[orgs_msp[i]] = p_config # orderer orderers = settings.ORDERER_ORGS.split(' ') domain = util.get_domain(orderers[0]) o_config = { 'mspid': '%sMSP' % orderers[0], 'adminPrivateKey': { 'path': '/opt/explorer/crypto-config/ordererOrganizations/'+domain+'/users/admin/msp/keystore' } } orgs_config['%sMSP' % settings.ORDERER_ORGS] = o_config explorer_config['network-configs']['network-1']['organizations'] = orgs_config # peers peers_config = {} for x in range(len(orgs)): domain = util.get_domain(orgs[x]) for y in range(int(settings.NUM_PEERS)): peer_name = 'peer%s-%s.%s' % (y, orgs[x], domain) config = { 'tlsCACerts': { 'path': '/opt/explorer/crypto-config/peerOrganizations/'+domain+'/peers/peer%s.%s' % (y, domain)+'/tls/tlsca.mambatest-cert.pem' }, 'url': 'grpcs://%s:7051' % peer_name, 'eventUrl': 'grpcs://%s:7053' % peer_name, 'grpcOptions': { 'ssl-target-name-override': peer_name } } peers_config[peer_name] = config explorer_config['network-configs']['network-1']['peers'] = peers_config # orderers orderers_config = {} for x in range(len(orderers)): domain = util.get_domain(orderers[x]) for y in range(int(settings.NUM_ORDERERS)): orderer_name = 'orderer%s-%s.%s' % (y, orderers[y], domain) config = { 'url': 'grpcs://%s:7050' % orderer_name, 'grpcOptions': { 'ssl-target-name-override': orderer_name }, 'tlsCACerts': { 'path': '/opt/explorer/crypto-config/ordererOrganizations/'+domain+'/orderers/orderer%s.%s' % (y, domain)+'/tls/tlsca.ordererhai-cert.pem' } } orderers_config[orderer_name] = config explorer_config['network-configs']['network-1']['orderers'] = orderers_config return json.dumps(explorer_config)
def setup_admin(org): # Get domain domain = util.get_domain(org) # Get orderer information orderer_names = settings.ORDERER_ORGS.split(' ') orderer_domains = settings.ORDERER_DOMAINS.split(' ') if orderer_names == '' and settings.REMOTE_ORDERER_NAME != '': orderer_names = settings.REMOTE_ORDERER_NAME.split(' ') orderer_domains = settings.REMOTE_ORDERER_DOMAIN.split(' ') # Build endorsement config peer_orgs = '%s %s' % (settings.PEER_ORGS, settings.ENDORSEMENT_ORG_NAME) peer_domains = '%s %s' % (settings.PEER_DOMAINS, settings.ENDORSEMENT_ORG_DOMAIN) print(peer_orgs) # Create application artifact folder hiss.echo('Create wallet folder') ## Find efs pod pods = settings.k8s.find_pod(namespace="default", keyword="test-efs") if not pods: return hiss.hiss('cannot find tiller pod') mkdir_cmd = ('mkdir -p ' + settings.EFS_ROOT + '/admin-v2/wallet;') # Exec command exec_command = ['/bin/bash', '-c', '%s' % (mkdir_cmd)] result_get_folder = settings.k8s.exec_pod(podName=pods[0], namespace="default", command=exec_command) hiss.sub_echo(result_get_folder.data) # Create temp folder & namespace settings.k8s.prereqs(domain) dict_env = { 'ORG_NAME': org, 'ORG_DOMAIN': domain, 'PEER_NAMES': peer_orgs, 'PEER_DOMAINS': peer_domains, 'ORDERER_DOMAIN': orderer_domains[0], 'ORGDERER_NAME': orderer_names[0], 'EFS_SERVER': settings.EFS_SERVER, 'EFS_PATH': settings.EFS_PATH, 'EFS_EXTEND': settings.EFS_EXTEND, 'PVS_PATH': settings.PVS_PATH } # Apply deployment k8s_template_file = '%s/admin/admin-deployment.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=k8s_template_file, dict_env=dict_env) # Apply service k8s_template_file = '%s/admin/admin-service.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template(namespace=domain, k8s_template_file=k8s_template_file, dict_env=dict_env)