def __createFromSelected(self): self.vc("log").debug("Creating package from selected...") packageType, jsonConfigFile = self.__getPackageTypeAndJsonConfigFile() #self.vc("log").debug("packageType = '{}'", packageType) #self.vc("log").debug("jsonConfigFile = '{}'", jsonConfigFile) # if modifying existing manifest, we already have an identifier, # otherwise create a new one manifestId = self.__getActiveManifestId() if manifestId is None: manifestHash = "%s.tfpackage" % uuid.uuid4() else: manifestHash = self.__getActiveManifestPid() # store the manifest file for harvesting packageDir = FascinatorHome.getPathFile("packages") packageDir.mkdirs() manifestFile = File(packageDir, manifestHash) outStream = FileOutputStream(manifestFile) outWriter = OutputStreamWriter(outStream, "UTF-8") manifest = self.__getActiveManifest() oldType = manifest.getType() if oldType is None: manifest.setType(packageType) else: manifest.setType(oldType) #self.vc("log").debug("Manifest: {}", manifest) outWriter.write(manifest.toString(True)) outWriter.close() try: if manifestId is None: # harvest the package as an object username = self.vc("sessionState").get("username") if username is None: username = "******" # necessary? harvester = None # set up config files, and make sure they are both deployed workflowsDir = FascinatorHome.getPathFile("harvest/workflows") configFile = self.__getFile(workflowsDir, jsonConfigFile) rulesFile = self.__getFile(workflowsDir, "packaging-rules.py") # run the harvest client with our packaging workflow config harvester = HarvestClient(configFile, manifestFile, username) harvester.start() manifestId = harvester.getUploadOid() harvester.shutdown() else: # update existing object object = StorageUtils.getDigitalObject(Services.getStorage(), manifestId) manifestStream = FileUtils.openInputStream(manifestFile) StorageUtils.createOrUpdatePayload(object, manifestHash, manifestStream) manifestStream.close() object.close() except Exception, ex: error = "Packager workflow failed: %s" % str(ex) self.vc("log").error(error, ex) if harvester is not None: harvester.shutdown() return '{ "status": "failed" }'
def __createNew(self): self.vc("log").debug("Creating a new package...") packageType, jsonConfigFile = self.__getPackageTypeAndJsonConfigFile() self.vc("log").debug("packageType = '{}'", packageType) self.vc("log").debug("jsonConfigFile = '{}'", jsonConfigFile) manifestHash = "%s.tfpackage" % uuid.uuid4() # store the manifest file for harvesting packageDir = FascinatorHome.getPathFile("packages") packageDir.mkdirs() manifestFile = File(packageDir, manifestHash) outStream = FileOutputStream(manifestFile) outWriter = OutputStreamWriter(outStream, "UTF-8") self.vc("sessionState").set("package/active", None) manifest = self.__getActiveManifest() manifest.setType(packageType) metaList = list(self.vc("formData").getValues("metaList")) jsonObj = manifest.getJsonObject() for metaName in metaList: value = self.vc("formData").get(metaName) jsonObj.put(metaName, value) if self.vc("formData").getValues("sequencesMetaList") != None: sequenceService = ApplicationContextProvider.getApplicationContext().getBean("sequenceService") sequencesMetaList = list(self.vc("formData").getValues("sequencesMetaList")) for sequenceInfo in sequencesMetaList: sequenceInfoJson = JsonSimple(sequenceInfo) sequenceIndex = sequenceService.getSequence(sequenceInfoJson.getString(None,"sequenceName")) jsonObj.put(sequenceInfoJson.getString(None,"metadataName"), String.format(sequenceInfoJson.getString(None,"stringFormat"),sequenceIndex)) self.vc("log").debug("json object created is: %r" % jsonObj) outWriter.write(manifest.toString(True)) outWriter.close() # adding ability to set access plugin accessPlugin = self.vc("formData").get("access_plugin", "derby") if accessPlugin is not None: self.vc("page").authentication.set_access_plugin(accessPlugin) try: # harvest the package as an object username = self.vc("sessionState").get("username") if username is None: username = "******" # necessary? harvester = None # set up config files, creating if necessary workflowsDir = FascinatorHome.getPathFile("harvest/workflows") configFile = self.__getFile(workflowsDir, jsonConfigFile) self.__getFile(workflowsDir, "packaging-rules.py") # run the harvest client with our packaging workflow config harvester = HarvestClient(configFile, manifestFile, username) harvester.start() manifestId = harvester.getUploadOid() harvester.shutdown() except Exception, ex: error = "Packager workflow failed: %s" % str(ex) self.vc("log").error(error, ex) if harvester is not None: harvester.shutdown() return '{ "status": "failed" }'
def __createNew(self): self.vc("log").debug("Creating a new package...") packageType, jsonConfigFile = self.__getPackageTypeAndJsonConfigFile() #self.vc("log").debug("packageType = '{}'", packageType) #self.vc("log").debug("jsonConfigFile = '{}'", jsonConfigFile) manifestHash = "%s.tfpackage" % uuid.uuid4() # store the manifest file for harvesting packageDir = FascinatorHome.getPathFile("packages") packageDir.mkdirs() manifestFile = File(packageDir, manifestHash) outStream = FileOutputStream(manifestFile) outWriter = OutputStreamWriter(outStream, "UTF-8") self.vc("sessionState").set("package/active", None) manifest = self.__getActiveManifest() manifest.setType(packageType) metaList = list(self.vc("formData").getValues("metaList")) jsonObj = manifest.getJsonObject() for metaName in metaList: value = self.vc("formData").get(metaName) jsonObj.put(metaName, value) outWriter.write(manifest.toString(True)) outWriter.close() try: # harvest the package as an object username = self.vc("sessionState").get("username") if username is None: username = "******" # necessary? harvester = None # set up config files, creating if necessary workflowsDir = FascinatorHome.getPathFile("harvest/workflows") configFile = self.__getFile(workflowsDir, jsonConfigFile) self.__getFile(workflowsDir, "packaging-rules.py") # run the harvest client with our packaging workflow config harvester = HarvestClient(configFile, manifestFile, username) harvester.start() manifestId = harvester.getUploadOid() harvester.shutdown() except Exception, ex: error = "Packager workflow failed: %s" % str(ex) log.error(error, ex) if harvester is not None: harvester.shutdown() return '{ "status": "failed" }'
try: ## Now instantiate a HarvestClient just for this File. #harvester = HarvestClient(File(self.harvestConfig), File(meta_file), owner) #harvester = HarvestClient(File(self.harvestConfig), File(meta_file), None) harvester = HarvestClient(File(self.harvestConfig), File(meta_file), "guest") harvester.start() ## And cleanup afterwards oid = harvester.getUploadOid() except Exception, e: self.logException(file, e) raise finally: ## Cleanup if harvester is not None: harvester.shutdown() self.logInfo(file, "Successfully harvested alert item %s from processing file %s" % (oid,meta_file)) return oid def __checkDirs(self): # Makes sure that the required directories exist: .processed, failed, processed, success, original # All alert directories will have 1 process folder: .processed self.__createDir(self.__DIR_PROCESSED) #Under that directory will be a subdir for each of the alerts run self.__createDir(self.__DIR_ALERT) #And finally we have the processing sub-subdirs self.__createDir(self.__DIR_PROCESSING)
try: ## Now instantiate a HarvestClient just for this File. #harvester = HarvestClient(File(self.harvestConfig), File(meta_file), owner) harvester = HarvestClient(File(self.harvestConfig), File(meta_file), None) harvester.start() ## And cleanup afterwards oid = harvester.getUploadOid() except Exception, e: self.logException(file, e) raise finally: ## Cleanup if harvester is not None: harvester.shutdown() self.logInfo( file, "Successfully harvested alert item %s from processing file %s" % (oid, meta_file)) return oid def __checkDirs(self): # Makes sure that the required directories exist: .processed, failed, processed, success, original # All alert directories will have 1 process folder: .processed self.__createDir(self.__DIR_PROCESSED) #Under that directory will be a subdir for each of the alerts run self.__createDir(self.__DIR_ALERT)
def __createNew(self): self.vc("log").debug("Creating a new package...") packageType, jsonConfigFile = self.__getPackageTypeAndJsonConfigFile() self.vc("log").debug("packageType = '{}'", packageType) self.vc("log").debug("jsonConfigFile = '{}'", jsonConfigFile) manifestHash = "%s.tfpackage" % uuid.uuid4() # store the manifest file for harvesting packageDir = FascinatorHome.getPathFile("packages") packageDir.mkdirs() manifestFile = File(packageDir, manifestHash) outStream = FileOutputStream(manifestFile) outWriter = OutputStreamWriter(outStream, "UTF-8") self.vc("sessionState").set("package/active", None) manifest = self.__getActiveManifest() manifest.setType(packageType) metaList = list(self.vc("formData").getValues("metaList")) jsonObj = manifest.getJsonObject() for metaName in metaList: value = self.vc("formData").get(metaName) jsonObj.put(metaName, value) if self.vc("formData").getValues("sequencesMetaList") != None: sequenceService = ApplicationContextProvider.getApplicationContext( ).getBean("sequenceService") sequencesMetaList = list( self.vc("formData").getValues("sequencesMetaList")) for sequenceInfo in sequencesMetaList: sequenceInfoJson = JsonSimple(sequenceInfo) sequenceIndex = sequenceService.getSequence( sequenceInfoJson.getString(None, "sequenceName")) jsonObj.put( sequenceInfoJson.getString(None, "metadataName"), String.format( sequenceInfoJson.getString(None, "stringFormat"), sequenceIndex)) self.vc("log").debug("json object created is: %r" % jsonObj) outWriter.write(manifest.toString(True)) outWriter.close() # adding ability to set access plugin accessPlugin = self.vc("formData").get("access_plugin", "derby") if accessPlugin is not None: self.vc("page").authentication.set_access_plugin(accessPlugin) try: # harvest the package as an object username = self.vc("sessionState").get("username") if username is None: username = "******" # necessary? harvester = None # set up config files, creating if necessary workflowsDir = FascinatorHome.getPathFile("harvest/workflows") configFile = self.__getFile(workflowsDir, jsonConfigFile) self.__getFile(workflowsDir, "packaging-rules.py") # run the harvest client with our packaging workflow config harvester = HarvestClient(configFile, manifestFile, username) harvester.start() manifestId = harvester.getUploadOid() harvester.shutdown() except Exception, ex: error = "Packager workflow failed: %s" % str(ex) self.vc("log").error(error, ex) if harvester is not None: harvester.shutdown() return '{ "status": "failed" }'
def __createFromSelected(self): self.vc("log").debug("Creating package from selected...") packageType, jsonConfigFile = self.__getPackageTypeAndJsonConfigFile() #self.vc("log").debug("packageType = '{}'", packageType) #self.vc("log").debug("jsonConfigFile = '{}'", jsonConfigFile) # if modifying existing manifest, we already have an identifier, # otherwise create a new one manifestId = self.__getActiveManifestId() if manifestId is None: manifestHash = "%s.tfpackage" % uuid.uuid4() else: manifestHash = self.__getActiveManifestPid() # store the manifest file for harvesting packageDir = FascinatorHome.getPathFile("packages") packageDir.mkdirs() manifestFile = File(packageDir, manifestHash) outStream = FileOutputStream(manifestFile) outWriter = OutputStreamWriter(outStream, "UTF-8") manifest = self.__getActiveManifest() oldType = manifest.getType() if oldType is None: manifest.setType(packageType) else: manifest.setType(oldType) self.vc("log").debug("Manifest: %s" % manifest) outWriter.write(manifest.toString(True)) outWriter.close() try: if manifestId is None: # harvest the package as an object username = self.vc("sessionState").get("username") if username is None: username = "******" # necessary? harvester = None # set up config files, and make sure they are both deployed workflowsDir = FascinatorHome.getPathFile("harvest/workflows") configFile = self.__getFile(workflowsDir, jsonConfigFile) rulesFile = self.__getFile(workflowsDir, "packaging-rules.py") # run the harvest client with our packaging workflow config harvester = HarvestClient(configFile, manifestFile, username) harvester.start() manifestId = harvester.getUploadOid() harvester.shutdown() else: # update existing object object = StorageUtils.getDigitalObject(Services.getStorage(), manifestId) manifestStream = FileUtils.openInputStream(manifestFile) StorageUtils.createOrUpdatePayload(object, manifestHash, manifestStream) manifestStream.close() object.close() except Exception, ex: error = "Packager workflow failed: %s" % str(ex) self.vc("log").error(error, ex) if harvester is not None: harvester.shutdown() return '{ "status": "failed" }'