Esempio n. 1
0
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)
Esempio n. 2
0
    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
Esempio n. 3
0
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)
Esempio n. 4
0
 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)
Esempio n. 5
0
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)
Esempio n. 6
0
    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)
Esempio n. 7
0
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')
Esempio n. 8
0
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)
Esempio n. 9
0
    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)
Esempio n. 10
0
    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)
Esempio n. 11
0
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
Esempio n. 12
0
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
Esempio n. 13
0
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)