Beispiel #1
0
    def applyYAML(self):
        print('Create namespace: ' + str(self.AppInfo['Namespace']))
        TmpResponse = self.k8sObj.createNamespace(
            name=self.AppInfo['Namespace'])
        if TmpResponse['ret_code'] != 0:
            print(TmpResponse)
            return TmpResponse

        print('setup  NFS provisioner for %s' % (self.AppInfo['AppName'], ))

        TmpNFSProvisionser = nfsprovisioner.NFSProvisionerTool(
            namespace=self.AppInfo['Namespace'],
            nfsdatapath=self.AppInfo['ProvisionerPath'],
            harbor=self.AppInfo['HarborAddr'])

        TmpResponse = TmpNFSProvisionser.start()
        if TmpResponse['ret_code'] != 0:
            print('failed setup NFS provisioner for %s' %
                  (self.AppInfo['AppName'], ))
            return TmpResponse

        print('setup NFS provisioner for  %s successfully ' %
              (self.AppInfo['AppName'], ))

        print('Apply Zookeeper YAML ...')
        TmpTargetNamespaceDIR = os.path.join(
            self.AppInfo['TargetNamespaceDIR'], self.AppInfo['Namespace'],
            self.AppInfo['AppName'])
        TmpTargetNamespaceDIR = os.path.normpath(
            os.path.realpath(TmpTargetNamespaceDIR))

        if not self.k8sObj.checkNamespacedResourceHealth(
                name='zookeeper',
                namespace=self.AppInfo['Namespace'],
                kind='StatefulSet'):
            try:
                self.k8sObj.deleteNamespacedStatefulSet(
                    name='zookeeper', namespace=self.AppInfo['Namespace'])
            except:
                pass

            TmpResponse = self.k8sObj.createResourceFromYaml(
                filepath=os.path.join(TmpTargetNamespaceDIR, 'resource',
                                      'zookeeper.yaml'),
                namespace=self.AppInfo['Namespace'])
            if TmpResponse['ret_code'] != 0:
                print(TmpResponse)
                return TmpResponse

        isRunning = False
        for itime in range(self.RetryTimes):
            TmpResponse = self.k8sObj.getNamespacedStatefulSet(
                name='zookeeper',
                namespace=self.AppInfo['Namespace'])['result'].to_dict()

            if not self.k8sObj.checkNamespacedResourceHealth(
                    name='zookeeper',
                    namespace=self.AppInfo['Namespace'],
                    kind='StatefulSet'):
                print(
                    'Waitting for Stateful Set %s to be ready,replicas: %s, available replicas: %s'
                ) % (TmpResponse['metadata']['name'],
                     str(TmpResponse['status']['replicas']),
                     str(TmpResponse['status']['ready_replicas']))
                sleep(5)
                continue

            #sleep (20)
            TmpServiceCheckObj = servicestatecheck.ServiceStateCheckTool(
                namespace=self.AppInfo['Namespace'],
                harbor=self.AppInfo['HarborAddr'])
            TmpCheckResult = TmpServiceCheckObj.checkServicePortState(
                targetaddress='zookeeper-svc:2181')
            print('zookeeper-svc:2181 is listening....')

            print('Stateful Set: %s is available;replicas: %s') % (
                TmpResponse['metadata']['name'],
                str(TmpResponse['status']['replicas']))
            isRunning = True
            break

        if not isRunning:
            print('Failed to apply Stateful Set: %s') % (
                TmpResponse['metadata']['name'], )
            return {
                'ret_code':
                1,
                'result':
                'Failed to apply Stateful Set: %s' %
                (TmpResponse['metadata']['name'], )
            }

        return {
            'ret_code':
            0,
            'result':
            'Stateful Set: %s is available;replicas: %s' %
            (TmpResponse['metadata']['name'],
             str(TmpResponse['status']['replicas']))
        }
