E.showMenu() fails with special character on firmware 2v19

The following snippet which should show a menu entry with a german umlaut
const mainMenu = {};

mainMenu[JSON.parse('"Hello \u00E4"')] = undefined;
E.showMenu(mainMenu);

worked with firmware 2v18:

But fails with firmware 2v19 (up to 2v19.21):

Uncaught Error: Expecting first argument to a valid Image
at line 2 col 337
...r[a];k=g.wrapString(a,b.w-l);1<k.length&&(k=g.setFont("6x15"...
^
in function "draw" called from line 1 col 142
...,{x:a.x,y:m(b),w:a.w,h:d.h});g.setClipRect(0,0,g.getWidth()-...
^
in function "draw" called from line 3 col 339
...w==n},f=e.scroll&-2;e.draw();g.flip();return e
^
in function called from line 1 col 28
p.scroller=E.showScroller(u)
^
at line 1 col 28
p.scroller=E.showScroller(u)
^
in function "t" called from line 8 col 247
....scroller.drawItem(a)}}};t();return p
^
in function called from line 1 col 20
E.showMenu(mainMenu);

Possibly related: I haven't tried to pin it down, but semi-recently messages started showing with missing sections for me. I enabled "Text as Bitmaps" in Gadgetbridge and that seemed to fix my issue. But I'm almost certain I didn't need this setting toggled on to receive complete messages before.

Ok, thanks - if you need to work around it, this works fine: E.showMenu({"Hello \xE4": undefined});
How did this one come up? I thought usually we convert characters that are in the UTF8 code range into the \x.. form now.
The issue appears to be to do with how UTF8 strings are stored when they're object keys - for compatibility we treat \xE4 as a non-UTF8 string.
>trace({'Hello \u00e4': undefined})
#1403[r0,l1] Object {
  #1324[r1,l2] Name String [2 blocks] "\0\0\0\0o \xC3\xA4"    undefined
}

This one could end up being a bit of a pain to sort out since the way we tag strings as being UTF8 isn't really compatible with this. I'll have to have a think how we work around it.
And yes, since we added UTF8 support in Bangle.js, we went through a stage where Gadgetbridge was still sending UTF8 chars (like 0xE4) but Bangle.js had to interpret them as UTF8 (but it was invalid) - but I thought we'd got that fixed now - Gadgetbridge shouldn't be sending those chars and also Bangle.js should treat invalid unicode as normal non-UTF8 data

Just a note that this is hopefully fixed with https://github.com/espruino/Espruino/commit/dde4d3a5ca52782fbe7cefacb18d52d9655b485a now - but I'll need to do a bit more testing

Cool thx, I'll fetch the cutting edge build.
The original bug was seen in noteify, a text with a special character was entered from the webinterface, save as json on the device and shown in the app.

Ok, just checked on a Bangle and this now all seems work work fine - phew!
UTF8 always seems to end up being a bit of a nightmare, and we're not really seeing any of the benefits at the moment. Hopefully soon though :)


[UI] Dex/OIDC Integration

See https://github.com/epinio/epinio/issues/1571 for details

The UI backend needs updating to

Configure mocked norman api response to return OIDC auth provider config
Proxy single sign on requests to the correct epinio API (this may already work using the normal proxy mechanism)

The UI frontend needs to

Ensure that the correct log in page components show
That the users can use the standard single sign on flow
Ensure that epinio api requests contain the correct auth headers

Questions/TBD

~Will the original username/password basic auth process still need to be supported~ Yes

Will the original username/password basic auth process still need to be supported

If we want to kee the BasicAuth and the current authentication we probably just need to add a link to the new auth, something like "Insert Username/Password, or login with SSO". So both of the flows will work.
To avoid having two different login flows we could also decide to drop the username and password login, moving to the new flow. We would just need to document how to migrate the old user into the Dex configuration.
To avoid breaking changes I would probably go for the first option, and see if we want to keep both of them, or starting to deprecate the old one.

I've built and pushed custom thehejik/epinio-ui:oidc-dev image based on the PRs above, then deployed epinio by using the helm-chart PR and patched the original image in epinio-ui deployment with the custom one. So far so good, I could see the new login page providing dex option.

But after pressing Log in with Dex button I was forwarded back to the epinio login page. So I tried to perform dex login over epinio cli which was succesfull. Then I tried dex login over web again but with the same result as before.
@richard-cox please did I miss any step here?
When looking into epinio-ui pod logs I found out it requires endpoints/service http://epinio-server.auth.svc.cluster.local/ which is not present in the cluster:
ERRO[Wed Nov 23 14:26:57 UTC 2022] Failed to create Dex Client: failed to create dex OIDC provider: Get "http://epinio-server.auth.svc.cluster.local/.well-known/openid-configuration": dial tcp: lookup epinio-server.auth.svc.cluster.local: no such host

