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'])) }
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'])) }
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'])) }