Beispiel #2
0
    def applyYAML(self):
        print('Create namespace: ' + str(self.AppInfo['Namespace']))
        TmpResponse = self.k8sObj.createNamespace(
            name=self.AppInfo['Namespace'])
        if TmpResponse['ret_code'] != 0:
            print(TmpResponse)
            return TmpResponse

        print('Apply MariaDB ....')
        isRunning = False

        if (not self.k8sObj.checkNamespacedResourceHealth(name='mariadb-deploy', namespace=self.AppInfo['Namespace'],
                                                         kind='Deployment')) \
                    and (not hasattr(storagenode, 'externalMariadbnode')):
            try:
                self.k8sObj.deleteNamespacedDeployment(
                    name='mariadb-deploy', namespace=self.AppInfo['Namespace'])
            except:
                pass

            TmpTargetNamespaceDIR = os.path.join(
                self.AppInfo['TargetNamespaceDIR'], self.AppInfo['Namespace'],
                self.AppInfo['AppName'])
            TmpTargetNamespaceDIR = os.path.normpath(
                os.path.realpath(TmpTargetNamespaceDIR))

            self.k8sObj.createResourceFromYaml(
                filepath=os.path.join(TmpTargetNamespaceDIR, 'resource',
                                      'mariadb-cm.yaml'),
                namespace=self.AppInfo['Namespace'])
            self.k8sObj.createResourceFromYaml(
                filepath=os.path.join(TmpTargetNamespaceDIR, 'resource',
                                      'mariadb-pv.yaml'),
                namespace=self.AppInfo['Namespace'])
            self.k8sObj.createResourceFromYaml(
                filepath=os.path.join(TmpTargetNamespaceDIR, 'resource',
                                      'mariadb-pvc.yaml'),
                namespace=self.AppInfo['Namespace'])
            self.k8sObj.createResourceFromYaml(
                filepath=os.path.join(TmpTargetNamespaceDIR, 'resource',
                                      'mariadb-svc.yaml'),
                namespace=self.AppInfo['Namespace'])

            TmpResponse = self.k8sObj.createResourceFromYaml(
                filepath=os.path.join(TmpTargetNamespaceDIR, 'resource',
                                      'mariadb-deploy.yaml'),
                namespace=self.AppInfo['Namespace'])

            if TmpResponse['ret_code'] != 0:
                print(TmpResponse)
                return TmpResponse

        elif hasattr(storagenode, 'externalMariadbnode'):
            TmpTargetNamespaceDIR = os.path.join(
                self.AppInfo['TargetNamespaceDIR'], self.AppInfo['Namespace'],
                self.AppInfo['AppName'])
            TmpTargetNamespaceDIR = os.path.normpath(
                os.path.realpath(TmpTargetNamespaceDIR))

            self.k8sObj.createResourceFromYaml(
                filepath=os.path.join(TmpTargetNamespaceDIR, 'resource',
                                      'mariadb-svc-external.yaml'),
                namespace=self.AppInfo['Namespace'])

            self.k8sObj.deleteNamespacedEndpoint(
                name='mariadb-svc', namespace=self.AppInfo['Namespace'])

            self.k8sObj.createResourceFromYaml(
                filepath=os.path.join(TmpTargetNamespaceDIR, 'resource',
                                      'mariadb-endpoint.yaml'),
                namespace=self.AppInfo['Namespace'])
            isRunning = True

        for itime in range(self.RetryTimes):
            if isRunning:
                break

            TmpResponse = self.k8sObj.getNamespacedDeployment(
                name='mariadb-deploy',
                namespace=self.AppInfo['Namespace'])['result'].to_dict()

            if not self.k8sObj.checkNamespacedResourceHealth(
                    name='mariadb-deploy',
                    namespace=self.AppInfo['Namespace'],
                    kind='Deployment'):
                print(
                    'Waitting for Deployment  %s to be ready,replicas: %s, available replicas: %s'
                ) % (TmpResponse['metadata']['name'],
                     str(TmpResponse['status']['replicas']),
                     str(TmpResponse['status']['ready_replicas']))
                sleep(5)
                continue
            print('Deployment: %s is available;replicas: %s') % (
                TmpResponse['metadata']['name'],
                str(TmpResponse['status']['replicas']))
            isRunning = True
            break

        if not isRunning:
            print('Failed to apply Deployment: %s') % (
                TmpResponse['metadata']['name'], )
            return {
                'ret_code':
                1,
                'result':
                'Failed to apply Deployment: %s' %
                (TmpResponse['metadata']['name'], )
            }
        print('Waitting MariaDB for running....')
        ####sleep(120)

        TmpServiceCheckObj = servicestatecheck.ServiceStateCheckTool(
            namespace=self.AppInfo['Namespace'],
            harbor=self.AppInfo['HarborAddr'])
        TmpCheckResult = TmpServiceCheckObj.checkServicePortState(
            targetaddress='mariadb-svc:3306')
        print('mariadb-svc:3306 is listening....')

        if hasattr(storagenode, 'externalMariadbnode'):
            return {
                'ret_code': 0,
                'result': 'External Mysql is available now',
            }

        return {
            'ret_code':
            0,
            'result':
            'Deployment: %s is available;replicas: %s' %
            (TmpResponse['metadata']['name'],
             str(TmpResponse['status']['replicas']))
        }
