Skip to content

Add cloudevent support#2

Merged
linakrisztian merged 46 commits intomainfrom
cloudevent_support
Jun 18, 2025
Merged

Add cloudevent support#2
linakrisztian merged 46 commits intomainfrom
cloudevent_support

Conversation

@linakrisztian
Copy link
Copy Markdown
Member

@linakrisztian linakrisztian commented Apr 17, 2025

This PR adds the general functionality of the cloudevent (including setup + tests), which is: receival of cloudevent, conversion to actinia pc, and return of cloudevent. The actual implementation for starting the pc will be done in a separate PR (see also below)

Done in a separate PR (might also need discussion):

  • pc to actinia + start job (see also notes within core/processing.py, function cloud_event_to_process_chain()
  • decide for structured vs. binary cloudevents: see also api/cloudevent.py

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit

ruff

[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

log.debug('starting app in development mode...')


[ruff] reported by reviewdog 🐶

# -*- coding: utf-8 -*-
"""
Copyright (c) 2018-2021 mundialis GmbH & Co. KG


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

DEFAULT_CONFIG_PATH).glob('**/*.ini') if f.is_file()]
GENERATED_CONFIG = DEFAULT_CONFIG_PATH + '/actinia-cloudevent-plugin.cfg'


[ruff] reported by reviewdog 🐶

"""Default config for app and api doc
"""
version = '0.0.0'
url = 'http://localhost:8080'


[ruff] reported by reviewdog 🐶

"""Default config for database connection for jobtabelle
"""
host = 'localhost'
port = '5432'
database = 'gis'
user = 'gis'
pw = 'gis'
schema = 'actinia'
table = 'tab_jobs'
id_field = 'idpk_jobs'


[ruff] reported by reviewdog 🐶

"""Default config for logging
"""
logfile = 'actinia-cloudevent-plugin.log'
level = 'DEBUG'
type = 'stdout'


[ruff] reported by reviewdog 🐶

"""Default config for actinia_core
"""
url = 'http://localhost:1236/api/v1/'
user = 'actinia'
filestorage = ''
password = 'actinia'
esa_apihub_user = 'changeme'
esa_apihub_pw = 'changeme'


[ruff] reported by reviewdog 🐶

"""Default config for database connection for geodata database
"""
host = 'localhost'
port = '5432'
database = 'gis'
user = 'gis'


[ruff] reported by reviewdog 🐶

def __init__(self):
"""
This class will overwrite the config classes above when config files


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

with open(GENERATED_CONFIG, 'w') as configfile:


[ruff] reported by reviewdog 🐶

# -*- coding: utf-8 -*-
"""
Copyright (c) 2025 mundialis GmbH & Co. KG


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

log = logging.getLogger('actinia-cloudevent-plugin')
werkzeugLog = logging.getLogger('werkzeug')
gunicornLog = logging.getLogger('gunicorn')


[ruff] reported by reviewdog 🐶

if LOGCONFIG.type == 'json' and not veto:
logformat = CustomJsonFormatter('%(time) %(level) %(component)'
'%(module) %(message) %(pathname)'
'%(lineno) %(processName)'
'%(threadName)')


[ruff] reported by reviewdog 🐶

'%(log_color)s[%(asctime)s] %(levelname)-10s: %(name)s.%(module)-'
'10s -%(message)s [in %(pathname)s:%(lineno)d]%(reset)s'


[ruff] reported by reviewdog 🐶

def setLogHandler(logger, type, format):
if type == 'stdout':


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

def add_fields(self, log_record, record, message_dict):
super(CustomJsonFormatter, self).add_fields(


[ruff] reported by reviewdog 🐶

now = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
log_record['time'] = now
log_record['level'] = record.levelname
log_record['component'] = record.name


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

setLogHandler(log, 'file', fileformat)
setLogHandler(log, 'stdout', stdoutformat)


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

setLogHandler(werkzeugLog, 'file', fileformat)
setLogHandler(werkzeugLog, 'stdout', stdoutformat)


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

setLogHandler(gunicornLog, 'file', fileformat)
setLogHandler(gunicornLog, 'stdout', stdoutformat)

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit

ruff

[ruff] reported by reviewdog 🐶

DEFAULT_CONFIG_PATH).glob('**/*.ini') if f.is_file()]
GENERATED_CONFIG = DEFAULT_CONFIG_PATH + '/actinia-cloudevent-plugin.cfg'


[ruff] reported by reviewdog 🐶

"""Default config for app and api doc
"""
version = '0.0.0'
url = 'http://localhost:8080'


[ruff] reported by reviewdog 🐶

"""Default config for database connection for jobtabelle
"""
host = 'localhost'
port = '5432'
database = 'gis'
user = 'gis'
pw = 'gis'
schema = 'actinia'
table = 'tab_jobs'
id_field = 'idpk_jobs'


[ruff] reported by reviewdog 🐶

"""Default config for logging
"""
logfile = 'actinia-cloudevent-plugin.log'
level = 'DEBUG'
type = 'stdout'


[ruff] reported by reviewdog 🐶

"""Default config for actinia_core
"""
url = 'http://localhost:1236/api/v1/'
user = 'actinia'
filestorage = ''
password = 'actinia'
esa_apihub_user = 'changeme'
esa_apihub_pw = 'changeme'


[ruff] reported by reviewdog 🐶

"""Default config for database connection for geodata database
"""
host = 'localhost'
port = '5432'
database = 'gis'
user = 'gis'


[ruff] reported by reviewdog 🐶

def __init__(self):
"""
This class will overwrite the config classes above when config files


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

with open(GENERATED_CONFIG, 'w') as configfile:


[ruff] reported by reviewdog 🐶

# -*- coding: utf-8 -*-
"""
Copyright (c) 2025 mundialis GmbH & Co. KG


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

log = logging.getLogger('actinia-cloudevent-plugin')
werkzeugLog = logging.getLogger('werkzeug')
gunicornLog = logging.getLogger('gunicorn')


[ruff] reported by reviewdog 🐶

if LOGCONFIG.type == 'json' and not veto:
logformat = CustomJsonFormatter('%(time) %(level) %(component)'
'%(module) %(message) %(pathname)'
'%(lineno) %(processName)'
'%(threadName)')


[ruff] reported by reviewdog 🐶

'%(log_color)s[%(asctime)s] %(levelname)-10s: %(name)s.%(module)-'
'10s -%(message)s [in %(pathname)s:%(lineno)d]%(reset)s'


[ruff] reported by reviewdog 🐶

def setLogHandler(logger, type, format):
if type == 'stdout':


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

def add_fields(self, log_record, record, message_dict):
super(CustomJsonFormatter, self).add_fields(


[ruff] reported by reviewdog 🐶

now = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
log_record['time'] = now
log_record['level'] = record.levelname
log_record['component'] = record.name


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

setLogHandler(log, 'file', fileformat)
setLogHandler(log, 'stdout', stdoutformat)


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

setLogHandler(werkzeugLog, 'file', fileformat)
setLogHandler(werkzeugLog, 'stdout', stdoutformat)


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

setLogHandler(gunicornLog, 'file', fileformat)
setLogHandler(gunicornLog, 'stdout', stdoutformat)


[ruff] reported by reviewdog 🐶

from actinia_cloudevent_plugin.main import app as application

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit

ruff

[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

def add_fields(self, log_record, record, message_dict):
super(CustomJsonFormatter, self).add_fields(


[ruff] reported by reviewdog 🐶

now = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.%fZ')
log_record['time'] = now
log_record['level'] = record.levelname
log_record['component'] = record.name


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

setLogHandler(log, 'file', fileformat)
setLogHandler(log, 'stdout', stdoutformat)


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

setLogHandler(werkzeugLog, 'file', fileformat)
setLogHandler(werkzeugLog, 'stdout', stdoutformat)


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

setLogHandler(gunicornLog, 'file', fileformat)
setLogHandler(gunicornLog, 'stdout', stdoutformat)


[ruff] reported by reviewdog 🐶

from actinia_cloudevent_plugin.main import app as application


[ruff] reported by reviewdog 🐶

from flask import Flask, request


[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

@app.route("/", methods=["POST"])


[ruff] reported by reviewdog 🐶

f"{event['type']} and specversion {event['specversion']}"

Copy link
Copy Markdown
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit

ruff

[ruff] reported by reviewdog 🐶


[ruff] reported by reviewdog 🐶

@app.route("/", methods=["POST"])


[ruff] reported by reviewdog 🐶

f"{event['type']} and specversion {event['specversion']}"

@linakrisztian linakrisztian marked this pull request as ready for review June 3, 2025 12:44
Copy link
Copy Markdown
Member

@mmacata mmacata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very cool, thanks!

Co-authored-by: Carmen Tawalika <mmacata@users.noreply.github.com>
@linakrisztian linakrisztian merged commit 7b5a187 into main Jun 18, 2025
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants