def make_folder(path_folder): if not os.path.exists(path_folder): hiss.sub_echo('Folder %s does not exists. \n\tCreating...' % path_folder) os.mkdir(path_folder) else: hiss.sub_echo('Folder temp %s exists.' % path_folder)
def apply_yaml_from_template(self, namespace, k8s_template_file, dict_env): yaml_path, _ = util.load_yaml_config_template(k8s_template_file, dict_env) hiss.sub_echo('Create %s successfully' % yaml_path) # Execute yaml hiss.echo('Apply yaml file') stream = open(yaml_path, 'r') docs = yaml.safe_load_all(stream) success = True for doc in docs: try: if doc['kind'] == 'Service': self.coreApi.create_namespaced_service(namespace, body=doc) continue except ApiException as e: print("Service already deployed!") continue try: if doc['kind'] == 'StatefulSet': self.appsApi.create_namespaced_stateful_set( namespace, body=doc) self.check_pod_status_by_keyword(keyword=doc['metadata']['name'], namespace=namespace) if doc['kind'] == 'Deployment': self.appsApi.create_namespaced_deployment( namespace, body=doc) self.check_pod_status_by_keyword(keyword=doc['metadata']['name'], namespace=namespace) if doc['kind'] == 'Job': self.batchApi.create_namespaced_job(namespace, body=doc) self.check_pod_status_by_keyword(keyword=doc['metadata']['name'], namespace=namespace, check_job_success=True) except ApiException as e: print("Exception when apply yaml: %s\n" % e) success = False # self.check_pod_status_by_keyword(keyword=doc['metadata']['name'], namespace=namespace) return success
def delete_all_docker_secret(name): if settings.ORDERER_DOMAINS == '': hiss.sub_echo('Delete secret in namespace: default') delete_secret('default', name) domains = settings.DOMAINS.split(' ') for domain in domains: hiss.sub_echo('Delete secret in namespace: %s' % domain) delete_secret(domain, name)
def create_namespace(self, name): hiss.echo('Create Namespace %s' % name) ns = Namespace(name) # ns.create() if not ns.get(): hiss.sub_echo('Namespace %s does not exist. Creating...' % name) ns.create() else: hiss.sub_echo('Namespace %s already exists' % name)
def setup_admin(): domains = settings.ORDERER_DOMAINS.split(' ') if len(domains) == 0: domains = settings.PEER_DOMAINS.split(' ') # Create application artifact folder hiss.echo('Create application artifact 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/artifacts;' 'mkdir -p ' + settings.EFS_ROOT + '/admin/crypto-path;' 'mkdir -p ' + settings.EFS_ROOT + '/admin/crypto-store;') ## 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(domains[0]) dict_env = { 'ORDERER_DOMAIN': domains[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-v1/admin-deployment.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template(namespace=domains[0], k8s_template_file=k8s_template_file, dict_env=dict_env) # Apply service k8s_template_file = '%s/admin-v1/admin-service.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template(namespace=domains[0], k8s_template_file=k8s_template_file, dict_env=dict_env)
def check_pod_status_by_keyword(self, keyword, namespace, is_delete=False, check_job_success=False): condition_status = 'Running' if is_delete else 'Pending' condition_status = 'Succeeded' if check_job_success else condition_status # Check status count = 0 # Use count variable to detect replica msg = '' # Message show the status of the pod while True: time.sleep(1) # Find efs pod pods = self.find_pod(namespace=namespace, keyword=keyword) if not pods: if is_delete: hiss.sub_echo('Done') break hiss.sub_echo( 'cannot find tiller pod when check status.. retry') continue if is_delete: newMsg = '%s terminating' % keyword if msg != newMsg: msg = newMsg hiss.sub_echo(msg) time.sleep(1) continue # Check replication if len(pods) == count: break # Check status while True: resp = self.coreApi.read_namespaced_pod_status( name=pods[count], namespace=namespace) # Manage notify display newMsg = '%s %s' % (pods[count], resp.status.phase) if msg != newMsg: msg = newMsg hiss.sub_echo(msg) # hiss.sub_echo('%s %s' % (pods[count], resp.status.phase)) if check_job_success: if resp.status.phase == condition_status: count += 1 break time.sleep(1) else: if resp.status.phase != condition_status: count += 1 break time.sleep(1)
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_explorer_db(): # Get domain explorer_db_namespace = get_namespace() # Create temp folder & namespace settings.k8s.prereqs(explorer_db_namespace) dict_env = { 'DOMAIN': explorer_db_namespace, 'DATABASE_PASSWORD': '******' } # Deploy explorer db sts explorer_db_template = '%s/explorer/explorer-db-deployment.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template( namespace=explorer_db_namespace, k8s_template_file=explorer_db_template, dict_env=dict_env) # Deploy explorer db svc explorer_db_svc_template = '%s/explorer/explorer-db-service.yaml' % util.get_k8s_template_path( ) settings.k8s.apply_yaml_from_template( namespace=explorer_db_namespace, k8s_template_file=explorer_db_svc_template, dict_env=dict_env) # Create tables ## Find explorer_db pod pods = settings.k8s.find_pod(namespace=explorer_db_namespace, keyword="explorer-db") if not pods: return hiss.hiss('cannot find tiller pod') create_tbl_cmd = 'chmod 700 /opt/createdb_new.sh; /opt/createdb_new.sh' exec_command = ['/bin/bash', '-c', '%s' % (create_tbl_cmd)] result_get_folder = settings.k8s.exec_pod(podName=pods[0], namespace=explorer_db_namespace, command=exec_command) hiss.sub_echo(result_get_folder.data)
def create(self): # Load template file k8s_template_file = '%s/namespace/namespaces.yaml' % util.get_k8s_template_path( ) with open(k8s_template_file, 'r') as sources: lines = sources.readlines() out_data = [] # Replace variable for line in lines: out_line = re.sub(r'{{NAMESPACES}}', self.name, line) out_data.append(out_line) # Get current datetime (UTC) current_time = datetime.datetime.utcnow().replace( microsecond=0).isoformat().split('T') # Make folder temp if it not exists tmp_path = "%s/%s" % (util.get_temp_path(), current_time[0]) util.make_folder(tmp_path) # Create yaml_path yaml_path = '%s/%s/%s_namespaces.yaml' % ( util.get_temp_path(), current_time[0], current_time[1]) # Write yaml -> yaml_path with open(yaml_path, "w") as sources: for line in out_data: sources.write(line) # Execute yaml with open(yaml_path) as f: dep = yaml.safe_load(f) try: settings.k8s.coreApi.create_namespace(body=dep) hiss.sub_echo('Create namespace successfully') return True except ApiException as e: return hiss.hiss( "Exception when calling CoreV1Api->create_namespace: %s\n" % e)
def check_pod_status_by_keyword(self, keyword, namespace, is_delete=False, check_job_success=False): condition_status = 'Running' if is_delete else 'Pending' condition_status = 'Succeeded' if check_job_success else condition_status # Check status count = 0 # Use count variable to detect replica while True: # Find efs pod pods = self.find_pod( namespace=namespace, keyword=keyword) if not pods: if is_delete: hiss.sub_echo('done') break hiss.sub_echo('cannot find tiller pod when check status.. retry') time.sleep(1) continue if is_delete: hiss.sub_echo('%s terminating' % keyword) time.sleep(3) continue # Check replication if len(pods) == count: break # Check status while True: resp = self.coreApi.read_namespaced_pod_status(name=pods[count], namespace=namespace) hiss.sub_echo('%s %s' % (pods[count], resp.status.phase)) if check_job_success: if resp.status.phase == condition_status: count += 1 break time.sleep(3) else: if resp.status.phase != condition_status: count += 1 break time.sleep(3)
def copy_scripts(): hiss.rattle('Copy scripts to EFS') # Find efs pod pods = settings.k8s.find_pod(namespace="default", keyword="test-efs") if not pods: return hiss.hiss('cannot find tiller pod') # Check empty folder exec_command = [ '/bin/bash', '-c', 'test -d %s && echo "1" || echo "0"' % (settings.EFS_ROOT) ] result_get_folder = settings.k8s.exec_pod(podName=pods[0], namespace="default", command=exec_command) if int(result_get_folder.data) < 1: hiss.sub_echo('Folder %s not found. Creating...' % settings.EFS_ROOT) exec_command = [ '/bin/bash', '-c', 'mkdir -p %s/admin; mkdir -p %s/akc-ca-data' % (settings.EFS_ROOT, settings.EFS_ROOT) ] # Create folder in efs result_create_folder = settings.k8s.exec_pod(podName=pods[0], namespace="default", command=exec_command) if result_create_folder.success == False: return hiss.hiss('cannot create folders in %s: %s' % (pods[0], result_create_folder.msg)) # Copy config to scripts/env hiss.sub_echo('Copy config to scripts/env') config_file = os.path.abspath(os.path.join(__package__, "../config/.env")) env_script_File = os.path.abspath( os.path.join(__package__, "../blockchain/scripts/env-scripts.sh")) copyfile(config_file, env_script_File) # Remove old script folder in efs hiss.sub_echo('Remove old script folder in efs') exec_command = [ '/bin/bash', '-c', 'rm -rf %s/akc-ca-scripts/*' % (settings.EFS_ROOT) ] result_create_folder = settings.k8s.exec_pod(podName=pods[0], namespace="default", command=exec_command) if result_create_folder.success == False: return hiss.hiss('cannot remove folders in %s' % pods[0]) # Copy scripts folder to efs hiss.sub_echo('Copy scripts folder to efs') script_path = os.path.abspath( os.path.join(__package__, "../blockchain/scripts")) if not settings.k8s.cp_to_pod( podName=pods[0], namespace='default', source=script_path, target='%s/akc-ca-scripts' % settings.EFS_ROOT): return hiss.hiss('connot copy scripts folder to pod %s' % pods[0]) exec_command = [ '/bin/bash', '-c', ('test -d ' + settings.EFS_ROOT + '/akc-ca-scripts/akc-ca-scripts' ' && mv ' + settings.EFS_ROOT + '/akc-ca-scripts/akc-ca-scripts/* ' + settings.EFS_ROOT + '/akc-ca-scripts || echo "ok"') ] result_create_folder = settings.k8s.exec_pod(podName=pods[0], namespace="default", command=exec_command) if result_create_folder.success == False: return hiss.hiss('cannot remove folders in %s' % pods[0]) # Copy test chaincode to efs hiss.sub_echo('Copy test chaincode to efs') artifacts_path = os.path.abspath( os.path.join(__package__, "../blockchain/artifacts")) if not settings.k8s.cp_to_pod( podName=pods[0], namespace='default', source=artifacts_path, target='%s/admin/artifacts' % settings.EFS_ROOT): return hiss.hiss('connot copy test chaincode to pod %s' % pods[0]) return True
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 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)