def copy_fers(self, FERListWidgetFrom, FERListWidgetTo, fromurl, fromid, fromkey, tourl, toid, tokey): logger.info("[Field Extraction Rules]Copying FER(s)") try: selecteditems = FERListWidgetFrom.selectedItems() if len(selecteditems) > 0: # make sure something was selected fromsumo = SumoLogic(fromid, fromkey, endpoint=fromurl, log_level=self.mainwindow.log_level) tosumo = SumoLogic(toid, tokey, endpoint=tourl, log_level=self.mainwindow.log_level) for selecteditem in selecteditems: for object in FERListWidgetFrom.currentcontent: if object['name'] == str(selecteditem.text()): item_id = object['id'] fer_export = fromsumo.get_fer(item_id) status = tosumo.create_fer( fer_export['name'], fer_export['scope'], fer_export['parseExpression']) self.update_FER_list(FERListWidgetTo, tourl, toid, tokey) return else: self.mainwindow.errorbox('You have not made any selections.') return except Exception as e: logger.exception(e) self.mainwindow.errorbox('Something went wrong:' + str(e)) self.update_FER_list(FERListWidgetTo, tourl, toid, tokey) return
def restore_fer(self, FERListWidget, url, id, key): logger.info("[Field Extraction Rules]Restoring FER(s)") if FERListWidget.updated == True: filter = "JSON (*.json)" filelist, status = QtWidgets.QFileDialog.getOpenFileNames( self, "Open file(s)...", os.getcwd(), filter) if len(filelist) > 0: sumo = SumoLogic(id, key, endpoint=url, log_level=self.mainwindow.log_level) for file in filelist: try: with open(file) as filepointer: fer_backup = json.load(filepointer) except Exception as e: logger.exception(e) self.mainwindow.errorbox( "Something went wrong reading the file. Do you have the right file permissions? Does it contain valid JSON?" ) return try: status = sumo.create_fer(fer_backup['name'], fer_backup['scope'], fer_backup['parseExpression']) except Exception as e: logger.exception(e) self.mainwindow.errorbox('Something went wrong:\n\n' + str(e)) return self.update_FER_list(FERListWidget, url, id, key) else: self.mainwindow.errorbox( "Please select at least one file to restore.") return else: self.mainwindow.errorbox( "Please update the directory list before restoring content") return