def upload_status(fuc_id): try: object_store = ObjectStore() fuc = object_store.read(str(fuc_id)) return gateway_json_response(fuc) except Exception as e: return build_error_response(e)
def upload_data(dataproduct_id): upload_folder = FileSystem.get_url(FS.TEMP,'uploads') try: rr_client = ResourceRegistryServiceProcessClient(node=Container.instance.node, process=service_gateway_instance) object_store = ObjectStore() try: rr_client.read(str(dataproduct_id)) except BadRequest: raise BadRequest('Unknown DataProduct ID %s' % dataproduct_id) # required fields upload = request.files['file'] # <input type=file name="file"> # determine filetype filetype = _check_magic(upload) upload.seek(0) # return to beginning for save if upload and filetype is not None: # upload file - run filename through werkzeug.secure_filename filename = secure_filename(upload.filename) path = os.path.join(upload_folder, filename) upload_time = time.time() upload.save(path) # register upload file_upload_context = { # TODO add dataproduct_id 'name':'User uploaded file %s' % filename, 'filename':filename, 'filetype':filetype, 'path':path, 'upload_time':upload_time, 'status':'File uploaded to server' } fuc_id, _ = object_store.create_doc(file_upload_context) # client to process dispatch pd_client = ProcessDispatcherServiceClient() # create process definition process_definition = ProcessDefinition( name='upload_data_processor', executable={ 'module':'ion.processes.data.upload.upload_data_processing', 'class':'UploadDataProcessing' } ) process_definition_id = pd_client.create_process_definition(process_definition) # create process process_id = pd_client.create_process(process_definition_id) #schedule process config = DotDict() config.process.fuc_id = fuc_id config.process.dp_id = dataproduct_id pid = pd_client.schedule_process(process_definition_id, process_id=process_id, configuration=config) log.info('UploadDataProcessing process created %s' % pid) # response - only FileUploadContext ID and determined filetype for UX display resp = {'fuc_id': fuc_id} return gateway_json_response(resp) raise BadRequest('Invalid Upload') except Exception as e: return build_error_response(e)
def start(self): from pyon.ion.objstore import ObjectStore self.container.object_store = ObjectStore()