2849 Commits
Author SHA1 Message Date
Andrei Kvapil 3f3470a120 Release v1.1.6 (#2381)
This PR prepares the release `v1.1.6`.
v1.1.6
2026-04-13 19:04:16 +02:00
cozystack-ci[bot] ddd452dcea Prepare release v1.1.6
Signed-off-by: cozystack-ci[bot] <274107086+cozystack-ci[bot]@users.noreply.github.com>
2026-04-13 14:53:11 +00:00
Andrei Kvapil 208a9337ee ci: use cozystack org noreply email for bot commits (#2392)
## Summary
- Replace `3297617+cozystack-ci[bot]@users.noreply.github.com` with
`cozystack@users.noreply.github.com` across all CI workflows
- DCO probot rejects the `[bot]` brackets in email as invalid, causing
release PRs to fail DCO checks

## Test plan
- [ ] Verify DCO passes on release PRs after backport to release
branches

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
api/apps/v1alpha1/v1.1.6
2026-04-13 16:37:43 +02:00
Andrei Kvapil 50977618f5 [Backport release-1.1] fix(build): filter git describe to match only v* tags (#2388)
# Description
Backport of #2386 to `release-1.1`.
2026-04-13 15:27:04 +02:00
Andrei Kvapil 718eb81b4b fix(build): filter git describe to match only v* tags
The api/apps/v1alpha1/* subtags share the same commit as the release
tags. git describe --exact-match picks the first match alphabetically,
returning api/apps/v1alpha1/vX.Y.Z instead of vX.Y.Z, which produces
invalid Docker image tags.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
(cherry picked from commit fbbccdbb7b)
2026-04-13 13:26:43 +00:00
Andrei Kvapil 7d9e9107eb ci(pull-requests): replace GH_PAT with cozystack-ci GitHub App token (#2383)
## Summary
- Replace `GH_PAT` (cozystack-bot PAT) with `cozystack-ci` GitHub App
token in `pull-requests.yaml`
- This was missed in #2351 and broke the `resolve_assets` / `e2e` jobs
for release PRs (draft releases not visible with invalid token)

## Test plan
- [ ] Re-run the release PR pipeline for `release-1.1.6` and verify
`resolve_assets` job passes

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Updated continuous integration authentication mechanism to use GitHub
App tokens instead of personal access tokens.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2026-04-13 10:08:50 +02:00
Andrei Kvapil 53a8ce6fd0 Replace cozystack-bot PAT with cozystack-ci GitHub App (#2351)
Replaces the `cozystack-bot` user account + personal access token
(`GH_PAT`) with the `cozystack-ci` GitHub App across all CI/CD release
workflows.

- **Security**: GitHub App tokens are short-lived (1h) and scoped, vs. a
long-lived PAT tied to a user account
- **Auditability**: App actions are clearly attributed to
`cozystack-ci[bot]`
- **No 2FA issue**: The bot account lacked 2FA; GitHub Apps don't
require it
- **Best practice**: GitHub recommends Apps over PATs for automation

| Workflow | What changed |
|---|---|
| `tags.yaml` | App token in all 3 jobs: prepare-release,
generate-changelog, update-website-docs |
| `auto-release.yaml` | App token for daily auto-patch tagging |
| `pull-requests-release.yaml` | App token for release PR finalization |

All `cozystack-bot` git identity replaced with `cozystack-ci[bot]`.

- `COZYSTACK_CI_APP_ID` — GitHub App ID
- `COZYSTACK_CI_PRIVATE_KEY` — GitHub App private key

- [ ] Delete `GH_PAT` repo-level secret
- [ ] Remove `cozystack-bot` from the cozystack org

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

* **Chores**
* Updated CI/CD automation authentication mechanisms across release and
tagging workflows for improved security practices.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
2026-04-12 12:07:59 +02:00
Andrei Kvapil 601b605f97 Release v1.1.5 (#2305)
This PR prepares the release `v1.1.5`.
v1.1.5
2026-03-31 10:15:40 +02:00
cozystack-bot 8364c25787 Prepare release v1.1.5
Signed-off-by: cozystack-bot <217169706+cozystack-bot@users.noreply.github.com>
2026-03-31 01:39:31 +00:00
Andrei Kvapil fe26737ede [Backport release-1.1] [linstor] Preserve TCP ports during toggle-disk operations (#2300)
# Description
Backport of #2292 to `release-1.1`.
2026-03-30 20:08:34 +02:00
Andrei Kvapil a81a3679d2 fix(linstor): preserve TCP ports during toggle-disk operations
Update fix-duplicate-tcp-ports patch to preserve existing TCP ports when
DrbdRscData is recreated during toggle-disk operations. Without this,
removeLayerData() frees ports and ensureStackDataExists() may allocate
different ones, causing port mismatches between controller and satellites
if the satellite misses the update.

Also add dh_strip_nondeterminism override in Dockerfile to fix build
failures on some JAR files.

Upstream: https://github.com/LINBIT/linstor-server/pull/476#issuecomment-4147527442

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
(cherry picked from commit 812d4138bb)
2026-03-30 18:06:57 +00:00
Andrei Kvapil 7880d55587 [Backport release-1.1] [platform] Prevent installed packages deletion (#2298)
# Description
Backport of #2273 to `release-1.1`.
2026-03-30 20:04:55 +02:00
Myasnikov Daniil ae72c69c1c [platform] Added resource-policy to keep installed packages
Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
(cherry picked from commit a243f3d72a)
2026-03-30 16:37:02 +00:00
Andrei Kvapil 576e9ac5d7 Release v1.1.4 (#2275)
This PR prepares the release `v1.1.4`.
v1.1.4
2026-03-30 13:33:08 +02:00
cozystack-bot 82a833267e Prepare release v1.1.4
Signed-off-by: cozystack-bot <217169706+cozystack-bot@users.noreply.github.com>
2026-03-30 01:37:40 +00:00
Kirill Ilin 9910188c5a [Backport release-1.1] [linstor] Fix swapped VMPodScrape job labels (#2289)
# Description
Backport of #2264 to `release-1.1`.
2026-03-27 17:51:42 +05:00
Kirill Ilin 7fc6207fbc [Backport release-1.1] [piraeus-operator] Fix LINSTOR satellite alert labels and scrape flapping false positives (#2286)
# Description
Backport of #2265 to `release-1.1`.
2026-03-27 17:51:33 +05:00
Kirill Ilin 8c24435ee7 [Backport release-1.1] [dashboard] Fix EndpointSlice column definitions for Pod serving table (#2283)
# Description
Backport of #2266 to `release-1.1`.
2026-03-27 17:51:11 +05:00
Kirill Ilin 9fb1f79d7c [Backport release-1.1] [system] Fix tenant RBAC for endpointslices read access (#2285)
# Description
Backport of #2257 to `release-1.1`.
2026-03-27 17:51:04 +05:00
sasha-sup 890bb00e4b [linstor] Fix swapped VMPodScrape job labels
Signed-off-by: sasha-sup <alexsup4ik@gmail.com>
(cherry picked from commit bad59103f4)
2026-03-27 12:51:01 +00:00
sasha-sup f961438c9d [piraeus-operator] Split LINSTOR controller availability and metrics alerts
Signed-off-by: sasha-sup <alexsup4ik@gmail.com>
(cherry picked from commit a052a650b0)
2026-03-27 12:50:55 +00:00
sasha-sup 53d603f50c [piraeus-operator] Add hold time to LINSTOR controller offline alert
Signed-off-by: sasha-sup <alexsup4ik@gmail.com>
(cherry picked from commit 4a92d7753c)
2026-03-27 12:50:55 +00:00
sasha-sup f7161c2af8 [piraeus-operator] Fix LINSTOR satellite alert labels and scrape flapping false positives
Signed-off-by: sasha-sup <alexsup4ik@gmail.com>
(cherry picked from commit a562d9cb80)
2026-03-27 12:50:55 +00:00
Kirill Ilin a33c143c2d fix(rbac): add endpointslices read access for tenant roles
Dashboard requests EndpointSlices from discovery.k8s.io API group
to display "Pod serving" section on Service details page. Without
this permission, tenant users see a 403 error.

Assisted-By: Claude AI
Signed-off-by: Kirill Ilin <stitch14@yandex.ru>
(cherry picked from commit ab92b67c3f)
2026-03-27 12:49:02 +00:00
Kirill Ilin 002d3eb44c fix(dashboard): add EndpointSlice column definitions for Pod serving table
The service details page showed "Raw:" and "Invalid Date" in the Pod
serving table because the EnrichedTable referenced customizationId
"factory-kube-service-details-endpointslice" which had no corresponding
CustomColumnsOverride. Add column definitions for Pod, Addresses, Ready,
and Node fields.

Assisted-By: Claude AI
Signed-off-by: Kirill Ilin <stitch14@yandex.ru>
(cherry picked from commit 37f1b3b59c)
2026-03-27 12:48:56 +00:00
Kirill Ilin e77ee47e15 [Backport release-1.1] [dashboard] Fix StorageClass "Error" in forms by granting RBAC read access (#2274)
# Description
Backport of #2267 to `release-1.1`.
2026-03-26 21:02:05 +05:00
Kirill Ilin 7780f50714 fix(dashboard): grant read access to storageclasses for authenticated users
The dashboard UI fetches StorageClasses via the Kubernetes API to populate
dropdowns (e.g. in the Postgres form), but the cozystack-dashboard-readonly
ClusterRole did not include storage.k8s.io/storageclasses. This caused
authenticated users to see "Error" instead of the StorageClass name.

Add get/list/watch permissions for storageclasses to the dashboard readonly
role, consistent with the existing backupclasses entry.

Assisted-By: Claude AI
Signed-off-by: Kirill Ilin <stitch14@yandex.ru>
(cherry picked from commit a7a80a7628)
2026-03-26 14:58:14 +00:00
Kirill Ilin ec7cef8c69 [Backport release-1.1] [dashboard] Fix broken backup menu links missing cluster context (#2269)
# Description
Backport of #2232 to `release-1.1`.
2026-03-26 18:56:22 +05:00
Kirill Ilin bcdf308226 [Backport release-1.1] [platform] Add missing apps to tenant admin RBAC (#2272)
# Description
Backport of #2268 to `release-1.1`.
2026-03-26 18:55:32 +05:00
Kirill Ilin d5d4d86556 fix(platform): add missing apps to tenant admin RBAC
The cozy:tenant:admin:base ClusterRole was missing several application
resources from apps.cozystack.io, preventing tenant admins from creating
them (the "Add" button was inactive in the dashboard).

Add the following resources: foundationdbs, harbors, mongodbs, openbaos,
opensearches, qdrants, vpns.

Assisted-By: Claude AI
Signed-off-by: Kirill Ilin <stitch14@yandex.ru>
(cherry picked from commit 8e01eb5f7e)
2026-03-26 13:05:16 +00:00
Kirill Ilin efc640103d [dashboard] Add missing baseFactoriesMapping for backup resources
Backup resources (plans, backupjobs, backups) are not
ApplicationDefinitions, so ensureNavigation() never adds their
baseFactoriesMapping entries. Without these mappings the OpenUI
frontend cannot resolve the {cluster} context for backup pages,
producing broken sidebar links with an empty cluster segment
(e.g. /openapi-ui//tenant-root/...).

Add the three missing entries to the static Navigation resource.

Assisted-By: Claude AI
Signed-off-by: Kirill Ilin <stitch14@yandex.ru>
(cherry picked from commit 398ca5844a)
2026-03-26 12:49:30 +00:00
Andrei Kvapil d799731923 Release v1.1.3 (#2236)
This PR prepares the release `v1.1.3`.
v1.1.3
2026-03-19 07:59:36 +01:00
cozystack-bot 7fed9d4a42 Prepare release v1.1.3
Signed-off-by: cozystack-bot <217169706+cozystack-bot@users.noreply.github.com>
2026-03-19 01:36:21 +00:00
Andrei Kvapil 01ef9f1223 [Backport release-1.1] [dashboard] Add secret-hash annotation to KeycloakClient for secret sync (#2241)
# Description
Backport of #2231 to `release-1.1`.
2026-03-18 12:53:33 +01:00
Kirill Ilin e4fadb50dc [dashboard] Add secret-hash annotation to KeycloakClient for secret sync
Add secret-hash annotation to the dashboard KeycloakClient CRD resource
so that when the Kubernetes Secret value changes, the operator detects
the CRD update and reconciles the client secret in Keycloak.

Without this annotation, if the dashboard-client Secret is recreated
with a new value (e.g. after upgrade), the KeycloakClient spec remains
unchanged, the operator skips reconciliation, and Keycloak retains the
stale secret — causing authentication failures for the dashboard.

Assisted-By: Claude AI
Signed-off-by: Kirill Ilin <stitch14@yandex.ru>
(cherry picked from commit bb5ee3ea4a)
2026-03-18 10:23:43 +00:00
Andrei Kvapil 736790852e [Backport release-1.1] [etcd] Add protective limits to defrag CronJob (#2234)
# Description
Backport of #2233 to `release-1.1`.
2026-03-17 17:41:04 +01:00
Kirill Ilin 6017dabaee fix(etcd): add protective limits to defrag CronJob
Without concurrencyPolicy and job limits, the defrag CronJob can
accumulate hundreds of running/failed pods during cluster upgrades
when etcd is temporarily unavailable. This was observed after
upgrading to v1.1.2 where defrag jobs piled up across tenants.

Assisted-By: Claude AI
Signed-off-by: Kirill Ilin <stitch14@yandex.ru>
(cherry picked from commit ed8ba3beec)
2026-03-17 16:36:28 +00:00
Andrei Kvapil ea641f7ec7 [Backport release-1.1] [kubernetes] Fix CiliumNetworkPolicy endpointSelector for multi-node RWX volumes (#2229)
# Description
Backport of #2227 to `release-1.1`.
2026-03-17 09:31:24 +01:00
mattia-eleuteri 2c23f1fab6 [kubernetes] Fix CiliumNetworkPolicy endpointSelector for multi-node RWX volumes
When an NFS-backed RWX volume is published to multiple VMs, the
CiliumNetworkPolicy egress rule only allowed traffic from the first VM.
The endpointSelector.matchLabels was set once on creation and never
broadened, causing NFS mounts to hang on all nodes except the first.

Switch from matchLabels to matchExpressions (operator: In) so the
selector can list multiple VM names. Rebuild the selector whenever
ownerReferences are added or removed.

Signed-off-by: mattia-eleuteri <mattia@hidora.io>
(cherry picked from commit cc5ec0b7a3)
2026-03-16 16:22:05 +00:00
Andrei Kvapil 2de20be50b Release v1.1.2 (#2218)
This PR prepares the release `v1.1.2`.
v1.1.2
2026-03-16 09:38:35 +01:00
cozystack-bot 1c87fe2004 Prepare release v1.1.2
Signed-off-by: cozystack-bot <217169706+cozystack-bot@users.noreply.github.com>
2026-03-16 01:36:47 +00:00
Andrei Kvapil a18047fc16 [Backport release-1.1] fix(api): skip OpenAPI post-processor for non-apps group versions (#2217)
# Description
Backport of #2212 to `release-1.1`.
2026-03-13 16:24:27 +01:00
Andrei Kvapil 803d6b15ba [Backport release-1.1] [bucket] Fix s3manager endpoint mismatch with COSI credentials (#2215)
# Description
Backport of #2211 to `release-1.1`.
2026-03-13 16:23:58 +01:00
Andrei Kvapil c94768c64b Revert "fix(operator): requeue packages when dependencies are not ready"
This reverts commit f906a0d8ad.

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
(cherry picked from commit 2b60c010dd)
2026-03-13 15:23:34 +00:00
Andrei Kvapil 093329cdce fix(operator): requeue packages when dependencies are not ready
When dependencies are not ready the reconciler returned without
requeueing, relying solely on watch events to re-trigger. If a watch
event was missed (controller restart, race condition, dependency already
ready before watch setup), the package would stay stuck in
DependenciesNotReady forever.

Add RequeueAfter: 30s so dependencies are periodically rechecked.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
(cherry picked from commit f906a0d8ad)
2026-03-13 15:23:34 +00:00
Andrei Kvapil 0e3c7fabff fix(api): skip OpenAPI post-processor for non-apps group versions
The OpenAPI PostProcessSpec callback is invoked for every group-version
(apps, core, version, etc.), but the Application schema cloning logic
only applies to apps.cozystack.io. When called for other GVs the base
Application schemas are absent, causing a spurious error log on every
API server start.

Return early instead of erroring when the base schemas are not found.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
(cherry picked from commit ee83aaa82e)
2026-03-13 15:23:34 +00:00
IvanHunters 0ba129b4b7 [bucket] Fix s3manager endpoint to use actual S3 endpoint from BucketInfo
The deployment template was constructing the S3 endpoint from the tenant's
namespace host (e.g. s3.freedom.infra.example.com), while COSI credentials
are issued for the actual SeaweedFS endpoint (e.g. s3.infra.example.com).
This mismatch caused 'invalid credentials' errors when users tried to log
in with valid credentials from the bucket secret.

Now the endpoint is resolved from BucketInfo (same source as credentials),
with a fallback to the constructed namespace host for first-time deploys
before BucketAccess secrets are created.

Signed-off-by: IvanHunters <xorokhotnikov@gmail.com>
(cherry picked from commit f647cfd7b9)
2026-03-13 15:23:24 +00:00
Andrei Kvapil 095d3ab150 Release v1.1.1 (#2184)
This PR prepares the release `v1.1.1`.
v1.1.1
2026-03-11 00:12:15 +01:00
cozystack-bot b06e2cecd5 Prepare release v1.1.1
Signed-off-by: cozystack-bot <217169706+cozystack-bot@users.noreply.github.com>
2026-03-10 20:31:40 +00:00
Andrei Kvapil b255214da0 [Backport release-1.1] fix(dashboard): exclude hidden MarketplacePanel resources from sidebar menu (#2203)
# Description
Backport of #2177 to `release-1.1`.
2026-03-10 17:50:15 +01:00