Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Small problems with Caprover #140

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 18 additions & 6 deletions deck_chores/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ def _check_with_trigger(self, field, value):

trigger_class, args = value[0], value[1]
try:
trigger_class(*args, timezone=self.document.get('timezone', cfg.timezone))
trigger_class(
*args, timezone=self.document.get('timezone', cfg.timezone))
except Exception as e:
message = (
f"Error while instantiating a {trigger_class.__name__} with '{args}'."
Expand Down Expand Up @@ -146,7 +147,8 @@ def parse_labels(container_id: str) -> tuple[tuple[str, ...], str, dict[str, dic

service_id = parse_service_id(labels)

filtered_labels = {k: v for k, v in labels.items() if k.startswith(cfg.label_ns)}
filtered_labels = {k: v for k,
v in labels.items() if k.startswith(cfg.label_ns)}
flags, user = parse_options(filtered_labels)

if 'image' in flags:
Expand All @@ -155,7 +157,8 @@ def parse_labels(container_id: str) -> tuple[tuple[str, ...], str, dict[str, dic
else:
image_labels = {}

job_definitions = parse_job_definitions(image_labels | filtered_labels, user)
job_definitions = parse_job_definitions(
image_labels | filtered_labels, user)

if service_id:
log.debug(f'Assigning service id: {service_id}')
Expand Down Expand Up @@ -185,7 +188,8 @@ def parse_flags(options: str) -> str:


def parse_service_id(labels: dict[str, str]) -> tuple[str, ...]:
filtered_labels = {k: v for k, v in labels.items() if k in cfg.service_identifiers}
filtered_labels = {k: v for k,
v in labels.items() if k in cfg.service_identifiers}
log.debug(f'Considering labels for service id: {filtered_labels}')
if not filtered_labels:
return ()
Expand Down Expand Up @@ -214,6 +218,9 @@ def parse_job_definitions(labels: Mapping[str, str], user: str) -> dict[str, dic
)

for key, value in labels.items():
if value == "":
continue

key = key.removeprefix(cfg.label_ns)
if '.env.' in key:
name, _, variable = key.split('.', 2)
Expand All @@ -222,13 +229,18 @@ def parse_job_definitions(labels: Mapping[str, str], user: str) -> dict[str, dic
variable
] = value
else:
name, attribute = key.split('.', 1)
name_grouped_definitions[name][attribute] = value
if "." in key:
name, attribute = key.split('.', 1)
name_grouped_definitions[name][attribute] = value

log.debug(f'Job definitions: {dict(name_grouped_definitions)}')

result = {}
for name, definition in name_grouped_definitions.items():
if definition.get('enabled', 'true').lower() == 'false':
log.debug(f'Skipping disabled job: {name}')
continue

log.debug(f'Processing {name}')
definition['name'] = name
definition.setdefault("user", user)
Expand Down