fosrl / fosrl/pangolin

Blueprint overwriting non configured settings

Open
#2,197 2 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
TypeScript
Stars
22.8k
Forks
783
Avg merge
1d 11h
Merged PRs (30d)
47

Description

### Describe the Bug

I use these labels on my compose stacks:
```yaml
- pangolin.public-resources.linkwarden.auth.sso-enabled=true
- pangolin.public-resources.linkwarden.auth.auto-login-idp=1
```
Since it states in the wiki, that configured blueprint settings will not overwrite UI settings, I'd expect this to not overwrite my UI role and sso-user configuration.
Unfortunately, on every redeploy, my roles and users get cleared out.
It may off course be that I misinterpreted the Docs.

I understand that these settings belong to each other, but when I have never set these labels, I'd still expect blueprints to not overwrite UI settings.

Docs AI Answer regarding this (I know AI is nowhere perfect and loves to invent stuff ^^')

> If you only set sso-enabled: true and auto-login-idp in your blueprint, it will NOT overwrite your existing sso-users list. Blueprints only overwrite the specific fields you define in the compose labels. Fields you don't specify in the blueprint will retain their existing values from the UI.

---
Some background unrelated to the issue itself

Personally, I don't want to version my access control. I also want to be able to change access quickly and without redeploying the service.
Therefore, I do not want to define users or groups in my compose.

Despite that, I want to enable/disable the SSO via GitOps, since this is a change not done often.

### Environment

- OS Type & Version: Debian 13 (Pangonlin, gerbil, traefik, postgres - Running on external VPS) - NixOS 25.11 (Newt - Running in VM)
- Pangolin Version:1.14.1 (image: fosrl/pangolin:postgresql-1.14)
- Gerbil Version: 1.3.0 (image: fosrl/gerbil:1.3.0)
- Traefik Version: 3.5 (image: traefik:v3.5)
- Newt Version: 1.8.1 (image: fosrl/newt)

### To Reproduce

1. Set up a compose and add blueprint labels to enable SSO.
2. Verify blueprint got applied
3. Set at least one sso-user
4. Redeploy your compose
5. Verify sso-users got removed

### Expected Behavior

Only overwrite properties explicitly set in blueprints.
When the
sso-users array is left empty, don't overwrite it.

## Advanced Solution
When removing all previously configured sso-users from the config, it should clear the list.
Basically do a diff from old and new blueprint and apply this.

Old config:
```yaml
- pangolin.public-resources.linkwarden.auth.sso-enabled=true
- pangolin.public-resources.linkwarden.auth.auto-login-idp=1
- pangolin.public-resources.linkwardenauth.sso-users[0]=user1.example.ch
- pangolin.public-resources.linkwardenauth.sso-users[0]=user2.example.ch
```
new config:
```yaml
- pangolin.public-resources.linkwarden.auth.sso-enabled=true
- pangolin.public-resources.linkwarden.auth.auto-login-idp=1
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.