def run(): def error(): response = flask.jsonify({ 'error': 'The action did not receive a dictionary as an argument.' }) response.status_code = 404 return complete(response) message = flask.request.get_json(force=True, silent=True) if message and not isinstance(message, dict): return error() act_id = str(uuid.uuid4()).replace('-', '')[:12] os.environ['__LITHOPS_ACTIVATION_ID'] = act_id setup_logger(message['log_level']) if 'remote_invoker' in message: logger.info( "Lithops v{} - Starting Knative invoker".format(__version__)) function_invoker(message) else: logger.info( "Lithops v{} - Starting Knative execution".format(__version__)) function_handler(message) response = flask.jsonify({"activationId": act_id}) response.status_code = 202 return complete(response)
def main(event, context): # pub/sub event data is b64 encoded args = json.loads(base64.b64decode(event['data']).decode('utf-8')) setup_lithops_logger(args.get('log_level', 'INFO')) os.environ['__LITHOPS_ACTIVATION_ID'] = uuid.uuid4().hex os.environ['__LITHOPS_BACKEND'] = 'Google Cloud Functions' if 'get_preinstalls' in args: logger.info("Lithops v{} - Generating metadata".format(__version__)) internal_storage = InternalStorage( args['get_preinstalls']['storage_config']) object_key = '/'.join( [JOBS_PREFIX, args['get_preinstalls']['runtime_name'] + '.meta']) logger.info("Runtime metadata key {}".format(object_key)) runtime_meta = get_runtime_preinstalls() runtime_meta_json = json.dumps(runtime_meta) internal_storage.put_data(object_key, runtime_meta_json) elif 'remote_invoker' in args: logger.info( "Lithops v{} - Starting Google Cloud Functions invoker".format( __version__)) function_invoker(args) else: logger.info( "Lithops v{} - Starting Google Cloud Functions execution".format( __version__)) function_handler(args) return {"Execution": "Finished"}
def main(args): os.environ['__LITHOPS_ACTIVATION_ID'] = os.environ['__OW_ACTIVATION_ID'] if 'remote_invoker' in args: logger.info("Lithops v{} - Starting invoker".format(__version__)) function_invoker(args) else: logger.info("Lithops v{} - Starting execution".format(__version__)) function_handler(args) return {"Execution": "Finished"}
def main(event, context): args = json.loads(event) os.environ['__PW_ACTIVATION_ID'] = context.request_id if 'remote_invoker' in args: logger.info("Lithops v{} - Starting invoker".format(__version__)) function_invoker(args) else: logger.info("Lithops v{} - Starting execution".format(__version__)) function_handler(args) return {"Execution": "Finished"}
def main(event, context): logger.info("Starting GCP Functions function execution") args = json.loads(base64.b64decode(event['data']).decode('utf-8')) os.environ['__PW_ACTIVATION_ID'] = uuid.uuid4().hex if 'remote_invoker' in args: logger.info("Lithops v{} - Starting invoker".format(__version__)) function_invoker(args) else: logger.info("Lithops v{} - Starting execution".format(__version__)) function_handler(args) return {"Execution": "Finished"}
def lambda_handler(event, context): os.environ['__PW_ACTIVATION_ID'] = context.aws_request_id os.environ['__OW_ACTIVATION_ID'] = context.aws_request_id if 'remote_invoker' in event: logger.info("Lithops v{} - Starting invoker".format(__version__)) function_invoker(event) else: logger.info("Lithops v{} - Starting execution".format(__version__)) function_handler(event) return {"Execution": "Finished"}
def main(args): os.environ['__LITHOPS_ACTIVATION_ID'] = os.environ['__OW_ACTIVATION_ID'] setup_logger(args['log_level'], sys.stdout, LOGGER_FORMAT_SHORT) if 'remote_invoker' in args: logger.info("Lithops v{} - Starting invoker".format(__version__)) function_invoker(args) else: logger.info("Lithops v{} - Starting execution".format(__version__)) function_handler(args) return {"Execution": "Finished"}
def main(msgIn: func.QueueMessage): try: args = json.loads(msgIn.get_body()) except: args = msgIn.get_json() os.environ['__PW_ACTIVATION_ID'] = str(msgIn.id) if 'remote_invoker' in args: logger.info("Lithops v{} - Starting invoker".format(__version__)) function_invoker(args) else: logger.info("Lithops v{} - Starting execution".format(__version__)) function_handler(args) return {"Execution": "Finished"}
def lambda_handler(event, context): os.environ['__LITHOPS_ACTIVATION_ID'] = context.aws_request_id setup_lithops_logger(event.get('log_level', logging.INFO)) if 'get_preinstalls' in event: logger.info("Lithops v{} - Generating metadata".format(__version__)) return get_runtime_preinstalls() elif 'remote_invoker' in event: logger.info("Lithops v{} - Starting invoker".format(__version__)) function_invoker(event) else: logger.info("Lithops v{} - Starting execution".format(__version__)) function_handler(event) return {"Execution": "Finished"}
def main(args): os.environ['__LITHOPS_ACTIVATION_ID'] = os.environ['__OW_ACTIVATION_ID'] setup_logger(args['log_level'], sys.stdout, LOGGER_FORMAT_SHORT) if 'get_preinstalls' in args: logger.info("Lithops v{} - Generating metadata".format(__version__)) return get_runtime_preinstalls() elif 'remote_invoker' in args: logger.info("Lithops v{} - Starting IBM CF invoker".format(__version__)) function_invoker(args) else: logger.info("Lithops v{} - Starting IBM CF execution".format(__version__)) function_handler(args) return {"Execution": "Finished"}
def main(args): os.environ['__LITHOPS_ACTIVATION_ID'] = os.environ['__OW_ACTIVATION_ID'] log_level = args['log_level'] ow_logging_config(log_level) if 'remote_invoker' in args: logger.info( "Lithops v{} - Starting OpenWhisk Functions invoker".format( __version__)) function_invoker(args) else: logger.info( "Lithops v{} - Starting OpenWhisk Functions execution".format( __version__)) function_handler(args) return {"Execution": "Finished"}
def main(msgIn: func.QueueMessage, msgOut: func.Out[func.QueueMessage]): try: args = json.loads(msgIn.get_body()) except Exception: args = msgIn.get_json() os.environ['__LITHOPS_ACTIVATION_ID'] = str(msgIn.id) setup_lithops_logger(args['log_level']) if 'get_preinstalls' in args: logger.info("Lithops v{} - Generating metadata".format(__version__)) runtime_meta = get_runtime_preinstalls() msgOut.set(json.dumps(runtime_meta)) elif 'remote_invoker' in args: logger.info("Lithops v{} - Starting invoker".format(__version__)) function_invoker(args) else: logger.info("Lithops v{} - Starting execution".format(__version__)) function_handler(args)
def main_http(req: func.HttpRequest, context: func.Context) -> str: payload = req.get_json() setup_lithops_logger(payload['log_level']) os.environ['__LITHOPS_ACTIVATION_ID'] = context.invocation_id os.environ['__LITHOPS_BACKEND'] = 'Azure Functions (http)' if 'get_preinstalls' in payload: logger.info("Lithops v{} - Generating metadata".format(__version__)) runtime_meta = get_runtime_preinstalls() return json.dumps(runtime_meta) elif 'remote_invoker' in payload: logger.info("Lithops v{} - Starting Azure Functions (http) invoker".format(__version__)) function_invoker(payload) else: logger.info("Lithops v{} - Starting Azure Functions (http) execution".format(__version__)) function_handler(payload) return context.invocation_id
def main_queue(msgIn: func.QueueMessage, msgOut: func.Out[func.QueueMessage]): try: payload = json.loads(msgIn.get_body()) except Exception: payload = msgIn.get_json() setup_lithops_logger(payload['log_level']) os.environ['__LITHOPS_ACTIVATION_ID'] = str(msgIn.id) os.environ['__LITHOPS_BACKEND'] = 'Azure Functions (event)' if 'get_preinstalls' in payload: logger.info("Lithops v{} - Generating metadata".format(__version__)) runtime_meta = get_runtime_preinstalls() msgOut.set(json.dumps(runtime_meta)) elif 'remote_invoker' in payload: logger.info("Lithops v{} - Starting Azure Functions (event) invoker".format(__version__)) function_invoker(payload) else: logger.info("Lithops v{} - Starting Azure Functions (event) execution".format(__version__)) function_handler(payload)
def main(event, context): args = json.loads(event) os.environ['__LITHOPS_ACTIVATION_ID'] = context.request_id os.environ['__LITHOPS_BACKEND'] = 'Alibaba Function Compute' setup_lithops_logger(args['log_level']) if 'get_preinstalls' in event: logger.info("Lithops v{} - Generating metadata".format(__version__)) return get_runtime_preinstalls() elif 'remote_invoker' in args: logger.info( "Lithops v{} - Starting Alibaba Function Compute invoker".format( __version__)) function_invoker(args) else: logger.info( "Lithops v{} - Starting Alibaba Function Compute execution".format( __version__)) function_handler(args) return {"Execution": "Finished"}
def run(): def error(): response = flask.jsonify({ 'error': 'The action did not receive a dictionary as an argument.' }) response.status_code = 404 return complete(response) sys.stdout = open(log_file, 'w') global last_usage_time global keeper global last_job message = flask.request.get_json(force=True, silent=True) if message and not isinstance(message, dict): return error() act_id = str(uuid.uuid4()).replace('-', '')[:12] os.environ['__PW_ACTIVATION_ID'] = act_id last_usage_time = time.time() last_job = message['job_description'] if 'remote_invoker' in message: try: # init keeper only when remote_client configuration provided if 'remote_client' in message['config']['lithops'] and not keeper: _init_keeper(message['config']) # remove 'remote_client' configuration message['config']['lithops'].pop('remote_client', None) logger.info( "Lithops v{} - Starting Docker invoker".format(__version__)) message['config']['lithops']['remote_invoker'] = False message['config']['lithops']['compute_backend'] = 'localhost' if 'localhost' not in message['config']: message['config']['localhost'] = {} if message['config']['lithops']['workers'] is None: total_cpus = multiprocessing.cpu_count() message['config']['lithops']['workers'] = total_cpus message['config']['localhost']['workers'] = total_cpus else: message['config']['localhost']['workers'] = message['config'][ 'lithops']['workers'] message['invokers'] = 0 message['log_level'] = None function_invoker(message) except Exception as e: logger.info(e) response = flask.jsonify({"activationId": act_id}) response.status_code = 202 return complete(response)
lithops_conf_json = os.environ['__LITHOPS_PAYLOAD'] lithops_conf = json.loads(lithops_conf_json) setup_lithops_logger(lithops_conf.get('log_level', logging.INFO)) logger.info("Lithops v{} - Generating metadata".format(__version__)) runtime_meta = get_runtime_preinstalls() internal_storage = InternalStorage(lithops_conf) status_key = lithops_conf['runtime_name'] + '.meta' logger.info("Runtime metadata key {}".format(status_key)) runtime_meta_json = json.dumps(runtime_meta) internal_storage.put_data(status_key, runtime_meta_json) elif action == 'remote_invoker': lithops_payload_json = os.environ['__LITHOPS_PAYLOAD'] lithops_payload = json.loads(lithops_payload_json) logger.info( "Lithops v{} - Starting AWS Lambda invoker".format(__version__)) function_invoker(lithops_payload) elif action == 'job': lithops_payload_json = os.environ['__LITHOPS_PAYLOAD'] lithops_payload = json.loads(lithops_payload_json) setup_lithops_logger(lithops_payload.get('log_level', logging.INFO)) logger.info( "Lithops v{} - Starting AWS Batch execution".format(__version__)) job_index = int(os.environ.get('AWS_BATCH_JOB_ARRAY_INDEX', 0)) lithops_payload['JOB_INDEX'] = job_index logger.info('Job index {}'.format(job_index)) act_id = str(uuid.uuid4()).replace('-', '')[:12] os.environ['__LITHOPS_ACTIVATION_ID'] = act_id