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 preinstalls_task(): setup_logger(logging.INFO) logger.info("Lithops v{} - Generating metadata".format(__version__)) runtime_meta = get_runtime_preinstalls() response = flask.jsonify(runtime_meta) response.status_code = 200 logger.info("Done!") return complete(response)
def runtime_packages(payload): logger.info("Lithops v{} - Generating metadata".format(__version__)) runtime_meta = get_runtime_preinstalls() internal_storage = InternalStorage(payload) status_key = '/'.join([JOBS_PREFIX, payload['runtime_name'] + '.meta']) logger.info("Runtime metadata key {}".format(status_key)) dmpd_response_status = json.dumps(runtime_meta) internal_storage.put_data(status_key, dmpd_response_status)
def extract_runtime_meta(encoded_payload): logger.info("Lithops v{} - Generating metadata".format(__version__)) payload = b64str_to_dict(encoded_payload) setup_lithops_logger(payload['log_level']) runtime_meta = get_runtime_preinstalls() internal_storage = InternalStorage(payload) status_key = '/'.join([JOBS_PREFIX, payload['runtime_name'] + '.meta']) logger.info("Runtime metadata key {}".format(status_key)) dmpd_response_status = json.dumps(runtime_meta) internal_storage.put_data(status_key, dmpd_response_status)
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(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 extract_runtime_meta(): runtime_meta = get_runtime_preinstalls() print(json.dumps(runtime_meta))
from lithops.worker import function_invoker from lithops.worker.utils import get_runtime_preinstalls logger = logging.getLogger('lithops.worker') if __name__ == '__main__': print(os.environ) action = os.getenv('__LITHOPS_ACTION') os.environ['__LITHOPS_BACKEND'] = 'AWS Batch' if action == 'get_preinstalls': 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))