request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/:///" Status:200 Latency:1.029246ms Bytes-In:0 Bytes-Out:1628
Request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/1ee8649.js" Status:304 Latency:1.526848ms Bytes-In:0 Bytes-Out:0
Request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/d9393c1d97130f7e19f5.js" Status:304 Latency:733.057µs Bytes-In:0 Bytes-Out:0
Request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fd4820f8a3014d153ea0.js" Status:304 Latency:218.694µs Bytes-In:0 Bytes-Out:0
Request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/6ad9448902b91a3f894f.js" Status:304 Latency:230.731µs Bytes-In:0 Bytes-Out:0
Request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:559.738µs Bytes-In:0 Bytes-Out:33572
ERRO[Wed Nov 23 14:26:56 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-11-23T14:26:56.851721857Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/users" Status:401 Latency:253.282µs Bytes-In:0 Bytes-Out:60
ERRO[Wed Nov 23 14:26:56 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-11-23T14:26:56.905808657Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"POST" Path:"/pp/v1/epinio/rancher/v3/tokens" Status:401 Latency:109.814µs Bytes-In:2 Bytes-Out:60
ERRO[Wed Nov 23 14:26:56 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-11-23T14:26:56.909382314Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/principals" Status:401 Latency:97.563µs Bytes-In:0 Bytes-Out:60
Request: [2022-11-23T14:26:56Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/2d02c6d886c12adf7cfe.js" Status:200 Latency:1.417221ms Bytes-In:0 Bytes-Out:44306
Request: [2022-11-23T14:26:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3-public/authProviders" Status:200 Latency:105.219µs Bytes-In:0 Bytes-Out:841
Request: [2022-11-23T14:26:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:245.671µs Bytes-In:0 Bytes-Out:33572
Request: [2022-11-23T14:26:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/8bdb609a93df73cddc5c.js" Status:200 Latency:354.322µs Bytes-In:0 Bytes-Out:520
Request: [2022-11-23T14:26:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/shell/assets/images/pl/login-landscape.svg" Status:304 Latency:228.064µs Bytes-In:0 Bytes-Out:0
Request: [2022-11-23T14:26:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/lato-v17-latin-regular.b4d2c4c.woff2" Status:304 Latency:198.174µs Bytes-In:0 Bytes-Out:0
Request: [2022-11-23T14:26:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/icons.425626d.ttf" Status:304 Latency:146.622µs Bytes-In:0 Bytes-Out:0
ERRO[Wed Nov 23 14:26:57 UTC 2022] Failed to create Dex Client: failed to create dex OIDC provider: Get "http://epinio-server.auth.svc.cluster.local/.well-known/openid-configuration": dial tcp: lookup epinio-server.auth.svc.cluster.local: no such host
creating the provider
github.com/epinio/ui-backend/src/jetstream/dex.NewOIDCProviderWithEndpoint
	/home/sles/git/ui-backend/src/jetstream/dex/dex.go:72
main.(*portalProxy).GetDex
	/home/sles/git/ui-backend/src/jetstream/main.go:1325
github.com/epinio/ui-backend/src/jetstream/plugins/epinio/dex.RedirectUrl
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/dex/api.go:18
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).AddRootGroupRoutes.func6
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:220
main.(*portalProxy).setSecureCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:242
main.(*portalProxy).setSecureCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:242
github.com/labstack/echo/v4.(*Echo).add.func1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/echo.go:520
main.(*portalProxy).urlCheckMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:222
main.(*portalProxy).setStaticCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:230
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).SessionEchoMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:110
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).EchoMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:97
main.retryAfterUpgradeMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:299
main.errorLoggingMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:271
github.com/labstack/echo/v4/middleware.SecureWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/secure.go:142
github.com/labstack/echo/v4/middleware.CORSWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/cors.go:142
github.com/labstack/echo/v4/middleware.RecoverWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/recover.go:119
github.com/labstack/echo/v4/middleware.LoggerWithConfig.func2.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/logger.go:117
main.sessionCleanupMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:201
github.com/labstack/echo/v4.(*Echo).ServeHTTP
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/echo.go:630
net/http.serverHandler.ServeHTTP
	/usr/lib64/go/1.19/src/net/http/server.go:2947
net/http.(*conn).serve
	/usr/lib64/go/1.19/src/net/http/server.go:1991
runtime.goexit
	/usr/lib64/go/1.19/src/runtime/asm_amd64.s:1594
{"time":"2022-11-23T14:26:57.221732456Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=500, message={\"status\":\"error\",\"error\":\"Failed to create Dex Client\"}"}
Request: [2022-11-23T14:26:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/dex/redirectUrl" Status:500 Latency:9.67546ms Bytes-In:0 Bytes-Out:56

List of services present in my cluster:
$ kubectl get svc -A
NAMESPACE      NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
default        kubernetes             ClusterIP      <IP_ADDRESS>       <none>          443/TCP                      73m
cert-manager   cert-manager           ClusterIP      <IP_ADDRESS>   <none>          9402/TCP                     73m
cert-manager   cert-manager-webhook   ClusterIP      <IP_ADDRESS>   <none>          443/TCP                      73m
kube-system    kube-dns               ClusterIP      <IP_ADDRESS>      <none>          53/UDP,53/TCP,9153/TCP       73m
kube-system    metrics-server         ClusterIP      <IP_ADDRESS>   <none>          443/TCP                      73m
kube-system    traefik                LoadBalancer   <IP_ADDRESS>    <IP_ADDRESS>   80:31669/TCP,443:31829/TCP   73m
epinio         minio-svc              ClusterIP      None            <none>          9000/TCP                     52m
epinio         registry               ClusterIP      <IP_ADDRESS>    <none>          5000/TCP                     52m
epinio         dex                    ClusterIP      <IP_ADDRESS>    <none>          5556/TCP,5558/TCP            52m
epinio         epinio-ui              ClusterIP      <IP_ADDRESS>    <none>          80/TCP                       52m
epinio         epinio-server          ClusterIP      <IP_ADDRESS>    <none>          80/TCP                       52m
epinio         minio-console          ClusterIP      <IP_ADDRESS>     <none>          9001/TCP                     52m
epinio         registry-node          NodePort       <IP_ADDRESS>     <none>          30500:30500/TCP              52m
epinio         kubed                  ClusterIP      <IP_ADDRESS>     <none>          443/TCP                      52m
epinio         minio                  ClusterIP      <IP_ADDRESS>    <none>          9000/TCP                     52m

I can't really validate the steps you've taken (they're a little off-piste).
When your ui container starts up what are the log lines around
"Epinio Auth url:

I suspect, if the dex url isn't passed in, the internal epinio api url is getting mangled

When your ui container starts up what are the log lines around
"Epinio Auth url:

Epinio Auth url: 'https://auth.<IP_ADDRESS>.omg.howdoi.website'

I moved a bit forward by setting following ENV in epinio-ui deployment.
		- name: EPINIO_DEX_AUTH_URL
		  value: https://auth.<IP_ADDRESS>.omg.howdoi.website
		- name: EPINIO_API_SKIP_SSL
		  value: "true"

so I setup a github connector in dex-config's config.yaml but then I'm getting another error after pressing Log in with GitHub:

and this is what I had in my dex config.yaml:
staticClients:
...
- id: epinio-ui
  name: 'Epinio UI'
  secret: 'jetstream-dex-epinio-ui'
  # Shouldn't be public, https://dexidp.io/docs/custom-scopes-claims-clients/#public-clients
  redirectURIs:
  - "https://epinio.<IP_ADDRESS>.omg.howdoi.website/verify-auth"

but if I add - "http://epinio-server.epinio.svc.cluster.local/verify-auth" to redirectURIs my browser cannot reach this local cluster URL.

I rebased the chart PR on top of main branch, ran helm package epinio-ui and updated the original epinio-ui-v1.5.1.tgz archive - the changes are reflected because I see the new ENV value set in epinio-ui deployment:
...
      - env:
        - name: ALLOWED_ORIGINS
          value: https://epinio.<IP_ADDRESS>.nip.io
        - name: EPINIO_API_URL
          value: http://epinio-server.epinio.svc.cluster.local
        - name: EPINIO_WSS_URL
          value: ws://epinio-server.epinio.svc.cluster.local
        - name: EPINIO_UI_URL
          value: https://epinio.<IP_ADDRESS>.nip.io
        - name: EPINIO_API_SKIP_SSL
        - name: EPINIO_VERSION
          value: v1.5.1
...

Epinio was installed by helm upgrade --install epinio --namespace epinio ./chart/epinio  --set skipTraefik=true --set global.domain=<IP_ADDRESS>.nip.io --create-namespace
These are logs from epinio-ui pod just after installation:
INFO[Wed Dec 14 13:46:34 UTC 2022] ========================================
INFO[Wed Dec 14 13:46:34 UTC 2022] === Stratos Jetstream Backend Server ===
INFO[Wed Dec 14 13:46:34 UTC 2022] ========================================
INFO[Wed Dec 14 13:46:34 UTC 2022]
INFO[Wed Dec 14 13:46:34 UTC 2022] Initialization started.
INFO[Wed Dec 14 13:46:34 UTC 2022] Setting log level to: info
INFO[Wed Dec 14 13:46:34 UTC 2022] Configuration loaded.
INFO[Wed Dec 14 13:46:34 UTC 2022] Stratos Version: v99.0.0
INFO[Wed Dec 14 13:46:34 UTC 2022] HTTP client initialized.
INFO[Wed Dec 14 13:46:34 UTC 2022] Encryption key set.
INFO[Wed Dec 14 13:46:34 UTC 2022] SQLite Database file: console-database.db
INFO[Wed Dec 14 13:46:34 UTC 2022] Database appears to now be available.
INFO[Wed Dec 14 13:46:34 UTC 2022] Database connection pool created.
INFO[Wed Dec 14 13:46:34 UTC 2022] Session Store Secret detected okay
INFO[Wed Dec 14 13:46:34 UTC 2022] ========================
INFO[Wed Dec 14 13:46:34 UTC 2022] = Stratos DB Migration =
INFO[Wed Dec 14 13:46:34 UTC 2022] ========================
INFO[Wed Dec 14 13:46:34 UTC 2022] Database provider: sqlite3
INFO[Wed Dec 14 13:46:34 UTC 2022] Current 0
INFO[Wed Dec 14 13:46:34 UTC 2022] Target:<PHONE_NUMBER>2200
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migrations ....
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>0003_InitialSchema
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>2837_SetupSchema
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>4900_TokenDisconnected
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>2900_AuthType
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>5700_MetricsSchema
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>1300_UpdateMetadata
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>2800_SetupSchema
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>0300_RemoveStaleTokens
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>2600_LinkedTokens
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>4300_SSOEndpointFlag
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>3000_SSOSetupFlag
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>0500_UserFavorites
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>4600_EndpointSubtype
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>3200_AuthEndpoint
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>1200_LocalUsers
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>2700_ConfigSchema
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>2300_LocalUsersUpdates
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>2500_LocalUsersTriggerFix
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>1900_PrimaryKeys
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>2200_SesssionData
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>0918_ApiKeys
INFO[Wed Dec 14 13:46:34 UTC 2022] Running migration:<PHONE_NUMBER>2200_HelmSubtype
INFO[Wed Dec 14 13:46:34 UTC 2022] Session expiration (minutes): 1440
INFO[Wed Dec 14 13:46:34 UTC 2022] Session Cookie Domain:
INFO[Wed Dec 14 13:46:34 UTC 2022] Creating SQLite session store
INFO[Wed Dec 14 13:46:34 UTC 2022] Session store initialized.
INFO[Wed Dec 14 13:46:34 UTC 2022] Session data store initialized.
INFO[Wed Dec 14 13:46:34 UTC 2022] Session Cookie name: console-session
INFO[Wed Dec 14 13:46:34 UTC 2022] Initialization complete.
INFO[Wed Dec 14 13:46:34 UTC 2022] Migrating setup data to config store
INFO[Wed Dec 14 13:46:34 UTC 2022] Can not migrate setup data - setup table is empty
INFO[Wed Dec 14 13:46:34 UTC 2022] Initialising plugins
ERRO[Wed Dec 14 13:46:34 UTC 2022] Can't generate plugins from YAML: open plugins.yaml: no such file or directory
INFO[Wed Dec 14 13:46:34 UTC 2022] Didn't find `EPINIO_DEX_AUTH_URL`, falling back to `http://epinio-server.auth.svc.cluster.local`
INFO[Wed Dec 14 13:46:34 UTC 2022]
Epinio API url: 'http://epinio-server.epinio.svc.cluster.local'
Epinio WSS url: 'ws://epinio-server.epinio.svc.cluster.local'
Epinio Auth url: 'http://epinio-server.auth.svc.cluster.local'
Epinio UI url: 'https://epinio.<IP_ADDRESS>.nip.io'
Skipping SSL Validation: 'false'
INFO[Wed Dec 14 13:46:34 UTC 2022] Loaded plugin: epinio
INFO[Wed Dec 14 13:46:34 UTC 2022] Loaded plugin: userfavorites
ERRO[Wed Dec 14 13:46:34 UTC 2022] failed to find an epinio endpoint
INFO[Wed Dec 14 13:46:34 UTC 2022] Auto-registering epinio endpoint http://epinio-server.epinio.svc.cluster.local as "default" (ZThhPrryoUeUuimbk4Gb-G3-I9A)
INFO[Wed Dec 14 13:46:34 UTC 2022] Plugins initialized
INFO[Wed Dec 14 13:46:34 UTC 2022] Stratos is initialized with the following setup:
INFO[Wed Dec 14 13:46:34 UTC 2022] ... Auth Endpoint Type      : epinio
INFO[Wed Dec 14 13:46:34 UTC 2022] ... Epinio Auth             : true
INFO[Wed Dec 14 13:46:34 UTC 2022] ... Skip SSL Validation     : false
INFO[Wed Dec 14 13:46:34 UTC 2022] ... Setup Complete          : true
INFO[Wed Dec 14 13:46:34 UTC 2022] SSO Configuration:
INFO[Wed Dec 14 13:46:34 UTC 2022] ... SSO Enabled             : false
INFO[Wed Dec 14 13:46:34 UTC 2022] ... SSO Options             :
INFO[Wed Dec 14 13:46:34 UTC 2022] ... SSO Redirect Allow-list :
INFO[Wed Dec 14 13:46:34 UTC 2022] Storing Diagnostics
INFO[Wed Dec 14 13:46:34 UTC 2022] Serving static UI resources
INFO[Wed Dec 14 13:46:34 UTC 2022] Starting HTTP Server at address: <IP_ADDRESS>:8000

@thehejik Were you able to log in via Dex? I don't see any obvious error?

No, I wasn't able, once I clicked on Login over DEX I was returned back to Login page.
Following looks wrong, it's using non-existing internal endpoint http://epinio-server.auth.svc.cluster.local but correct internal ep would be IMO http://dex.epinio.svc.cluster.local:
Can't generate plugins from YAML: open plugins.yaml: no such file or directory
INFO[Wed Dec 14 13:46:34 UTC 2022] Didn't find `EPINIO_DEX_AUTH_URL`, falling back to `http://epinio-server.auth.svc.cluster.local`
INFO[Wed Dec 14 13:46:34 UTC 2022]
Epinio API url: 'http://epinio-server.epinio.svc.cluster.local'
Epinio WSS url: 'ws://epinio-server.epinio.svc.cluster.local'
Epinio Auth url: 'http://epinio-server.auth.svc.cluster.local'
Epinio UI url: 'https://epinio.<IP_ADDRESS>.nip.io'
Skipping SSL Validation: 'false'

What were the UI backend logs for when the log in attempt was made, and were there any errors in the browser's network tab?
The http://epinio-server.auth.svc.cluster.local style address was working when I implemented this, maybe there was a change epinio side?
The workaround for this might just be to add something like below to the ui chart
        - name: EPINIO_DEX_AUTH_URL
          value: {{ default (printf "http://dex.%s.svc.cluster.local" .Release.Namespace) .Values.epinioAPIURL }}

It didn't help, complete ui logs incl. attempt to login via DEX follows, I was returned to login page again.

Click here to expand the logs

INFO[Thu Dec 15 15:45:34 UTC 2022] ========================================
INFO[Thu Dec 15 15:45:34 UTC 2022] === Stratos Jetstream Backend Server ===
INFO[Thu Dec 15 15:45:34 UTC 2022] ========================================
INFO[Thu Dec 15 15:45:34 UTC 2022]
INFO[Thu Dec 15 15:45:34 UTC 2022] Initialization started.
INFO[Thu Dec 15 15:45:34 UTC 2022] Setting log level to: info
INFO[Thu Dec 15 15:45:34 UTC 2022] Configuration loaded.
INFO[Thu Dec 15 15:45:34 UTC 2022] Stratos Version: v99.0.0
INFO[Thu Dec 15 15:45:34 UTC 2022] HTTP client initialized.
INFO[Thu Dec 15 15:45:34 UTC 2022] Encryption key set.
INFO[Thu Dec 15 15:45:34 UTC 2022] SQLite Database file: console-database.db
INFO[Thu Dec 15 15:45:34 UTC 2022] Database appears to now be available.
INFO[Thu Dec 15 15:45:34 UTC 2022] Database connection pool created.
INFO[Thu Dec 15 15:45:34 UTC 2022] Session Store Secret detected okay
INFO[Thu Dec 15 15:45:34 UTC 2022] ========================
INFO[Thu Dec 15 15:45:34 UTC 2022] = Stratos DB Migration =
INFO[Thu Dec 15 15:45:34 UTC 2022] ========================
INFO[Thu Dec 15 15:45:34 UTC 2022] Database provider: sqlite3
INFO[Thu Dec 15 15:45:34 UTC 2022] Current 0
INFO[Thu Dec 15 15:45:34 UTC 2022] Target:<PHONE_NUMBER>2200
INFO[Thu Dec 15 15:45:34 UTC 2022] Running migrations ....

INFO[Thu Dec 15 15:45:34 UTC 2022] Session data store initialized.
INFO[Thu Dec 15 15:45:34 UTC 2022] Session Cookie name: console-session
INFO[Thu Dec 15 15:45:34 UTC 2022] Initialization complete.
INFO[Thu Dec 15 15:45:34 UTC 2022] Migrating setup data to config store
INFO[Thu Dec 15 15:45:34 UTC 2022] Can not migrate setup data - setup table is empty
INFO[Thu Dec 15 15:45:34 UTC 2022] Initialising plugins
ERRO[Thu Dec 15 15:45:34 UTC 2022] Can't generate plugins from YAML: open plugins.yaml: no such file or directory
INFO[Thu Dec 15 15:45:34 UTC 2022]
Epinio API url: 'http://epinio-server.epinio.svc.cluster.local'
Epinio WSS url: 'ws://epinio-server.epinio.svc.cluster.local'
Epinio Auth url: 'http://dex.epinio.svc.cluster.local'
Epinio UI url: 'https://epinio.<IP_ADDRESS>.nip.io'
Skipping SSL Validation: 'false'
INFO[Thu Dec 15 15:45:34 UTC 2022] Loaded plugin: epinio
INFO[Thu Dec 15 15:45:34 UTC 2022] Loaded plugin: userfavorites
ERRO[Thu Dec 15 15:45:34 UTC 2022] failed to find an epinio endpoint
INFO[Thu Dec 15 15:45:34 UTC 2022] Auto-registering epinio endpoint http://epinio-server.epinio.svc.cluster.local as "default" (ZThhPrryoUeUuimbk4Gb-G3-I9A)
INFO[Thu Dec 15 15:45:34 UTC 2022] Plugins initialized
INFO[Thu Dec 15 15:45:34 UTC 2022] Stratos is initialized with the following setup:
INFO[Thu Dec 15 15:45:34 UTC 2022] ... Auth Endpoint Type      : epinio
INFO[Thu Dec 15 15:45:34 UTC 2022] ... Epinio Auth             : true
INFO[Thu Dec 15 15:45:34 UTC 2022] ... Skip SSL Validation     : false
INFO[Thu Dec 15 15:45:34 UTC 2022] ... Setup Complete          : true
INFO[Thu Dec 15 15:45:34 UTC 2022] SSO Configuration:
INFO[Thu Dec 15 15:45:34 UTC 2022] ... SSO Enabled             : false
INFO[Thu Dec 15 15:45:34 UTC 2022] ... SSO Options             :
INFO[Thu Dec 15 15:45:34 UTC 2022] ... SSO Redirect Allow-list :
INFO[Thu Dec 15 15:45:34 UTC 2022] Storing Diagnostics
INFO[Thu Dec 15 15:45:34 UTC 2022] Serving static UI resources
INFO[Thu Dec 15 15:45:34 UTC 2022] Starting HTTP Server at address: <IP_ADDRESS>:8000
Request: [2022-12-15T15:46:04Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/" Status:200 Latency:1.222808ms Bytes-In:0 Bytes-Out:1628
Request: [2022-12-15T15:46:04Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/32d4fa2.js" Status:200 Latency:698.049µs Bytes-In:0 Bytes-Out:5614
Request: [2022-12-15T15:46:04Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/9612c993c818b54654e6.js" Status:200 Latency:17.909858ms Bytes-In:0 Bytes-Out:285526
Request: [2022-12-15T15:46:04Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/e1ce16294c3abbc329e4.js" Status:200 Latency:102.628561ms Bytes-In:0 Bytes-Out:1908773
Request: [2022-12-15T15:46:05Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/f4e3def3f733ae290120.js" Status:200 Latency:320.286615ms Bytes-In:0 Bytes-Out:9955727
Request: [2022-12-15T15:46:05Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/bd3b95dee2d6560ec319.js" Status:200 Latency:461.164µs Bytes-In:0 Bytes-Out:791
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:655.098µs Bytes-In:0 Bytes-Out:33500
ERRO[Thu Dec 15 15:46:06 UTC 2022] User session could not be found: securecookie: the value is not valid
{"time":"2022-12-15T15:46:06.253447755Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/users" Status:401 Latency:228.113µs Bytes-In:0 Bytes-Out:60
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/favicon.png" Status:200 Latency:1.01591ms Bytes-In:0 Bytes-Out:759
ERRO[Thu Dec 15 15:46:06 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-15T15:46:06.285257824Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/principals" Status:401 Latency:181.964µs Bytes-In:0 Bytes-Out:60
ERRO[Thu Dec 15 15:46:06 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-15T15:46:06.285507994Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"POST" Path:"/pp/v1/epinio/rancher/v3/tokens" Status:401 Latency:61.716µs Bytes-In:2 Bytes-Out:60
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/2463fffff3150156856b.js" Status:200 Latency:1.522352ms Bytes-In:0 Bytes-Out:44298
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3-public/authProviders" Status:200 Latency:199.843µs Bytes-In:0 Bytes-Out:781
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:250.936µs Bytes-In:0 Bytes-Out:33500
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/ba5ddf4cbe7c4451b0d3.js" Status:200 Latency:263.512µs Bytes-In:0 Bytes-Out:540
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/shell/assets/images/pl/login-landscape.svg" Status:200 Latency:1.712294ms Bytes-In:0 Bytes-Out:34525
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/icons.425626d.ttf" Status:200 Latency:1.479098ms Bytes-In:0 Bytes-Out:19556
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/lato-v17-latin-regular.b4d2c4c.woff2" Status:200 Latency:4.00102ms Bytes-In:0 Bytes-Out:23484
ERRO[Thu Dec 15 15:46:06 UTC 2022] Failed to create Dex Client: failed to create dex OIDC provider: Get "http://dex.epinio.svc.cluster.local/.well-known/openid-configuration": dial tcp <IP_ADDRESS>:80: connect: no route to host
creating the provider
github.com/epinio/ui-backend/src/jetstream/dex.NewOIDCProviderWithEndpoint
	/home/sles/git/ui-backend/src/jetstream/dex/dex.go:72
main.(*portalProxy).GetDex
	/home/sles/git/ui-backend/src/jetstream/main.go:1325
github.com/epinio/ui-backend/src/jetstream/plugins/epinio/dex.RedirectUrl
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/dex/api.go:18
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).AddRootGroupRoutes.func6
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:220
main.(*portalProxy).setSecureCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:242
main.(*portalProxy).setSecureCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:242
github.com/labstack/echo/v4.(*Echo).add.func1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/echo.go:520
main.(*portalProxy).urlCheckMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:222
main.(*portalProxy).setStaticCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:230
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).SessionEchoMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:110
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).EchoMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:97
main.retryAfterUpgradeMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:299
main.errorLoggingMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:271
github.com/labstack/echo/v4/middleware.SecureWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/secure.go:142
github.com/labstack/echo/v4/middleware.CORSWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/cors.go:142
github.com/labstack/echo/v4/middleware.RecoverWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/recover.go:119
github.com/labstack/echo/v4/middleware.LoggerWithConfig.func2.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/logger.go:117
main.sessionCleanupMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:201
github.com/labstack/echo/v4.(*Echo).ServeHTTP
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/echo.go:630
net/http.serverHandler.ServeHTTP
	/usr/lib64/go/1.19/src/net/http/server.go:2947
net/http.(*conn).serve
	/usr/lib64/go/1.19/src/net/http/server.go:1991
runtime.goexit
	/usr/lib64/go/1.19/src/runtime/asm_amd64.s:1594
{"time":"2022-12-15T15:46:06.487608884Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=500, message={\"status\":\"error\",\"error\":\"Failed to create Dex Client\"}"}
Request: [2022-12-15T15:46:06Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/dex/redirectUrl" Status:500 Latency:4.676522ms Bytes-In:0 Bytes-Out:56
Request: [2022-12-15T15:46:09Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/:///" Status:200 Latency:318.993µs Bytes-In:0 Bytes-Out:1628
Request: [2022-12-15T15:46:09Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/9612c993c818b54654e6.js" Status:304 Latency:229.508µs Bytes-In:0 Bytes-Out:0
Request: [2022-12-15T15:46:09Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/32d4fa2.js" Status:304 Latency:165.512µs Bytes-In:0 Bytes-Out:0
Request: [2022-12-15T15:46:09Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/e1ce16294c3abbc329e4.js" Status:304 Latency:273.07µs Bytes-In:0 Bytes-Out:0
Request: [2022-12-15T15:46:09Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/f4e3def3f733ae290120.js" Status:304 Latency:141.864µs Bytes-In:0 Bytes-Out:0
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:297.969µs Bytes-In:0 Bytes-Out:33500
ERRO[Thu Dec 15 15:46:10 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-15T15:46:10.439538661Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/users" Status:401 Latency:101.305µs Bytes-In:0 Bytes-Out:60
ERRO[Thu Dec 15 15:46:10 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-15T15:46:10.453304619Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"POST" Path:"/pp/v1/epinio/rancher/v3/tokens" Status:401 Latency:106.248µs Bytes-In:2 Bytes-Out:60
ERRO[Thu Dec 15 15:46:10 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-15T15:46:10.453657895Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/principals" Status:401 Latency:90.076µs Bytes-In:0 Bytes-Out:60
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/2463fffff3150156856b.js" Status:200 Latency:1.319675ms Bytes-In:0 Bytes-Out:44298
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3-public/authProviders" Status:200 Latency:69.238µs Bytes-In:0 Bytes-Out:781
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:289.243µs Bytes-In:0 Bytes-Out:33500
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/ba5ddf4cbe7c4451b0d3.js" Status:200 Latency:244.581µs Bytes-In:0 Bytes-Out:540
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/shell/assets/images/pl/login-landscape.svg" Status:304 Latency:217.3µs Bytes-In:0 Bytes-Out:0
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/icons.425626d.ttf" Status:304 Latency:239.954µs Bytes-In:0 Bytes-Out:0
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/lato-v17-latin-regular.b4d2c4c.woff2" Status:304 Latency:229.975µs Bytes-In:0 Bytes-Out:0
ERRO[Thu Dec 15 15:46:10 UTC 2022] Failed to create Dex Client: failed to create dex OIDC provider: Get "http://dex.epinio.svc.cluster.local/.well-known/openid-configuration": dial tcp <IP_ADDRESS>:80: connect: no route to host
creating the provider
github.com/epinio/ui-backend/src/jetstream/dex.NewOIDCProviderWithEndpoint
	/home/sles/git/ui-backend/src/jetstream/dex/dex.go:72
main.(*portalProxy).GetDex
	/home/sles/git/ui-backend/src/jetstream/main.go:1325
github.com/epinio/ui-backend/src/jetstream/plugins/epinio/dex.RedirectUrl
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/dex/api.go:18
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).AddRootGroupRoutes.func6
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:220
main.(*portalProxy).setSecureCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:242
main.(*portalProxy).setSecureCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:242
github.com/labstack/echo/v4.(*Echo).add.func1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/echo.go:520
main.(*portalProxy).urlCheckMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:222
main.(*portalProxy).setStaticCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:230
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).SessionEchoMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:110
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).EchoMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:97
main.retryAfterUpgradeMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:299
main.errorLoggingMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:271
github.com/labstack/echo/v4/middleware.SecureWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/secure.go:142
github.com/labstack/echo/v4/middleware.CORSWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/cors.go:142
github.com/labstack/echo/v4/middleware.RecoverWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/recover.go:119
github.com/labstack/echo/v4/middleware.LoggerWithConfig.func2.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/logger.go:117
main.sessionCleanupMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:201
github.com/labstack/echo/v4.(*Echo).ServeHTTP
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/echo.go:630
net/http.serverHandler.ServeHTTP
	/usr/lib64/go/1.19/src/net/http/server.go:2947
net/http.(*conn).serve
	/usr/lib64/go/1.19/src/net/http/server.go:1991
runtime.goexit
	/usr/lib64/go/1.19/src/runtime/asm_amd64.s:1594
{"time":"2022-12-15T15:46:10.618450815Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=500, message={\"status\":\"error\",\"error\":\"Failed to create Dex Client\"}"}
Request: [2022-12-15T15:46:10Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/dex/redirectUrl" Status:500 Latency:2.996459ms Bytes-In:0 Bytes-Out:56

@thehejik  I've updated the helm chart following the discussion in slack, should be ready to test again

@richard-cox doesn't work, I was redirected back to login page on attempt to login over DEX:
Now this seems to be a problem:
ERRO[Fri Dec 16 10:50:43 UTC 2022] Failed to create Dex Client: failed to create dex OIDC provider: oidc: issuer did not match the issuer returned by provider, expected "http://dex.epinio.svc.cluster.local:5556" got "https://auth.<IP_ADDRESS>.nip.io"

Click here to expand full logs

INFO[Fri Dec 16 10:50:08 UTC 2022] ========================================
INFO[Fri Dec 16 10:50:08 UTC 2022] === Stratos Jetstream Backend Server ===
INFO[Fri Dec 16 10:50:08 UTC 2022] ========================================
INFO[Fri Dec 16 10:50:08 UTC 2022]
INFO[Fri Dec 16 10:50:08 UTC 2022] Initialization started.
INFO[Fri Dec 16 10:50:08 UTC 2022] Setting log level to: info
INFO[Fri Dec 16 10:50:08 UTC 2022] Configuration loaded.
INFO[Fri Dec 16 10:50:08 UTC 2022] Stratos Version: v99.0.0
INFO[Fri Dec 16 10:50:08 UTC 2022] HTTP client initialized.
INFO[Fri Dec 16 10:50:08 UTC 2022] Encryption key set.
INFO[Fri Dec 16 10:50:08 UTC 2022] SQLite Database file: console-database.db
INFO[Fri Dec 16 10:50:08 UTC 2022] Database appears to now be available.
INFO[Fri Dec 16 10:50:08 UTC 2022] Database connection pool created.
INFO[Fri Dec 16 10:50:08 UTC 2022] Session Store Secret detected okay
INFO[Fri Dec 16 10:50:08 UTC 2022] ========================
INFO[Fri Dec 16 10:50:08 UTC 2022] = Stratos DB Migration =
INFO[Fri Dec 16 10:50:08 UTC 2022] ========================
INFO[Fri Dec 16 10:50:08 UTC 2022] Database provider: sqlite3
INFO[Fri Dec 16 10:50:08 UTC 2022] Current 0
INFO[Fri Dec 16 10:50:08 UTC 2022] Target:<PHONE_NUMBER>2200
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migrations ....
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>0003_InitialSchema
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>2837_SetupSchema
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>4900_TokenDisconnected
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>2900_AuthType
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>5700_MetricsSchema
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>1300_UpdateMetadata
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>2800_SetupSchema
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>0300_RemoveStaleTokens
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>2600_LinkedTokens
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>4300_SSOEndpointFlag
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>3000_SSOSetupFlag
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>0500_UserFavorites
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>4600_EndpointSubtype
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>3200_AuthEndpoint
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>1200_LocalUsers
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>2700_ConfigSchema
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>2300_LocalUsersUpdates
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>2500_LocalUsersTriggerFix
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>1900_PrimaryKeys
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>2200_SesssionData
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>0918_ApiKeys
INFO[Fri Dec 16 10:50:08 UTC 2022] Running migration:<PHONE_NUMBER>2200_HelmSubtype
INFO[Fri Dec 16 10:50:08 UTC 2022] Session expiration (minutes): 1440
INFO[Fri Dec 16 10:50:08 UTC 2022] Session Cookie Domain:
INFO[Fri Dec 16 10:50:08 UTC 2022] Creating SQLite session store
INFO[Fri Dec 16 10:50:08 UTC 2022] Session store initialized.
INFO[Fri Dec 16 10:50:08 UTC 2022] Session data store initialized.
INFO[Fri Dec 16 10:50:08 UTC 2022] Session Cookie name: console-session
INFO[Fri Dec 16 10:50:08 UTC 2022] Initialization complete.
INFO[Fri Dec 16 10:50:08 UTC 2022] Migrating setup data to config store
INFO[Fri Dec 16 10:50:08 UTC 2022] Can not migrate setup data - setup table is empty
INFO[Fri Dec 16 10:50:08 UTC 2022] Initialising plugins
ERRO[Fri Dec 16 10:50:08 UTC 2022] Can't generate plugins from YAML: open plugins.yaml: no such file or directory
INFO[Fri Dec 16 10:50:08 UTC 2022]
Epinio API url: 'http://epinio-server.epinio.svc.cluster.local'
Epinio WSS url: 'ws://epinio-server.epinio.svc.cluster.local'
Epinio Auth url: 'http://dex.epinio.svc.cluster.local:5556'
Epinio UI url: 'https://epinio.<IP_ADDRESS>.nip.io'
Skipping SSL Validation: 'false'
INFO[Fri Dec 16 10:50:08 UTC 2022] Loaded plugin: epinio
INFO[Fri Dec 16 10:50:08 UTC 2022] Loaded plugin: userfavorites
ERRO[Fri Dec 16 10:50:08 UTC 2022] failed to find an epinio endpoint
INFO[Fri Dec 16 10:50:08 UTC 2022] Auto-registering epinio endpoint http://epinio-server.epinio.svc.cluster.local as "default" (ZThhPrryoUeUuimbk4Gb-G3-I9A)
INFO[Fri Dec 16 10:50:08 UTC 2022] Plugins initialized
INFO[Fri Dec 16 10:50:08 UTC 2022] Stratos is initialized with the following setup:
INFO[Fri Dec 16 10:50:08 UTC 2022] ... Auth Endpoint Type      : epinio
INFO[Fri Dec 16 10:50:08 UTC 2022] ... Epinio Auth             : true
INFO[Fri Dec 16 10:50:08 UTC 2022] ... Skip SSL Validation     : false
INFO[Fri Dec 16 10:50:08 UTC 2022] ... Setup Complete          : true
INFO[Fri Dec 16 10:50:08 UTC 2022] SSO Configuration:
INFO[Fri Dec 16 10:50:08 UTC 2022] ... SSO Enabled             : false
INFO[Fri Dec 16 10:50:08 UTC 2022] ... SSO Options             :
INFO[Fri Dec 16 10:50:08 UTC 2022] ... SSO Redirect Allow-list :
INFO[Fri Dec 16 10:50:08 UTC 2022] Storing Diagnostics
INFO[Fri Dec 16 10:50:08 UTC 2022] Serving static UI resources
INFO[Fri Dec 16 10:50:08 UTC 2022] Starting HTTP Server at address: <IP_ADDRESS>:8000
Request: [2022-12-16T10:50:42Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/:///" Status:200 Latency:926.457µs Bytes-In:0 Bytes-Out:1628
Request: [2022-12-16T10:50:42Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/32d4fa2.js" Status:304 Latency:383.978µs Bytes-In:0 Bytes-Out:0
Request: [2022-12-16T10:50:42Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/e1ce16294c3abbc329e4.js" Status:304 Latency:1.771587ms Bytes-In:0 Bytes-Out:0
Request: [2022-12-16T10:50:42Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/9612c993c818b54654e6.js" Status:304 Latency:3.46033ms Bytes-In:0 Bytes-Out:0
Request: [2022-12-16T10:50:42Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/f4e3def3f733ae290120.js" Status:304 Latency:1.966975ms Bytes-In:0 Bytes-Out:0
Request: [2022-12-16T10:50:42Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:551.044µs Bytes-In:0 Bytes-Out:33500
ERRO[Fri Dec 16 10:50:43 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-16T10:50:43.088166166Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/users" Status:401 Latency:278.444µs Bytes-In:0 Bytes-Out:60
ERRO[Fri Dec 16 10:50:43 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-16T10:50:43.127262621Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"POST" Path:"/pp/v1/epinio/rancher/v3/tokens" Status:401 Latency:136.486µs Bytes-In:2 Bytes-Out:60
ERRO[Fri Dec 16 10:50:43 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-16T10:50:43.128312869Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/principals" Status:401 Latency:71.393µs Bytes-In:0 Bytes-Out:60
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/2463fffff3150156856b.js" Status:200 Latency:1.526334ms Bytes-In:0 Bytes-Out:44298
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3-public/authProviders" Status:200 Latency:112.929µs Bytes-In:0 Bytes-Out:781
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:236.603µs Bytes-In:0 Bytes-Out:33500
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/ba5ddf4cbe7c4451b0d3.js" Status:200 Latency:794.767µs Bytes-In:0 Bytes-Out:540
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/shell/assets/images/pl/login-landscape.svg" Status:304 Latency:263.116µs Bytes-In:0 Bytes-Out:0
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/icons.425626d.ttf" Status:304 Latency:315.383µs Bytes-In:0 Bytes-Out:0
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/lato-v17-latin-regular.b4d2c4c.woff2" Status:304 Latency:1.165091ms Bytes-In:0 Bytes-Out:0
ERRO[Fri Dec 16 10:50:43 UTC 2022] Failed to create Dex Client: failed to create dex OIDC provider: oidc: issuer did not match the issuer returned by provider, expected "http://dex.epinio.svc.cluster.local:5556" got "https://auth.<IP_ADDRESS>.nip.io"
creating the provider
github.com/epinio/ui-backend/src/jetstream/dex.NewOIDCProviderWithEndpoint
	/home/sles/git/ui-backend/src/jetstream/dex/dex.go:72
main.(*portalProxy).GetDex
	/home/sles/git/ui-backend/src/jetstream/main.go:1325
github.com/epinio/ui-backend/src/jetstream/plugins/epinio/dex.RedirectUrl
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/dex/api.go:18
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).AddRootGroupRoutes.func6
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:220
main.(*portalProxy).setSecureCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:242
main.(*portalProxy).setSecureCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:242
github.com/labstack/echo/v4.(*Echo).add.func1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/echo.go:520
main.(*portalProxy).urlCheckMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:222
main.(*portalProxy).setStaticCacheContentMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:230
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).SessionEchoMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:110
github.com/epinio/ui-backend/src/jetstream/plugins/epinio.(*Epinio).EchoMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/plugins/epinio/main.go:97
main.retryAfterUpgradeMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:299
main.errorLoggingMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:271
github.com/labstack/echo/v4/middleware.SecureWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/secure.go:142
github.com/labstack/echo/v4/middleware.CORSWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/cors.go:142
github.com/labstack/echo/v4/middleware.RecoverWithConfig.func1.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/recover.go:119
github.com/labstack/echo/v4/middleware.LoggerWithConfig.func2.1
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/middleware/logger.go:117
main.sessionCleanupMiddleware.func1
	/home/sles/git/ui-backend/src/jetstream/middleware.go:201
github.com/labstack/echo/v4.(*Echo).ServeHTTP
	/home/sles/go/pkg/mod/github.com/labstack/echo/v4@v4.7.2/echo.go:630
net/http.serverHandler.ServeHTTP
	/usr/lib64/go/1.19/src/net/http/server.go:2947
net/http.(*conn).serve
	/usr/lib64/go/1.19/src/net/http/server.go:1991
runtime.goexit
	/usr/lib64/go/1.19/src/runtime/asm_amd64.s:1594
{"time":"2022-12-16T10:50:43.381914918Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=500, message={\"status\":\"error\",\"error\":\"Failed to create Dex Client\"}"}
Request: [2022-12-16T10:50:43Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/dex/redirectUrl" Status:500 Latency:7.85122ms Bytes-In:0 Bytes-Out:56

Ok, last attempt before I switch back and dive in to code (this is burning a lot of your time).
There's something that's not aligning, but if the auth url should match the public something like this could work
        - name: EPINIO_DEX_AUTH_URL
          value: {{ default (printf "https://auth.%s" .Values.global.domain) .Values.epinioDexURL }}

If you see the dex.yaml file that we have to setup the client we had to split the issuer URL from the actual URL used to reach the instance, I guess it's the same issue that you are facing:
https://github.com/epinio/helm-charts/blob/ef8621b543d8db0ae0daa5c932627116ea9c0378/chart/epinio/templates/dex.yaml#L12-L13
https://github.com/epinio/epinio/blob/794fcb049c41687ff3834c6e80409f070adb9654/internal/dex/dex.go#L43-L50

@thehejik What flavour of k8s are you using?

Single-node k3s 1.24.x with Traefik Ingress Controller

Ok, last attempt before I switch back and dive in to code (this is burning a lot of your time).
There's something that's not aligning, but if the auth url should match the public something like this could work
        - name: EPINIO_DEX_AUTH_URL
          value: {{ default (printf "https://auth.%s" .Values.global.domain) .Values.epinioDexURL }}

Even that didn't work. It failed on certificate error:
ERRO[Fri Dec 16 11:41:18 UTC 2022] Failed to create Dex Client: failed to create dex OIDC provider: Get "https://auth.<IP_ADDRESS>.nip.io/.well-known/openid-configuration": x509: certificate signed by unknown authority
creating the provider

So I set in addition this in chart/epinio-ui/templates/server.yaml:
         - name: EPINIO_API_SKIP_SSL
-          value: {{ .Values.epinioAPISkipSSL | quote }}
+          value: {{ default "true" .Values.epinioAPISkipSSL | quote }}

I moved a bit forward, I was redirected to DEX page, then I use preconfigured email account and Pressed Grant Access but I was forwarded back to the epinio login page which is showing red string Log in again to continue..

Full logs with `EPINIO_API_SKIP_SSL=true` here

INFO[Fri Dec 16 11:48:22 UTC 2022] ========================================
INFO[Fri Dec 16 11:48:22 UTC 2022] === Stratos Jetstream Backend Server ===
INFO[Fri Dec 16 11:48:22 UTC 2022] ========================================
INFO[Fri Dec 16 11:48:22 UTC 2022]
INFO[Fri Dec 16 11:48:22 UTC 2022] Initialization started.
INFO[Fri Dec 16 11:48:22 UTC 2022] Setting log level to: info
INFO[Fri Dec 16 11:48:22 UTC 2022] Configuration loaded.
INFO[Fri Dec 16 11:48:22 UTC 2022] Stratos Version: v99.0.0
INFO[Fri Dec 16 11:48:22 UTC 2022] HTTP client initialized.
INFO[Fri Dec 16 11:48:22 UTC 2022] Encryption key set.
INFO[Fri Dec 16 11:48:22 UTC 2022] SQLite Database file: console-database.db
INFO[Fri Dec 16 11:48:22 UTC 2022] Database appears to now be available.
INFO[Fri Dec 16 11:48:22 UTC 2022] Database connection pool created.
INFO[Fri Dec 16 11:48:22 UTC 2022] Session Store Secret detected okay
INFO[Fri Dec 16 11:48:22 UTC 2022] ========================
INFO[Fri Dec 16 11:48:22 UTC 2022] = Stratos DB Migration =
INFO[Fri Dec 16 11:48:22 UTC 2022] ========================
INFO[Fri Dec 16 11:48:22 UTC 2022] Database provider: sqlite3
INFO[Fri Dec 16 11:48:22 UTC 2022] Current 0
INFO[Fri Dec 16 11:48:22 UTC 2022] Target:<PHONE_NUMBER>2200
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migrations ....
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>0003_InitialSchema
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>2837_SetupSchema
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>4900_TokenDisconnected
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>2900_AuthType
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>5700_MetricsSchema
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>1300_UpdateMetadata
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>2800_SetupSchema
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>0300_RemoveStaleTokens
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>2600_LinkedTokens
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>4300_SSOEndpointFlag
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>3000_SSOSetupFlag
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>0500_UserFavorites
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>4600_EndpointSubtype
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>3200_AuthEndpoint
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>1200_LocalUsers
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>2700_ConfigSchema
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>2300_LocalUsersUpdates
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>2500_LocalUsersTriggerFix
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>1900_PrimaryKeys
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>2200_SesssionData
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>0918_ApiKeys
INFO[Fri Dec 16 11:48:22 UTC 2022] Running migration:<PHONE_NUMBER>2200_HelmSubtype
INFO[Fri Dec 16 11:48:22 UTC 2022] Session expiration (minutes): 1440
INFO[Fri Dec 16 11:48:22 UTC 2022] Session Cookie Domain:
INFO[Fri Dec 16 11:48:22 UTC 2022] Creating SQLite session store
INFO[Fri Dec 16 11:48:22 UTC 2022] Session store initialized.
INFO[Fri Dec 16 11:48:22 UTC 2022] Session data store initialized.
INFO[Fri Dec 16 11:48:22 UTC 2022] Session Cookie name: console-session
INFO[Fri Dec 16 11:48:22 UTC 2022] Initialization complete.
INFO[Fri Dec 16 11:48:22 UTC 2022] Migrating setup data to config store
INFO[Fri Dec 16 11:48:22 UTC 2022] Can not migrate setup data - setup table is empty
INFO[Fri Dec 16 11:48:22 UTC 2022] Initialising plugins
ERRO[Fri Dec 16 11:48:22 UTC 2022] Can't generate plugins from YAML: open plugins.yaml: no such file or directory
INFO[Fri Dec 16 11:48:22 UTC 2022]
Epinio API url: 'http://epinio-server.epinio.svc.cluster.local'
Epinio WSS url: 'ws://epinio-server.epinio.svc.cluster.local'
Epinio Auth url: 'https://auth.<IP_ADDRESS>.nip.io'
Epinio UI url: 'https://epinio.<IP_ADDRESS>.nip.io'
Skipping SSL Validation: 'true'
INFO[Fri Dec 16 11:48:22 UTC 2022] Loaded plugin: epinio
INFO[Fri Dec 16 11:48:22 UTC 2022] Loaded plugin: userfavorites
ERRO[Fri Dec 16 11:48:22 UTC 2022] failed to find an epinio endpoint
INFO[Fri Dec 16 11:48:22 UTC 2022] Auto-registering epinio endpoint http://epinio-server.epinio.svc.cluster.local as "default" (ZThhPrryoUeUuimbk4Gb-G3-I9A)
INFO[Fri Dec 16 11:48:22 UTC 2022] Plugins initialized
INFO[Fri Dec 16 11:48:22 UTC 2022] Stratos is initialized with the following setup:
INFO[Fri Dec 16 11:48:22 UTC 2022] ... Auth Endpoint Type      : epinio
INFO[Fri Dec 16 11:48:22 UTC 2022] ... Epinio Auth             : true
INFO[Fri Dec 16 11:48:22 UTC 2022] ... Skip SSL Validation     : false
INFO[Fri Dec 16 11:48:22 UTC 2022] ... Setup Complete          : true
INFO[Fri Dec 16 11:48:22 UTC 2022] SSO Configuration:
INFO[Fri Dec 16 11:48:22 UTC 2022] ... SSO Enabled             : false
INFO[Fri Dec 16 11:48:22 UTC 2022] ... SSO Options             :
INFO[Fri Dec 16 11:48:22 UTC 2022] ... SSO Redirect Allow-list :
INFO[Fri Dec 16 11:48:22 UTC 2022] Storing Diagnostics
INFO[Fri Dec 16 11:48:22 UTC 2022] Serving static UI resources
INFO[Fri Dec 16 11:48:22 UTC 2022] Starting HTTP Server at address: <IP_ADDRESS>:8000
Request: [2022-12-16T11:48:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/" Status:200 Latency:949.997µs Bytes-In:0 Bytes-Out:1628
Request: [2022-12-16T11:48:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/32d4fa2.js" Status:200 Latency:593.321µs Bytes-In:0 Bytes-Out:5614
Request: [2022-12-16T11:48:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/9612c993c818b54654e6.js" Status:200 Latency:29.03128ms Bytes-In:0 Bytes-Out:285526
Request: [2022-12-16T11:48:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/e1ce16294c3abbc329e4.js" Status:200 Latency:179.883489ms Bytes-In:0 Bytes-Out:1908773
Request: [2022-12-16T11:48:57Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/f4e3def3f733ae290120.js" Status:200 Latency:438.552773ms Bytes-In:0 Bytes-Out:9955727
Request: [2022-12-16T11:49:03Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/bd3b95dee2d6560ec319.js" Status:200 Latency:320.023µs Bytes-In:0 Bytes-Out:791
Request: [2022-12-16T11:49:03Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:446.473µs Bytes-In:0 Bytes-Out:33500
Request: [2022-12-16T11:49:03Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/favicon.png" Status:200 Latency:366.371µs Bytes-In:0 Bytes-Out:759
ERRO[Fri Dec 16 11:49:03 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-16T11:49:03.766423818Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-16T11:49:03Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/users" Status:401 Latency:291.188µs Bytes-In:0 Bytes-Out:60
ERRO[Fri Dec 16 11:49:03 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-16T11:49:03.80767618Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-16T11:49:03Z] Remote-IP:"<IP_ADDRESS>" Method:"POST" Path:"/pp/v1/epinio/rancher/v3/tokens" Status:401 Latency:119.058µs Bytes-In:2 Bytes-Out:60
ERRO[Fri Dec 16 11:49:03 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-16T11:49:03.81005615Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-16T11:49:03Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/principals" Status:401 Latency:76.381µs Bytes-In:0 Bytes-Out:60
Request: [2022-12-16T11:49:03Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/2463fffff3150156856b.js" Status:200 Latency:1.584738ms Bytes-In:0 Bytes-Out:44298
Request: [2022-12-16T11:49:03Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3-public/authProviders" Status:200 Latency:98.373µs Bytes-In:0 Bytes-Out:781
Request: [2022-12-16T11:49:03Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:315.07µs Bytes-In:0 Bytes-Out:33500
Request: [2022-12-16T11:49:04Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/ba5ddf4cbe7c4451b0d3.js" Status:200 Latency:276.103µs Bytes-In:0 Bytes-Out:540
Request: [2022-12-16T11:49:04Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/lato-v17-latin-regular.b4d2c4c.woff2" Status:200 Latency:1.127866ms Bytes-In:0 Bytes-Out:23484
Request: [2022-12-16T11:49:04Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/shell/assets/images/pl/login-landscape.svg" Status:200 Latency:1.928386ms Bytes-In:0 Bytes-Out:34525
Request: [2022-12-16T11:49:04Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/icons.425626d.ttf" Status:200 Latency:975.973µs Bytes-In:0 Bytes-Out:19556
Request: [2022-12-16T11:49:04Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/dex/redirectUrl" Status:200 Latency:34.212831ms Bytes-In:0 Bytes-Out:510
Request: [2022-12-16T11:49:19Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/verify-auth" Status:200 Latency:257.345µs Bytes-In:0 Bytes-Out:1628
Request: [2022-12-16T11:49:19Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/32d4fa2.js" Status:200 Latency:405.42µs Bytes-In:0 Bytes-Out:5614
Request: [2022-12-16T11:49:19Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/9612c993c818b54654e6.js" Status:200 Latency:16.07899ms Bytes-In:0 Bytes-Out:285526
Request: [2022-12-16T11:49:19Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/e1ce16294c3abbc329e4.js" Status:200 Latency:189.735356ms Bytes-In:0 Bytes-Out:1908773
Request: [2022-12-16T11:49:20Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/f4e3def3f733ae290120.js" Status:200 Latency:417.993131ms Bytes-In:0 Bytes-Out:9955727
Request: [2022-12-16T11:49:25Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:421.551µs Bytes-In:0 Bytes-Out:33500
ERRO[Fri Dec 16 11:49:25 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-16T11:49:25.675204962Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-16T11:49:25Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/users" Status:401 Latency:180.934µs Bytes-In:0 Bytes-Out:60
ERRO[Fri Dec 16 11:49:25 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-16T11:49:25.713421461Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-16T11:49:25Z] Remote-IP:"<IP_ADDRESS>" Method:"POST" Path:"/pp/v1/epinio/rancher/v3/tokens" Status:401 Latency:188.152µs Bytes-In:2 Bytes-Out:60
ERRO[Fri Dec 16 11:49:25 UTC 2022] User session could not be found: Session value not found user_id
{"time":"2022-12-16T11:49:25.715130022Z","level":"ERROR","prefix":"echo","file":"main.go","line":"1258","message":"code=401, message={\"status\":\"error\",\"error\":\"User session could not be found\"}"}
Request: [2022-12-16T11:49:25Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3/principals" Status:401 Latency:71.562µs Bytes-In:0 Bytes-Out:60
Request: [2022-12-16T11:49:25Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/2463fffff3150156856b.js" Status:200 Latency:1.587674ms Bytes-In:0 Bytes-Out:44298
Request: [2022-12-16T11:49:25Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v3-public/authProviders" Status:200 Latency:92.989µs Bytes-In:0 Bytes-Out:781
Request: [2022-12-16T11:49:25Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/v1/management.cattle.io.setting" Status:200 Latency:270.843µs Bytes-In:0 Bytes-Out:33500
Request: [2022-12-16T11:49:25Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/ba5ddf4cbe7c4451b0d3.js" Status:200 Latency:343.389µs Bytes-In:0 Bytes-Out:540
Request: [2022-12-16T11:49:26Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/lato-v17-latin-regular.b4d2c4c.woff2" Status:200 Latency:1.532356ms Bytes-In:0 Bytes-Out:23484
Request: [2022-12-16T11:49:26Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/shell/assets/images/pl/login-landscape.svg" Status:200 Latency:1.727139ms Bytes-In:0 Bytes-Out:34525
Request: [2022-12-16T11:49:26Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/_nuxt/fonts/icons.425626d.ttf" Status:200 Latency:1.119363ms Bytes-In:0 Bytes-Out:19556
Request: [2022-12-16T11:49:26Z] Remote-IP:"<IP_ADDRESS>" Method:"GET" Path:"/pp/v1/epinio/rancher/dex/redirectUrl" Status:200 Latency:7.40377ms Bytes-In:0 Bytes-Out:510

And this is from dex pod:
time="2022-12-16T12:59:10Z" level=info msg="login successful: connector \"local\", username=\"admin\", preferred_username=\"\"<EMAIL_ADDRESS>groups=[]"

I've built and pushed custom thehejik/epinio-ui:oidc-dev image based on the PRs above, then deployed epinio by using the helm-chart PR and patched the original image in epinio-ui deployment with the custom one.

@thehejik Can i borrow you tomorrow to replicate that flow? I've managed to build the new UI image and patch the deployment but i get image pull backoff errors.
I've...

built the frontend files and pulled them over to the backend's UI folder
created a custom .goreleaser.yml with udpated epinio org references to my github user
built the image using ./build/bk-release.sh release --rm-dist -f .goreleaser-richard.yml --snapshot
that didn't seem to push it, so manually docker push ghcr.io... it
updated the epinio epinio-ui deployment's container image to use the same image ghcr.io...

Ok, image pull issues were due to a private person repo.
Managed to recreate the issue, and also locally when serving the frontend files directly via the backend. Looks like there's a redirect that's required from verify-auth to auth/verify. Normally this is handled directly by Rancher, or from what i was seeing in the dev env that serves the UI.... neither of which was happening when deployed in epinio world

@richard-cox I'm sorry for the delay. Yes, I use my private dockerhub account for the dev ui image push.

@richard-cox thanks for the update.
On first attempt I was getting  x509: certificate signed by unknown authority in epinio-ui pod logs so I had to set epinioAPISkipSSL=true.
On second attempt with disabled SSL there is no obvious problem with epinio-ui neither dex but this is what I see in browser now:

Dex reports successful login when using incorporated simple-password (login<EMAIL_ADDRESS>password: password):
time="2023-01-04T17:18:31Z" level=info msg="login successful: connector \"local\", username=\"admin\", preferred_username=\"\"<EMAIL_ADDRESS>groups=[]"

Full logs from epinio-ui pod with disabled SSL here

Follow on work https://github.com/epinio/ui/issues/176

@thehejik I've pushed updates to the backend and helm chart PRs, that should resolve the issue. I've tracked some follow on work that should be done before we release the feature though - https://github.com/epinio/ui/issues/180
An example epinio value.yaml
global:
  domain: '<IP_ADDRESS>.nip.io'
dex:
  enabled: true
  ui:
    secret: 'dev-secret1'
epinio-ui:
  epinioUI:
    apiSkipSSL: true
  dex:
    enabled: true
    ui:
      secret: "dev-secret1"

It's working! I used the incorporated email account for dex login.

I even didn't need to provide any special values.yaml. I just rebased richard-cox:dex-ui-client helm-chart branch on top of origin/main branch where the frequent dex cert handling has been resolved.
@richard-cox could you please squash and rebase all 3 PRs on top of main branches? Then I will be happy to test it again and approve the PRs.

@thehejik I'd like to keep the commit's themselves in both UI and UI Backend worlds. Will bring them both up to date and squash+rebase the helm chart repo

https://github.com/rancher/dashboard/pull/7299 - No changes since rebase
https://github.com/epinio/ui-backend/pull/9 - Unrelated changes (.github/release-drafter.yml, .github/workflows/cleanup-images.yml
https://github.com/epinio/helm-charts/pull/295 - Lots of changes. Have rebased and tested (with the ui-backend image built previously)

I've re-deployed epinio using the rebased chart (using a ui-backend image previously built) and it looks alright.
@thehejik If you're happy could you give the green tick of goodness to helm-charts repo and I can get all three PRs in together

All code / helm changes have been merged.
However a UI build will be needed to pick up the changes in an epinio installed via helm chart

Checked after regenerating ui locally:

To be rechecked after merge of https://github.com/epinio/helm-charts/pull/354

This is already present in Epinio main stream (server version v1.6.2-53-g775b8167) after latest bumps.
Added automated UI tests [Cypress] Basic OIDC automation in CI and and working ok both in STD UI and Rancher Dashboard:

Closing issue


issue with pyhton file

wrong comment in file

/jira

/jira

/jira

/jira

/createjira

/jira

/abc

/abc

/abc

/jira

/abc

/jira

/Jira

/abc

/jira

/createjira

/jira

/createjira

/jira

/abc

/jira

/jira

/jira


publish a minor release

It's been asked for weeks already, maybe over a month.

+1 @dasilvacontin
(I'm waiting for that since f43006aec9bff54e1d71cd6f7513dd6352d1410c)

That's def over a month then. :)

:+1:

since we're released a new version 65fc80ecd96ca2159a792aff089bbc273d4bd86d, this issue can be closed.

@a8m, thanks for the heads-up dude! I was desperately waiting for this release. :stuck_out_tongue_winking_eye:

Cheers @am11

Awesome! Thanks for preparing the release, @travisjeffery. :)


The attribute mail (email) not being provisioned to ldap at enrollment in DEV although it is configured in the provisioner.

Example after enrollment on 10/29/22
dn: employeeNumber=hctester60,ou=people2,o=HC,dc=commons,dc=mla,dc=org
sn: Test
cn: Meghan Test
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: eduPerson
objectClass: eduMember
objectClass: voPerson
title;role-363256: Graduate Student, Digital Humanities
givenName: Meghan
o;role-363256: University Of Phoenix
employeeNumber: hctester60
employeeType;role-363256: member
uid<EMAIL_ADDRESS>eduPersonAffiliation;role-363256: member
isMemberOf: CO:members:all
isMemberOf: CO:COU:HC:members:all
isMemberOf: CO:members:active
isMemberOf: CO:COU:HC:members:active
voPersonStatus: Active
voPersonStatus;role-363256: Active

Suspending the "Email Address Elector" data filter allows emails to be provisioned.

SCG working on underlying issue. See: MESH-Research/hc-admin-docs-support#205 (PMO 979)


Releasing the annotated  images

Hello,
Do you intend to release the dataset that you used to train your model?
"To achieve that, our research team manually corrected 2,500 tiles of the 12,000 training set, 1,620 image tiles out of 4,000 tiles that were used as our validation set, and 1,500 tiles out of 4,000 test set tiles."
I was thinking will you release these mask images alongside the tiles?

Hi,
Yes, we are planning on releasing the data, and we are adding more classes to the model, so new changes are coming!
We will post the news in the updates section as soon as the data is made publicly available.


[DOCFIX] Update docs for GCS, change nested under storage path

@gpang PTAL, thanks!

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/4146/
Test PASSed.

alluxio-bot, merge this please.

alluxio-bot, cherry-pick this to branch-2.0 please.


Port over to qmd. Untested chapters

I have moved all the chapters to qmd format. I am working locally so have not tested this on the server yet (so probably best if we test before merging the pull request....just in case!) and only tested the rendering with the chapters that do not have associated data. If you "render" any of the chapters the whole book with render locally. Publishing to GH-pages is the same process as before as far as I can see.

Thanks for doing this!
To clarify, did you simply rename rmd files to get a .qmd ending?
And does _quarto.yml replace _bookdown.yml?
Those that have already started writing based on the temptae.Rmd file, would they need to do anything? Just change the file ending?

Is the  _book folder replacing _bookdown_files?

@anders-kolstad It looks like the Rstudio version on the server is not the same as the one we have locally!
Server:  RStudio 2021.09.2+382 "Ghost Orchid" Release (fc9e217980ee9320126e33cdf334d4f4e105dc4f, 2022-01-04) for Ubuntu Bionic
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36 Edg/108.0.1462.54
Local: RStudio 2022.12.0+353 "Elsbeth Geranium" Release (7d165dcfc1b6d300eb247738db2c7076234f6ef0, 2022-12-03) for Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) RStudio/2022.12.0+353 Chrome/102.0.5005.167 Electron/19.1.3 Safari/537.36
This is why Quarto will not run.
I guess we need to ask for an update to the Rstudio version on the server..... ?

I can ask. I actually asked just before Christmas, and Kjetil replied:
Vi har planer om å oppdatere Rstudio på nyåret da dagens versjon begynner å bli gammel, men ser at du har funnet det du trenger så da er det ikke så mye hast for deg.
I will ask again.
A
From: Matthew Grainger @.>
Sent: fredag 6. januar 2023 10:16
To: NINAnor/ecosystemCondition @.>
Cc: Anders Kolstad @.>; Mention @.>
Subject: Re: [NINAnor/ecosystemCondition] Port over to qmd. Untested chapters (PR #16)
@anders-kolstadhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fanders-kolstad&data=05|01|anders.kolstad%40nina.no|353d0d28258b46b2d30708daefc690a2|6cef373021314901831055b3abf02c73|0|0|638085933356550068|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=IKAw8yY7%2Bd3sI9cd2%2BEeq4RVyKCgWVXWLeyw5gwqMS0%3D&reserved=0 It looks like the Rstudio version on the server is not the same as the one we have locally!
Server: RStudio 2021.09.2+382 "Ghost Orchid" Release (fc9e217980ee9320126e33cdf334d4f4e105dc4f, 2022-01-04) for Ubuntu Bionic
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36 Edg/108.0.1462.54
Local: RStudio 2022.12.0+353 "Elsbeth Geranium" Release (7d165dcfc1b6d300eb247738db2c7076234f6ef0, 2022-12-03) for Windows
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) RStudio/2022.12.0+353 Chrome/102.0.5005.167 Electron/19.1.3 Safari/537.36
This is why Quarto will not run.
I guess we need to ask for an update to the Rstudio version on the server..... ?

Reply to this email directly, view it on GitHubhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FNINAnor%2FecosystemCondition%2Fpull%2F16%23issuecomment-1373380999&data=05|01|anders.kolstad%40nina.no|353d0d28258b46b2d30708daefc690a2|6cef373021314901831055b3abf02c73|0|0|638085933356550068|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=57J4QoOsn%2FdJzlv9gFZMfWqiGgthbXdAG9FqWxrE2IE%3D&reserved=0, or unsubscribehttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAIAZA5MLWQ25DZU5WWZVIKLWQ7PDJANCNFSM6AAAAAATR472JQ&data=05|01|anders.kolstad%40nina.no|353d0d28258b46b2d30708daefc690a2|6cef373021314901831055b3abf02c73|0|0|638085933356550068|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=oxiqr0h22RBobmesx9nr9N3s9TjtrgRj9YrIu8shc4s%3D&reserved=0.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

I will close this for now and re-open a pull request at a later stage


Support HAVING

I am interested in using HAVING in continuous views. My use case is to use the RANK window function to partition and order some rows then limit the rank to 5. So in effect the continuous view would keep the top 5 rows in an ordered partition.

Most examples I've found online (see one here) show using a subquery to get the rank and then the outer query uses a WHERE clause to filter it down. So I'm not sure if HAVING would even help in my use case.
I should note, however that pipeline forbids aggregates/window functions in a subquery:
subqueries in continuous views cannot contain window functions
Is there any related issue for this?

You can use a WHERE clause at read time to accomplish the same think as a HAVING clause. If we were to support HAVING it would basically become a re-write that does the same. Since continuous views don't store the raw data, keeping track of the top 5 rows in a partition basically means keeping track of all rows in the partition since the top 5 can keep on changing.

I don't understand why you'd have to keep track of all rows in the partition. If you only wanted the top 5 why would you need to store more than 5 per partition? When a new row comes in you would check where it ranks in its partition, and possibly displace one of the stored.

I meant that as a more general thing. With rank() it's easy to do that since it's just looking at sorted order, but with a HAVING clause involving aggregates, all rows potentially need to be kept around. Could you give me a sketch of the query you're trying to do?

This is off topic now, and belongs in another issue since it doesn't involve HAVING, but here's a simplified example of what I want to accomplish using a regular table and view:
CREATE TEMPORARY TABLE s (name text, part text, value int);
CREATE OR REPLACE VIEW v AS
SELECT
  name,
  part,
  value,
  rank
  FROM (
    SELECT
      name,
      part,
      value,
      dense_rank() OVER (PARTITION BY name, part ORDER BY value) AS rank
    FROM s) AS x
  WHERE rank <= 3;

INSERT INTO s VALUES ('foo', 'stuff', 7), ('foo', 'blah', 18), ('foo', 'jar', 8),
  ('foo', 'stuff', 123), ('foo', 'blah', 6), ('foo', 'jar', 199),
  ('foo', 'stuff', 63), ('foo', 'blah', 63), ('foo', 'jar', 9),
  ('foo', 'stuff', 44), ('foo', 'blah', 26), ('foo', 'jar', 909),
  ('foo', 'stuff', 9), ('foo', 'blah', 61), ('foo', 'jar', 2),
  ('foo', 'stuff', 1), ('foo', 'blah', 996), ('foo', 'jar', 0);

SELECT * FROM v;

Now I'd like to be able to do this with a continuous view. PipelineDB could possibly allow the use of certain window functions within a subquery, so filtering could happen in the outer query.


Add support for History chart for collection on Moonsama

In collections, we have a history chart table where users can see activity, would be nice to install their support for Moonsama
Ref

#3161

History OKI?

History OKI?

wfm


Shouldn't default skin be Vapor?

According to Installed Themes, the default skin should be VAPOR

VAPOR
This is the default theme installed, it is a very clean & simple responsive theme but supports more functionality of any of the other imported Ghost themes. Originally created by Seth Lilly

But the default skin installed is Shazwazza.
So, either the wiki has to updated, or the package installer fixed :smile:

haha, ok will update the wiki :) Shazwazza is default just because it shows the most features

Actually, i'll change it to be Vapor, it's a simpler more common skin

I guess this has been merged 😄


Fix broken link for monitor readme

Resolves https://github.com/Azure/azure-sdk-for-net/issues/43732
The link has been migrated, details can be found in https://github.com/open-telemetry/opentelemetry-dotnet-contrib/pull/1673

API change check
API changes are not detected in this pull request.


Custom globalFilter in combination with usePagination causes error

I'm using a custom globalFilter method that iterates through all available rows to filter them. On top of that, I'm also using usePagination.
Now the problem is that when there is more than 1 page of results, and the user hasn't navigated through all pages (which is a very common scenario) and then starts searching using the global filter, the page breaks. The error logged is You have not called prepareRow(row) one or more rows you are attempting to render.
My workaround for this is to call prepareRow on all rows instead of only the rows of the current page before rendering, but this kind of defeats the purpose of prepareRow, since it's intended to only be called for rows that are actually rendered. At least, this is my interpretation, but maybe my workaround is just the way to go in this scenario. If that's the case, then I think the documentation should mention this.

Unfortunately for me, the issue appeared to be caused by my global filter method. Inside that, I'm using cell.column.Cell(cell), which apparently needs the row to be prepared for rendering.


Can't play video on v.163.com and v.qq.com

v.qq.com — video freezes after about 10 seconds (not reproduced yet)
v.163.com — can't get a video's url (repoduced).

Looks like v.qq.com has moved to HTML5 video, so that part is not relevant anymore.

Issue with v.163.com was caused by missing gb2312-80 encoding. I've added an alias in 59e67d3f744b2310bed01853172bb73ca61a6332, so it should work now.

@dirtycold, I see tv.sohu.com now tries to open UDP socket. That part of API is not implemented yet, and that missing API probably causing a malfunction.

That was some kind of translation on tv.sohu.com, I think. Other videos are working fine, I don't have any idea why it fails to load.

just upgraded to version 0.3.0 but the result was surprising...

tv.sohu.com now plays perfect even in high resolution quality. no stuck, no freeze, just plays. (yey!)
v.163.com still complains "can't find video url" kind of thing...
looks a little weird, right?

to version 0.3.0

which doesn't exist yet :-). I think you've meant latest version from git?

v.163.com still complains "can't find video url" kind of thing

Can you post a link to some video which doesn't work? Perhaps not all videos there use the same parameters and I just tried only working ones.

sorry... i mean v0.2.3 from opensuse packman repository ;-)
here is an url that can't play: http://v.163.com/yule/V8GIAB8I2/VAH81NVF9.html

@dirtycold, I still can't reproduce on latest snapshot from master branch, that video works fine.
Version v0.2.3 doesn't work though. Fix was added after 0.2.3 was released. So if package in packman repository was built exactly from v0.2.3 tag, it won't work.

As one of the issues was fixed in master branch, and other was never reproduced by me, closing.


Ng generate doesn't create css files when -sw is used to create the project

Versions

Angular CLI: 6.0.0
Node: 8.10.0
OS: win32 x64
Angular: 6.0.0
... animations, cli, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.6.0
@angular-devkit/build-angular     0.6.0
@angular-devkit/build-optimizer   0.6.0
@angular-devkit/core              0.6.0
@angular-devkit/schematics        0.6.0
@ngtools/webpack                  6.0.0
@schematics/angular               0.6.0
@schematics/update                0.6.0
rxjs                              6.1.0
typescript                        2.7.2
webpack                           4.6.0```

### Repro steps
<!--
Simple steps to reproduce this bug.
Please include: commands run, packages added, related code changes.
A link to a sample repo would help too.
-->
* ng new name-of-project -sw
* cd name-of-project
* ng generate component name-of-component

Observed behavior
CREATE src/app/name-of-component/name-of-component.component.html (36 bytes)
CREATE src/app/name-of-component/name-of-component.component.spec.ts (693 bytes)
CREATE src/app/name-of-component/name-of-component.component.ts (273 bytes)
UPDATE src/app/app.module.ts (518 bytes)

It doesn't create the css file

Desired behavior
CREATE src/app/name-of-component/name-of-component.component.spec.ts (693 bytes)
CREATE src/app/name-of-component/name-of-component.component.ts (311 bytes)
CREATE src/app/name-of-component/name-of-component.component.css (0 bytes)
UPDATE src/app/app.module.ts (518 bytes)

When I use generate component expect to get a whole new component, but this is like if i used a flag for create styles in the .ts file

-sw is the equivalent of -s -w.  -s is the short option for inline styles.  -w is not actually an option and should error but currently does not.  The lack of an error for -w is a defect and will be corrected.

@clydin , -sw used to be the alias for --service-worker in previous versions. like This page shows (I didn't find official documentation for version 5 because it's not shown anymore in the official page. It jumps from 4 to 6)


[RFC] feat(handleRef): add an util for handling passed refs

Addresses ideas from #417.

This PR solves the first described problem. Our Ref component and other components should consistently support functional and createRef() API.
Goals

exports Ref component at top level
adds support of createRef() API for the Ref component with reusable handleRef() util

I've made the changes that we discussed yesterday with @levithomason. Ready to go!

still would be glad if we'll be able to agree on the questions raised - those are certainly not the PR blockers, but still are the ones that I see as points for improvement


Fix compiling error, because of a wrong structure format

Bug fix from ticket https://github.com/espressif/esp-nimble/issues/42

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Daniel Kampert seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Corner label used on segment causes that corner of the segment to be squared

The segment's border radius for the corner where the label is placed is overridden by the corner label - fiddle.

See #2780.


What to do with page notes

See https://www.documentcloud.org/documents/282753-lefler-thesis.html#document/p1
The note at the top ("Posted with the gracious permission of the Author") is associated with Page 1, but is  not overlaid on it. We really treat these like "in between pages" notes.
When someone embeds a single page, does this note get displayed?

@knowtheory Your input desired particularly.

i think for a single page embed it'd be doable to include.  I think if you can flip between pages... things become more complicated, an perhaps worth punting on... or maybe we add a slide up overlay at the bottom of the page that's dismissable.  That way it literally is sort of a cover / preface to reading the page.

Those section identifiers make good sense in the context of overall document navigation, especially in the pop-up sidebar panel and on longish documents. On the current viewer, they also act as a nice typographical element for organizing the document's table of contents for storytelling. Would be good to replicate some of that in the mobile experience in whichever way lets readers quickly find the important pieces of a doc. Perhaps emphasizing a way to jump from note to note would help?

Specific to the single-page embed (and setting aside multi-page navigation), is the section note's conceptual relationship to the page immediately following strong enough to warrant even showing it? That seems like a really fragile relationship. It's just as likely the note is introducing a series of pages, or providing insight in the context of the full document, as that it's providing information unique to that page. And in those cases where it does reference the next n set of pages, it could feel really weird to show the note on just a single.
My tendency is to launch without support for these notes on single-page embeds, and reserve them for the full document. If we hear from users about them, we'll know to change course.
Thoughts?

I'm getting a little confused, because sections are a separate thing from page notes, and i just want to confirm that we're all still talking about page notes :)

@reefdog Agree. Section note is a superfluous item on single-page embeds.

Sorry @knowtheory, yes, I mean between-page notes. "Section notes" got left in during bad copy editing.


TaskVineExecutor: write function data to temp directory

Description
This moves the working directory for TaskVine executor function data to a directory in /tmp
These files were previously written adjacent to the logging in the working directory. They may be written in excess when running a large number of tasks.
Type of change
Choose which options apply, and delete the ones which do not apply.

New feature

I ran in my dev container and I got this surprise.
>       tmp_dir = os.path.join('/tmp/', f'{self.label}-{os.getlogin()}')
E       OSError: [Errno 6] No such device or address

did some strace, and it's looking in this file which contains a decimalised unsigned 32 bit integer representation of signed 32-bit -1:
$ cat /proc/self/loginuid
4294967295

and then failing after that.
The documentation for Python's os.getlogin says
https://docs.python.org/3/library/os.html#os.getlogin

For most purposes, it is more useful to use getpass.getuser()

and in my dev environment that is able to figure out who I am:
>>> import getpass
>>> getpass.getuser()
'benc'

Github Actions testing shows that same OS error - it's not just my wacky dev environment.

I do recognize the potential issues using datetime. In this instance it is specific to milliseconds so a conflict is unlikely. My rationale was to follow a logging convention in taskvine that will show the logs in a directory listing by order of creation, so it is easier to locate the most recent run. Though these files are rarely useful for a user to inspect themselves. I can change to uuid if you think it conforms better.

I do recognize the potential issues using datetime.

I don't think there's anything to be too concerned about here... mostly I was tagging it for the eventual implementer of #1122 to come fix it up.

I do recognize the potential issues using datetime.

I don't think there's anything to be too concerned about here... mostly I was tagging it for the eventual implementer of #1122 to come fix it up.

FWIW, this is precisely the purview of the tempfile module [docs.python.org].  Consider:
import tempfile
...
def ...:
    ...
    now_str = datetime.now().strftime(...)
    prefix = f"{self.label}-{getpass.getuser()}-{now_str}-"
    tmp_dir = tempfile.TemporaryDirectory(prefix=prefix, delete=False)

At which point tmp_dir will have the property of sortability you've stated was your goal and will also be guaranteed unique (that's tempfile's guarantee).
I'm not saying it's the best solution in this precise scenario, but I do observe that temporary files are not as immediately trivial as many assume at first glance — there's a reasion mktemp (command) and Python's tempfile module exist.

I just merged this into my kubernetes test PR https://github.com/Parsl/parsl/pull/3482 after getting distracted making task vine work in there, to give me some more assurance about how this works when workers do not have a shared filesystem with the submit side. It works ok.


3.2

There's clearly more here than what was only needed for 3.2
This also gets everything in here entirely working under mypy, with the exception of typechecking things from: feedparser, redbot discord
This also adds some (minor) preparation for #166
May need to do some stub generation soon.
resolves #121 resolves #112

got a DM that RSS doesn't work on red's dev branch with this change set, needs to be looked into.

More to do around mypy here. I took some temporary shortcuts, and scheduler messages are not going to be proper for mypy ever


Support for mapTo and mapFrom

There are times when interfacing with an API that it expects different JSON in the request from what is returned in the response. For example, if I have a user class, and i want to update the user on the backend, the request I send will be as follows:
{user: {"id" : 1,
"name" : "myname"}}
However the response will return:
{"id" : 1, "name" : "myname"}
The response does not have the "user" parameter in the JSON.
It would be good if the mappable protocol has two methods: mapFromJSON and mapToJSON
that allows us to define different mappings based on whether its being mapped from or to the object.
Please let me know if there's another way to do this in the current implementation.

    func map(mapper: Mapper) {

        networkId <= mapper["_id"]
        partId <= mapper["part_id"]

        if(mapper.mappingType == MappingType.fromJSON) {

            defaultColor <= mapper["default_color"]
            defaultMaterial <= mapper["default_material"]
            defaultShape <= mapper["default_shape"]

            opacity <= mapper["opacity"]
            partName <= mapper["part_name"]
            setView <= mapper["set_view"]
            visible <= mapper["visible"]
            blendingMethod <= mapper["blending_method"]

            enableCustomProperties <= mapper["enable_custom_properties"]
            enableMaterials <= mapper["enable_materials"]
            enableColors <= mapper["enable_colors"]
            enableShapes <= mapper["enable_shapes"]

            desc <= mapper["description"]
            price <= mapper["price"]
            techNum <= mapper["tech_num"]
            path <= mapper["path"]

            materials <= mapper["materials"]
            colors <= mapper["colors"]

        }else if(mapper.mappingType == MappingType.toJSON){

            if(selectedMaterial == nil) {
                selectedMaterial  = self.getDefaultMaterial()
            }

            if(selectedColor == nil) {
                selectedColor = self.getDefaultColor()
            }

            selectedMaterial <= mapper["selected_material"]
            selectedColor <= mapper["selected_color"]

        }

    }

I think you can put a check on "mapper.mappingType" in map method.

Yup @mahmed8003 that should work! Good idea, I hadn't thought of doing this.


__builtin_inf/__builtin_nan

Codecov Report

Merging #16 (6b00e3b) into musl-go (f66969a) will decrease coverage by 0.02%.
The diff coverage is 0.00%.

@@             Coverage Diff             @@
##           musl-go      #16      +/-   ##
===========================================
- Coverage    30.45%   30.43%   -0.03%
===========================================
  Files           74       75       +1
  Lines         5647     5651       +4
===========================================
  Hits          1720     1720
- Misses        3815     3819       +4
  Partials       112      112

Impacted Files
Coverage Δ

c2go_autogen.go
0.00% <ø> (ø)

z_allocator.go
0.00% <ø> (ø)

z_atomic.go
0.00% <ø> (ø)

z_exit.go
0.00% <ø> (ø)

z_math.go
0.00% <0.00%> (ø)

z_pthread.go
66.66% <ø> (ø)

z_syscall_unix.go
13.20% <ø> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update f66969a...6b00e3b. Read the comment docs.