Beispiel #3
0
    def applyYAML(self):
        print ('Create namespace: '+str(self.AppInfo['Namespace']))
        TmpResponse = self.k8sObj.createNamespace(name=self.AppInfo['Namespace'])
        if TmpResponse['ret_code'] != 0:
            print (TmpResponse)
            return TmpResponse


        print ('Apply TransferVideo ....')
        if not self.k8sObj.checkNamespacedResourceHealth(name='transfer-video-deploy', namespace=self.AppInfo['Namespace'],
                                                         kind='Deployment'):
            try:
                self.k8sObj.deleteNamespacedDeployment(name='transfer-video-deploy', namespace=self.AppInfo['Namespace'])
            except:
                pass

            TmpTargetNamespaceDIR = os.path.join(self.AppInfo['TargetNamespaceDIR'], self.AppInfo['Namespace'],
                                                 self.AppInfo['AppName'])
            TmpTargetNamespaceDIR = os.path.normpath(os.path.realpath(TmpTargetNamespaceDIR))



            self.k8sObj.createResourceFromYaml(filepath=os.path.join(TmpTargetNamespaceDIR, 'resource', 'transfer_video-cm.yaml'),
                                               namespace=self.AppInfo['Namespace']
                                               )
            self.k8sObj.createResourceFromYaml(filepath=os.path.join(TmpTargetNamespaceDIR, 'resource', 'transfer_video-svc.yaml'),
                                               namespace=self.AppInfo['Namespace']
                                               )
            self.k8sObj.createResourceFromYaml(filepath=os.path.join(TmpTargetNamespaceDIR, 'resource', 'pv/transfer_video-pv.yaml'),
                                               namespace=self.AppInfo['Namespace']
                                               )
            self.k8sObj.createResourceFromYaml(filepath=os.path.join(TmpTargetNamespaceDIR, 'resource', 'pv/transfer_video-pvc.yaml'),
                                               namespace=self.AppInfo['Namespace']
                                               )


            TmpResponse = self.k8sObj.createResourceFromYaml(filepath=os.path.join(TmpTargetNamespaceDIR, 'resource', 'transfer_video-deploy.yaml'),
                                                         namespace=self.AppInfo['Namespace'])

            #print (os.path.join(TmpTargetNamespaceDIR, 'resource', 'mty-ids-deploy.yaml'))
            #print (os.path.join(TmpTargetNamespaceDIR, 'resource', 'mty-ids-cm.yaml'))
            if TmpResponse['ret_code'] != 0:
                print (TmpResponse)
                return TmpResponse

        isRunning=False
        for itime in range(self.RetryTimes):
            TmpResponse = self.k8sObj.getNamespacedDeployment(name='transfer-video-deploy',
                                                                   namespace=self.AppInfo['Namespace'])['result'].to_dict()

            if not self.k8sObj.checkNamespacedResourceHealth(name='transfer-video-deploy', namespace=self.AppInfo['Namespace'],
                                                         kind='Deployment'):
                print ('Waitting for Deployment  %s to be ready,replicas: %s, available replicas: %s')%(
                    TmpResponse['metadata']['name'], str(TmpResponse['status']['replicas']),
                    str(TmpResponse['status']['ready_replicas'])
                )
                sleep (5)
                continue

            TmpServiceCheckObj = servicestatecheck.ServiceStateCheckTool(namespace=self.AppInfo['Namespace'],
                                                                         harbor=self.AppInfo['HarborAddr'])
            TmpCheckResult = TmpServiceCheckObj.checkServicePortState(targetaddress='transfer-video-svc:56021')
            print ('transfer-video-svc:56021 is listening....')


            print ('Deployment: %s is available;replicas: %s')%(TmpResponse['metadata']['name'],
                                                              str(TmpResponse['status']['replicas']))
            isRunning = True
            break

        if not isRunning:
            print ('Failed to apply Deployment: %s')%(TmpResponse['metadata']['name'],)
            return {
                'ret_code': 1,
                'result': 'Failed to apply Deployment: %s'%(TmpResponse['metadata']['name'],)
            }

        return {
            'ret_code': 0,
            'result': 'Deployment: %s is available;replicas: %s'%(TmpResponse['metadata']['name'],
                                                                    str(TmpResponse['status']['replicas']))
        }