Commit Graph

188 Commits

Author SHA1 Message Date
Tim Hardeck 54833523dd
Add UserID logging to HelmOp and BundleDeployment reconciliers (#4249)
* Add UserID logging to HelmOp controller

* Add UserID logging to BundleDeployment controller
2025-10-21 11:01:59 +02:00
Tim Hardeck 89700a7259
Remove deprecated created-by label (#4225)
It was added by Rancher UI but was redundant because of the additional
label `created-by-user-id`.
2025-10-17 16:36:37 +02:00
Xavi Garcia d4d6c8df0a
Deletes the cluster's namespace on Cluster deletion (#4224)
Adds a finalizer to the Cluster resource so we can delete the namespace related to it on deletion.

Refers to: https://github.com/rancher/fleet/issues/3985

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-10-17 11:33:41 +02:00
Corentin Néau 6840a0ea61
Exclude Fleet config files regardless of their naming (#4207)
While Fleet config files are typically named `fleet.yaml`, the recent
introduction of user-driven bundle scanning enables a config file to be
named arbitrarily, in which case it must still be excluded from the
corresponding bundle. Fleet now takes care of this without any action
needed from the user.

Integration tests also demonstrate that `.fleetignore` files can be
leveraged to exclude config files living in the same directory as
the config file referenced explicitly through user-driven bundle
scanning. Fleet would otherwise not exclude those files from the bundle.
2025-10-10 16:28:57 +02:00
Tim Hardeck 212bf90458
Add userID to log messages (#4202)
* Add userID to log messages

* Remove confusing comment in userID log tests
2025-10-09 16:04:45 +00:00
Corentin Néau b10cca0425
Support globbing for secrets per path in user-driven mode (#4158)
While we had recently added support for globbing for path-based secrets
to classic bundle scanning, that had been omitted for user-driven bundle
scanning.

This commit remedies this, ensuring that globbing support works
regardless of the chosen bundle scanning mode.
2025-10-01 18:10:17 +02:00
Corentin Néau aea81d020b
Prevent bundle reconciles triggered by bundle status updates (#4171)
A bundle must only be reconciled upon changes impacting its spec, or a
related cluster or bundle deployment. Changes to the bundle's status
must not lead to new reconciles, which may cause endless loops.
2025-09-29 10:50:06 +02:00
Corentin Néau 9d05e574da
Remove HTML response body from HelmOps errors (#4129)
When a chart version cannot be retrieved from a Helm repository,
including the response body in the error message brings little context
and can lead to excessively long error status messages.
Therefore, Fleet now skips the response body in such cases, relying
solely on the status code.
2025-09-17 11:35:08 +02:00
renovate-rancher[bot] eeedd60a6f
chore(deps): update gomod-k8s-dependencies (main) (#4087)
* Update  sigs.k8s.io/controller-runtime to v0.22.0

* Bump to Kubernetes v1.34.0 libraries

* Run go generate

* Adapt mockgen cmds to prevent conflicts

* Remove obsolete mock files

---------

Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
Co-authored-by: Tim Hardeck <thardeck@suse.com>
2025-09-08 15:16:53 +02:00
Tim Hardeck c6b4da0e28
Replace deprecated Requeue with RequeueAfter in controllers (#4077)
* Replace deprecated Requeue with RequeueAfter in controllers

Replace all usages of reconcile.Result{Requeue: true} with appropriate
RequeueAfter durations to align with controller-runtime best practices.

* Improve stability of helmops controller tests

Increase retry attempts and add delays to reduce race conditions in
HelmOp updates.

* Improve stability of gitrepo e2e tests

Following the changes for Replace deprecated Requeue with RequeueAfter
in controllers.
2025-09-04 11:26:37 +02:00
Mario Manno a939ba1706
Fleet apply refuses to update bundle scheduled for deletion (#4075)
Fleet apply refuses to update bundle scheduled for deletion
2025-09-03 13:58:48 +02:00
Mario Manno 3c79abb0d1
Stuck helm release in pending-install are replaced (SURE-10627) (#4051)
The Helm deployer now honours Helm's `atomic` flag for installs, not just
updates.
It also supports overwriting releases in `pending-install` state, which can
unblock deployments.

A new integration test case simulates an existing release with
`pending-install` status, by creating the corresponding Helm secret, as
Fleet uses Helm's secret storage back-end, then validates that Fleet can
install a release with the same name on top of it.

---------

Co-authored-by: Mario Manno <mario.manno@suse.com>
Co-authored-by: Corentin Néau <tan.neau@suse.com>
2025-08-27 17:10:59 +02:00
Corentin Néau 088bcbea7e Harden values files exclusion from bundle resources
Values files may be referenced by file name alone, or with a directory
prefix. Both variants now lead to values files being excluded from
bundles resources, regardless of where a `fleet.yaml` file referencing
them lives (inside or outside of a chart directory).
2025-08-06 17:15:09 +02:00
Xavi Garcia 7b10195481
Trims the v prefix in versions before checking if it's a valid semver (#3955)
* Trims the v prefix in versions before checking if it's a valid semver

As decribed in the related issue, some helm repositories identify versions using the "v" prefix (like v1.5.6).
Although that's not recommended by Helm, those repositories are still valid.

This PR trims the "v" prefix (if exists) before checking if the version stored in the Bundle spec is semver compliant.

Refers to: https://github.com/rancher/fleet/issues/3953

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-08-06 10:36:34 +02:00
Xavi Garcia c17777907e
Adds InsecureTLS and BasicHTTP to helm secret (#3872)
* Add new values for basicHTTP and insecureSkipTLS

---------

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-08-04 15:52:37 +02:00
Corentin Néau 6f2a86cb44
Test bundle name override (#3932)
A bundle's name can be computed from a GitRepo's name and the path
leading to the bundle. However, overriding that name is also possible,
by populating the `name` field in a `fleet.yaml` file.

A new integration test case covers and demonstrates this.
2025-07-31 16:26:41 +02:00
Corentin Néau e52f0ff54c
Support globbing in HelmSecretForPaths (#3815)
* Support globbing in helmSecretNameForPaths

Helm access secrets referenced in a GitRepo's `helmSecretNameForPaths`
field now support globbing, such as `my-path/*`, or `foo?bar`.

When more than one path listed in the `helmSecretNameForPaths` secret
matches a given GitRepo path, then the first match listed in the
`helmSecretNameForPaths` secret will be used.

* Ensure deterministic order of iteration over auth map

When more than one patterns match a given bundle path, the first
matching pattern, in lexical order, will be used.
2025-07-31 15:20:09 +02:00
Xavi Garcia 7a99f1a014
Reset HelmOps conditions even if no new version was found (#3902)
This resets the HelmOps conditions in the following scenarios:

* When getting a version from the helm repository if there was a previous error
* When getting a new version from the helm repository

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-07-17 18:19:23 +02:00
Xavi Garcia b9816ad694
Helmops resets conditions after recovering from error (#3899)
It also enables patching events for the HelmOp controller as both issues were found in the same test.

Refers to: https://github.com/rancher/fleet/issues/3896
Refers to: https://github.com/rancher/fleet/issues/3898

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-07-16 13:47:29 +02:00
Corentin Néau 26e1be0953
Check Helm for static version (#3858)
* Check Helm for static version

When a HelmOp resource references a static chart version, the HelmOps
controller checks Helm for existence of that version.

This prevents errors about the version not existing in the Helm index
from going undetected until a bundle deployment is created and an agent
attempts to deploy it.
Consequently, this also ensures that errors about the version not
existing are produced even if no target cluster is found for the HelmOp.

* Remove extra wrapping from error message

When a Helm chart version cannot be found, the error is already wrapped
with a message stating `could not get a chart version`. No need to wrap
it with a similar message.

* Reduce risk of conflicts in HelmOps status updates

The HelmOps status reconciler now uses a `Patch` operation, updating
only changed status fields as opposed to replacing a full HelmOps status
subresource.

* Fix `GotNewChartVersion` visibility issue

The condition on emitting the event was wrong, as a new, not yet found
version should be determined based on the status of the HelmOp, which is
later updated by the same polling job.
2025-07-10 13:47:30 +02:00
Corentin Néau 6974b319e3
Add HelmOps to cluster status and metrics (#3865)
* Add HelmOps to cluster status

With HelmOps no longer an experimental feature, HelmOp resources are now
reflected in cluster statuses, similarly to GitRepos, with desired ready
and actual ready counts.

* Add desired and ready HelmOps to cluster metrics

HelmOp resources are now reflected next to GitRepos in cluster metrics.
2025-07-08 16:27:54 +02:00
Corentin Néau dacb12b9df
Enforce validation rules for Helm options in HelmOps (#3795)
* Validate HelmOps fields in reconciler

Only a subset of all possible combinations of repo, chart and version
fields make sense. The HelmOps reconciler now ensures that unsupported
combinations lead to error messages being output in the HelmOp's status,
without any bundle being created.

* Enable HelmOps OCI chart rendering

When installing a Helm chart through an OCI reference, HelmOps are
expected to store that reference in the `repo` field, unlike GitOps Helm
options which use the `chart` field to that effect.

Since we do not want to break compatibility with existing gitOps setups,
chart URL resolution and contents rendering is now a bit more flexible
than it used to be, supporting both variants.

By the same token, reporting of failures to install charts is improved
in the HelmOps status, which previously skipped status updates when the
`chart` field was empty.

* Add end-to-end test for HelmOps with tarball

A new end-to-end test case validates that HelmOps supports installing a
Helm chart referenced through a tarball.
2025-06-30 12:33:23 +02:00
Corentin Néau 23f384f50f
Remove HelmOps' experimental status (#3824)
Kubernetes resources required by Fleet to manage HelmOps resources are
now created if, and only if, Helm value `helmops.enabled` is `true`.

That value is `true` by default, enabling HelmOps, as was already the case
for GitOps. Both features can now be toggled in a consistent manner.
2025-06-20 16:44:37 +02:00
Xavi Garcia 09187480ac
Enables OCI storage by default (#3819)
* Enables OCI storage by default

Changes the env variable from `EXPERIMENTAL_OCI_STORAGE` to `OCI_STORAGE`

The feature is enabled by default and in order to disable it users should pass `OCI_STORAGE=false` in `extraEnv`

Refers to: https://github.com/rancher/fleet/issues/3818

---------

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-06-20 13:59:09 +02:00
Corentin Néau c824442bf8
Set HelmOps Accepted condition when no error happened (#3822)
The HelmOps reconciler would previously only update a HelmOp's
`Accepted` condition in case of an error, meaning that that condition
would stay false even after an update, for instance setting the chart
version to a valid constraint resolving to one or more existing
versions.

Such updates now reset the `Accepted` condition on a HelmOps, which
reflects its actual state.
2025-06-20 13:22:10 +02:00
Corentin Néau 583aab4e3d
Poll Helm repository from HelmOps reconciler (#3784)
* Schedule polling jobs for HelmOps

The HelmOps controller is now able to schedule a polling job for a
HelmOp resource meeting both of the following conditions:
- a version constraint resolving to a non-static version
- a non-zero polling interval

A job will poll the Helm registry pointed to by a HelmOp resource, and
update the bundle created from that HelmOp resource accordingly.

Polling failures are tested through integration tests, while the happy
case is validated in end-to-end tests.
In the meantime, templating of test Kubernetes resources now
relies on `text/template` instead of `html/template`, to prevent version
constraints such as `< 1.0` from being escaped as `&lt; 1.0`, which
Fleet would then interpret as invalid semver constraints.

* Generate event from Helm polling job

The Helm polling job now generates events when it successfully obtains a
new version for a Helm chart, and when it fails for various reasons as
well.

* Update polling time

When a polling job is able to successfully retrieve a new Helm chart
version and apply it to the bundle, the job updates the parent HelmOp's
status with a timestamp indicating when Helm was last polled.

The polling job also updates the latest polling timestamp in the HelmOp
status when operations which run after polling the Helm registry, such as
getting a bundle, fail. This should make troubleshooting easier.

* Skip HelmOp version update from reconciler if polling applies

Ensuring that a HelmOp's version fields are only updated from a single
place limits risks of race conditions. The polling job will be
responsible for updating those fields if polling applies to the HelmOp.

Status updates run by the HelmOps reconciler, on the other hand, are now
done using a `Patch` operation, more lightweight than a full `Update`,
and skipped if the patch is empty.

* Skip deployment of HelmOps bundle with version constraint

When a bundle is of HelmOps type and still bears a version constraint,
for instance because the initial HelmOps polling job has not yet updated
the bundle with its chart version resolved from Helm, the bundle
reconciler will not create bundle deployments. Instead, it will return
an error and feed it into the bundle status' `Ready` condition, for
better visibility in the Rancher UI.

This prevents bundle deployments from being created with a version which
does not resolve to a single Helm version, which may lead to
inconsistencies in deployments of that bundle among target clusters.
2025-06-16 14:01:03 +02:00
Xavi Garcia 2607d94efb
Oci storage secret label and event (#3775)
* Adds a label to internal/cloned secrets.

It also adds an event when the oci artifact is purged and could not be deleted for whatever reason.

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-06-16 12:04:38 +02:00
Alejandro Ruiz 6b06d3dc50
Refactor fleet apply and enable concurrent bundle scanning (#3721)
The goal of this commit is to detach the processing of every individual Bundle from the directory scanning.
2025-06-16 09:22:07 +02:00
Corentin Néau 0bf6620d6f
Support semantic versioning constraints in HelmOps (#3747)
* Skip setup for separate check on same test case

Creating a new HelmOp is not needed to check for finalizers, especially
as that check was clearly meant as additional validation on an existing
test case.

* Support semver constraints in HelmOp chart versions

The underlying implementation for fetching a chart version actually
already supported semantic versioning. That support simply needed to be
exposed and tested.
2025-06-04 12:29:20 +02:00
renovate-rancher[bot] e68b52a421
Update module github.com/reugn/go-quartz to v0.14.0 (main) (#3622)
* Update module github.com/reugn/go-quartz to v0.14.0

* Adapt code to updated quartz.NewStdScheduler function

---------

Co-authored-by: renovate-rancher[bot] <119870437+renovate-rancher[bot]@users.noreply.github.com>
Co-authored-by: Tim Hardeck <thardeck@suse.com>
2025-05-27 13:14:21 +02:00
Corentin Néau 90e56619ff
Detect bundle naming collision (#3718)
* Detect bundle naming collision in HelmOps reconciler

When building a HelmOps bundle, the reconciler now aborts with an error
if a non-HelmOps bundle with the same name exists in the same namespace.

* Detect bundle naming collision in `fleet apply`

When creating or updating a bundle, `fleet apply` checks the spec of any
existing bundle with the same name in the same namespace. If one bundle
is a HelmOps bundle while the other is not, `fleet apply` will abort the
update and output an error message.

* Simplify collision detection in `fleet apply`

Relying on the fact that `fleet apply` does not support creating HelmOps
bundles at this point, there is no need to generalise collision
detection to any mismatch in HelmOps state between a possibly existing
bundle and the one to be created or updated.

Instead, checking whether a HelmOps bundle already exists is enough to
establish a collision.
2025-05-27 08:41:56 +02:00
Xavi Garcia 57aaf58e01
Use controller-runtime client in fleet cli (#3670)
* Use controller-runtime client in fleet apply

This change is made to eliminate dependencies on Wrangler in the Fleet CLI and also to support future proposed changes related to reading secrets for OCI registries.

It also facilitates the creation of new integration tests, as the client interface is simplified and a single mock is used.

* Delete cluster instantiation and cache start in the cli
* Avoid adding new verbs that are not strictly required
2025-05-14 13:35:34 +02:00
Mario Manno 26886a1069
Remove bundle.ResourceKey computation (#3681)
Remove bundle.ResourceKey computation
2025-05-14 11:53:23 +02:00
Corentin Néau b495743697
Reorganise Bundledeployment fields (#3673)
* Separate gitOps-specific bundle deployment options

Those options are not relevant for HelmOps bundles. This commit
therefore separates them into a distinct struct to make this more
explicit, while limiting the risk of breaking the API.

* Move GitOps-specific Helm options to embedded struct

This clarifies that values files are not relevant to HelmOps bundles,
since no repository is used in such cases to store those files.
2025-05-14 11:22:59 +02:00
Corentin Néau fc99a11a51
Use specific secret types for access secrets cloned to downstream clusters (#3647)
While users create and reference access secrets, of types which cannot
be enforced without adding hurdles to workload creation, Fleet now
applies specific secret types when cloning access secrets downstream,
namely:
* `fleet.cattle.io/bundle-helmops-access/v1alpha1` for Helm access when
  deploying HelmOps bundles
* `fleet.cattle.io/bundle-oci-storage/v1alpha1` for OCI storage access
  when storing bundle resources in an OCI registry instead of etcd.

This should help users identify secrets created in downstream clusters,
and uses of such secrets.
2025-05-08 11:21:41 +02:00
Corentin Néau e873035143
Rename HelmApp as HelmOp (#3600)
This renames all structs, CRDs and files related to HelmOps to feature
`helmop` instead of `helmapp`, with similar changes being made for and
differently-cased variants.
2025-05-05 17:18:54 +02:00
Xavi Garcia 72ae1cc45a
fleet cli json output (#3559)
* fleet cli json output

Uses a JSONFormatter in fleet cli.
It also filters out the output received from fleet cli so the error set in the conditions is only the one sent by the fleet cli code and not from any used libraries.

Refers to: https://github.com/rancher/fleet/issues/3234

---------

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-05-05 15:38:17 +02:00
Mario Manno 00d57424e4
Remove progress from apply (#3587)
Progress is not working. This also wraps more errors and skips .git
folders when scanning cloned git repos.

Co-authored-by: Mario Manno <mario.manno@suse.com>
2025-04-30 17:59:53 +02:00
Mario Manno 0e81f40526
Replace gopkg.in/yaml with sigs.k8s.io/yaml (#3584)
Replace gopkg.in/yaml with sigs.k8s.io/yaml
2025-04-28 13:52:23 +02:00
Alejandro Ruiz 210dcf70b8
Delay GitRepo status reconciliations from bundle status changes (#3558)
* Small refactor to use typed functions

* Use a delay for enqueing GitRepo status reconciliations from bundle updates

* Allow tests to wait for delayed GitRepo/Helmapp status update
2025-04-28 11:01:43 +02:00
Xavi Garcia b54f338104
Adds driven bundle scan (#3480)
* Adds driven bundle scan
This adds a new feature to let the user define the bundles to be considered by Fleet.

It adds a new field `bundles` that is a list of path and config files.
The path is the base path for the resources contained in the Bundle and the config file is optional
and it's the Bundle's fleet.yaml file (that may have any custom name).

This is an example showing the new fields:
```yaml
kind: GitRepo
apiVersion: fleet.cattle.io/v1alpha1
metadata:
  name: driven
  namespace: fleet-local
spec:
  repo: https://github.com/0xavi0/fleet-test-data
  branch: driven-scan-example
  bundles:
  - path: driven/helm
  - path: driven/simple
  - path: driven/kustomize
    options: dev.yaml
  - path: driven/kustomize
    options: test.yaml
```

Given the root driven folder with the contents:
```
driven
     |___helm
     |      |__ fleet.yaml
     |
     |___simple
     |      |__ configmap.yaml
     |      |__ service.yaml
     |
     |___kustomize
            |__ base
            |      |__ kustomization.yaml
            |      |__ secret.yaml
            |
            |__ overlays
            |         |__ dev
            |         |     |__ kustomization.yaml
            |         |     |__ secret.yaml
            |         |__ prod
            |         |     |__ kustomization.yaml
            |         |     |__ secret.yaml
            |         |__ test
            |               |__ kustomization.yaml
            |               |__ secret.yaml
            |__ dev.yaml
            |__ prod.yaml
            |__ test.yaml
```

The GitRepo above would describe the following bundles:

**Helm based bundle (path: `driven/helm`, no config file)**
This one has a `fleet.yaml` file in the root folder and we're not specifying any config file.
In this case Fleet will read the `fleet.yaml` file in the root folder and will load the helm chart resources.

**Raw yaml folder based bundle (path: `driven/simple`, no config file)**
In this case the folder contains 2 yamls and no `fleet.yaml` in its root. We are not specifying any config file,
so the folder is considered as a bundle made of raw yaml files.
It will contain:
- configmap.yaml
- service.yaml

**Kustomize bundle (path: `driven/kustomize`, config file: `dev.yaml`)**
In this case we are specifying a config file (with the format of a `fleet.yaml` file).
Fleet will load all the resources found in the `drive/kustomize` folder and will load the config found
in the `dev.yaml` file.
The `dev.yaml` has the following content:
```yaml
namespace: kustomize-dev
kustomize:
  dir: "overlays/dev"
```
Which means it points to the `overlays/dev` kustomization.

This Bundle will load all the resources, but will only apply the `overlays/dev` kustomization

**Kustomize bundle (path: `driven/kustomize`, config file: `test.yaml`)**
This Bundle will be equivalent to the `dev` one described above, but pointint to the `overlays/test` kustomization.

Note that the `prod` kustomization is not used in this case, which shows that not all the options defined in the kustomization must be deployed.

Possible improvements:
As we can be loading the same folder multiple times it would be better to just load the resources once and cache them for the next repeated folder.


Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-04-10 14:02:05 +02:00
Mario Manno 7891ae0439
Add Lifecycle Secrets (#3527)
Each Bundle and BundleDeployment can have a secret to store options in. The secrets have the same name and namespace as the resource. For now they only store the helm values.
2025-04-09 16:02:26 +02:00
Corentin Néau 0530723988
Support strict host key checks
This adds a new chart value to toggle strict host key checks.

When that value is set to `false`, Fleet will enforce strict host key
checks, meaning that it will fail to establish any SSH connections to
hosts for which no matching `known_hosts` entry can be found.

`known_hosts` entries are sourced in priority from secrets
referenced in `GitRepo`s, e.g. `helmSecretName` for accessing Helm
charts or `clientSecretName` for cloning git repositories.

If no such secret exists, or no `known_hosts` entries are available
in that secret, then Fleet uses its own `known-hosts` config map,
newly created at installation time with static entries for the most
widely used git providers.

Host key fingerprints added to the config map are sourced, respectively:
* from here [1] for Github
* from here [2] for Gitlab
* from here [3] for Bitbucket, which also provides a `curl` command to
  fetch them in `known_hosts`-friendly format: `curl
  https://bitbucket.org/site/ssh`

Additional Azure DevOps fingerprints could not be found at this point.

The absence of the config map, should no secret be available, is
considered a symptom of an incomplete Fleet deployment, and reported as
such.

[1]: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints
[2]: https://docs.gitlab.com/ee/user/gitlab_com/index.html#ssh-known_hosts-entries
[3]: https://support.atlassian.com/bitbucket-cloud/docs/configure-ssh-and-two-step-verification/
2025-04-09 13:52:53 +02:00
Alejandro Ruiz 947a0a3a7a
Prune BundleDeployments when GitRepo/Bundle targets change (#3438) 2025-04-08 11:25:32 +02:00
Xavi Garcia a04f64a21e
Delete no longer targeted bundle deployments (#3509)
Delete Bundle deployments that exist in the Bundle, that are also deployed, but that are no longer targeted.

When changing either the target customizations or targets in the `GitRepo` definition, Fleet does not delete
bundle deployments that are no longer targeted using the new target rules.

Refers to: https://github.com/rancher/fleet/issues/2995

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-04-04 17:15:30 +02:00
Tim Hardeck 66df013f61 Fix ST1019 linting errors
which complain about "Importing the same package multiple times."
2025-04-03 10:29:17 +02:00
Tim Hardeck cd1912df2f Fix newly reported linter issues
which are possible to fix automatically by running
`golangci-lint run --fix`
2025-04-03 10:29:17 +02:00
Corentin Néau 41016aa980
Fix linting errors
* Remove unused function

This function became obsolete when using a delaying enqueue handler for
drift detection; see fleet#3401 [1].

[1]: https://github.com/rancher/fleet/pull/3401

* Modernise output setting in deployer integration tests

This makes use of `SetOut` and `SetErr` instead of `SetOutput`, which is
deprecated.

* Remove unused parameter from test helper methods

That parameter is no longer necessary now that our test infrastructure
uses `default` as its namespace.
2025-03-13 11:25:35 +01:00
Corentin Néau 1890c33a9d Exclude ignored resources from bundle deployment status
This checks bundle deployment options for resources to ignore,
supporting a new `ignore` operation in a bundle deployment's
`Spec.Diff.Options.ComparePatches`.
Fleet will delete any such resources from the set of resources
considered missing in a bundle deployment's status.
2025-03-07 15:32:18 +01:00
Xavi Garcia eeadc63138
Don't check for ResourceVersinon on Status tests (#3418)
The test already checks for meaningful status fields and `ResourceVersion` is part of the kubernetes engine.
The test is flaky because the value of the original `ResourceVersion` could be already updated when it reads it.

Signed-off-by: Xavi Garcia <xavi.garcia@suse.com>
2025-03-04 18:26:28 +01:00