def load_dump(self, kwargs): self.logger.debug('Uploading mysql dump') if 'mysqldump_file' not in kwargs: return HttpErrorResponse(ManagerException(ManagerException.E_ARGS_MISSING, \ 'mysqldump_file').message) mysqldump_file = kwargs.pop('mysqldump_file') if len(kwargs) != 0: return HttpErrorResponse(ManagerException(ManagerException.E_ARGS_UNEXPECTED, \ detail='invalid number of arguments ').message) if not isinstance(mysqldump_file, FileUploadField): return HttpErrorResponse(ManagerException(ManagerException.E_ARGS_INVALID, \ detail='mysqldump_file should be a file').message) fd, filename = tempfile.mkstemp(dir='/tmp') fd = os.fdopen(fd, 'w') upload = mysqldump_file.file bytes = upload.read(2048) while len(bytes) != 0: fd.write(bytes) bytes = upload.read(2048) fd.close() # Get master # TODO: modify this when multiple masters masters = self.config.getMySQLmasters() try: for master in masters: client.load_dump(master.ip, self.config.AGENT_PORT, filename) except: self.logger.exception( 'load_dump: could not upload mysqldump_file ') self.state = self.S_ERROR return return HttpJsonResponse()
def load_dump(self, kwargs): self.logger.debug('Uploading mysql dump') if 'mysqldump_file' not in kwargs: return HttpErrorResponse(ManagerException(ManagerException.E_ARGS_MISSING, \ 'mysqldump_file').message) mysqldump_file = kwargs.pop('mysqldump_file') if len(kwargs) != 0: return HttpErrorResponse(ManagerException(ManagerException.E_ARGS_UNEXPECTED, \ detail='invalid number of arguments ').message) if not isinstance(mysqldump_file, FileUploadField): return HttpErrorResponse(ManagerException(ManagerException.E_ARGS_INVALID, \ detail='mysqldump_file should be a file').message) fd, filename = tempfile.mkstemp(dir='/tmp') fd = os.fdopen(fd, 'w') upload = mysqldump_file.file bytes = upload.read(2048) while len(bytes) != 0: fd.write(bytes) bytes = upload.read(2048) fd.close() # Get master # TODO: modify this when multiple masters masters = self.config.getMySQLmasters() try: for master in masters: client.load_dump(master.ip, self.config.AGENT_PORT, filename) except: self.logger.exception('load_dump: could not upload mysqldump_file ') self.state = self.S_ERROR return return HttpJsonResponse()
def load_dump(self, kwargs): """ Load a dump into the database. Parameters ---------- mysqldump_file : uploaded file name of uploaded file containing the database dump. """ self.logger.debug('Uploading mysql dump') try: self._check_state([self.S_RUNNING]) exp_params = [('mysqldump_file', is_uploaded_file)] mysqldump_file = check_arguments(exp_params, kwargs) except Exception as ex: return HttpErrorResponse("%s" % ex) fd, filename = tempfile.mkstemp(dir='/tmp') fd = os.fdopen(fd, 'w') upload = mysqldump_file.file bytes = upload.read(2048) while len(bytes) != 0: fd.write(bytes) bytes = upload.read(2048) fd.close() # at least one agent since state is S_RUNNING one_node = self.config.get_nodes()[0] try: agent.load_dump(one_node.ip, self.config.AGENT_PORT, filename) except Exception as ex: err_msg = 'Could not upload mysqldump_file: %s.' % ex self.logger.exception(err_msg) return HttpErrorResponse(err_msg) return HttpJsonResponse()