* Start adding the golangci-lint to CI
golangci-lint is a collection of many linters. This PR adds
golangci-lint to the CI. For strat, it enables the govet linter, and fix
its single finding.
The PR adds this linter to the `test-lint` Makefile target.
The new .golangci.yml file is the configuration for the linter.
golangci-lint version was set to the latest one - v1.52.2.
It is defined in hack/build/run-linters.sh
Signed-off-by: Nahshon Unna-Tsameret <nunnatsa@redhat.com>
* golangci-lint: enable gosimple and fix findings
Signed-off-by: Nahshon Unna-Tsameret <nunnatsa@redhat.com>
* golangci-lint: enable unused and fix findings
Signed-off-by: Nahshon Unna-Tsameret <nunnatsa@redhat.com>
---------
Signed-off-by: Nahshon Unna-Tsameret <nunnatsa@redhat.com>
* Tolerate errors due to deployment resourceVersion changing
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Watch and remove v1alpha1 version from CDI CRD
Previously we didn't monitor this resource at all, and since it's
not controlled by the cdi operator, we need to use custom watch
code for it.
Re-use the code for removing old version to make sure that if
v1alpha1 was ever a storedVersion, it's removed. Add a test for
that, too.
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Don't wait for the deployment to be ready
Signed-off-by: Maya Rashish <mrashish@redhat.com>
---------
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Ensure Prometheus resources exist for CDINotReady
Ensure Prometheus resources exist also when cdi-deployment is not
ready. This is needed because currently when cdi deployment fails
(e.g. wrong NodeSelector) the Prometheus resources are not created,
so CDINotReady will not be fired although CDI is not ready.
Signed-off-by: Arnon Gilboa <agilboa@redhat.com>
* CR fixes
Signed-off-by: Arnon Gilboa <agilboa@redhat.com>
Signed-off-by: Arnon Gilboa <agilboa@redhat.com>
* Avoid generating most of the v1alpha1 CRDs, regenerate
We leave the CDI CRD alone as that one is installed via a YAML file.
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Avoid references to v1alpha1 APIs in docs
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Remove v1alpha1 specific tests
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Manually adjust code not to reference v1alpha1 APIs
v1alpha1 upload paths are kept as virtctl image upload still uses them
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Factor out scaling deployment to function
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Handle removal of v1alpha1 version from CRDs
If it was ever a storage version, we perform manual storage migration:
we ensure v1beta1 is storage version, get & update every object, and
remove the v1alpha1 storage version.
The CDI CRD v1alpha1 version is kept, so updating from clusters that
had old versions by applying release YAMLs still works.
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Test upgrade from a version with v1alpha1 storage version.
Artificially create objects by scaling down cdi-operator & creating
a DV. Make sure it's there even after we restore CDI and that v1beta1
is the only storedVersion.
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Regenerate (again, due to rebase)
Signed-off-by: Maya Rashish <mrashish@redhat.com>
Signed-off-by: Maya Rashish <mrashish@redhat.com>
* Add cron-job sa to scc
Signed-off-by: Alexander Wels <awels@redhat.com>
* Make sure user is added on upgrade
Signed-off-by: Alexander Wels <awels@redhat.com>
Signed-off-by: Alexander Wels <awels@redhat.com>
* remove root worker pods
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* remove selinux requirement for worker pods
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* run tests in restricted namespace and required changes
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* handle empty tar
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* add PSA label when running functional tests in OpenShift
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* cannot use restricted PSA with istio (for now)
refactor scc management
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* fix clean script
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* Fix CRDs deletion in operator deletion
Also check DataImportCron CRD has no DeletionTimestamp before adding a
finalizer
Signed-off-by: Arnon Gilboa <agilboa@redhat.com>
* CR fixes
Signed-off-by: Arnon Gilboa <agilboa@redhat.com>
* Delete CRDs & check finalizers in operator delete
reconcileDeleteControllerDeployment deletes the CRDs of DataImportCron and
DataVolume, and returns error if any DIC/DV has a finalizer. It will get
retried and controller will eventually remove the finalizers.
Signed-off-by: Arnon Gilboa <agilboa@redhat.com>
* Fix error handling
Signed-off-by: Arnon Gilboa <agilboa@redhat.com>
* Add destructive operator test
Signed-off-by: Arnon Gilboa <agilboa@redhat.com>
* Update operator-lifecycle-sdk to get fix for labels on upgrade
Update dep to get https://github.com/kubevirt/controller-lifecycle-operator-sdk/pull/19
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Reconcile labels also for CDIConfig
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Reconcile labels on storageprofile
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Reconcile remaining operator resources for updated labels
BZ#2017478
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Add degraded alert
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Add unusual restart count metric
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Add actual firing alerts (degraded/restartcount)
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Test newly added metrics
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Review: Rename metric to match conventions, func to check if test is eligible to run metric tests
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Get rid of similar funcs, reconcile more generally
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* move apis to new staging area
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* add script to push to staging
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* fix lint check and api reference
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* push staging to api repo
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* Deploy alerts infra as part of our installation
Conditionally deploy the infrastructure that is needed to fire alerts for our users
when bad things are happening to CDI.
Testing with `KUBEVIRT_DEPLOY_PROMETHEUS=true`
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Watch and unit test all prometheus related resources
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* add gateway for changing monitoring namespace (rbac purposes)
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* refactor test to check for exact alert name and firing state
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Align pattern of ensuring prometheus resource exists for all
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Remove potential noisy event
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Extract duplicate code to function
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* Dont use empty value for prometheus label due to open issue
https://github.com/prometheus-operator/prometheus-operator/issues/4325
Signed-off-by: Alex Kalenyuk <akalenyu@redhat.com>
* update deps and bazel
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* fix apidocs and unit tests
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* fix generate-verify
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* Formally designate CDI as owner of CDIConfig by adding annotation cdi.kubevirt.io/configAuthority
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* More robust upgrade handling. No error if beta api not installed yet.
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* Add events to operator condition changes
Add events to operator create/delete/update of managed resources.
Signed-off-by: Alexander Wels <awels@redhat.com>
* Updated unit tests based on comments
Signed-off-by: Alexander Wels <awels@redhat.com>
* rebase on betav1
Signed-off-by: Alexander Wels <awels@redhat.com>
* Removed start events to reduce event generation spam
Signed-off-by: Alexander Wels <awels@redhat.com>
* move upload.cdi.kubevirt.io API group to v1beta1
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* move core api to v1beta1
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* fix os-3.11 cluster sync and add functional tests for alpha api
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* change more occurences of v1alpha1
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* updates after rebase
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* use dedicated SCC
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* SCC was not getting on initial deploy
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* webhook to block deletion of datavolumes for BlockUninstallIfWorkloadsExist uninstallStrategy
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* fix apiserver permissions and tighten up cdi delete webhook functional test
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* fix cdi delete webhook for older k8s versions that don't send the object
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* cleanup webhooks and apiservices on upgrade
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* have to wait for cdi configmap to be garbage collected
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* do dry run deletes for datavolume protection webhook
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* initial client upgrade to 1.16
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* fix Route detection in OpenShift
Signed-off-by: Michael Henriksen <mhenriks@redhat.com>
* * Initial upgrade support
* - Detect from reconcile loop that it is uograde flow
* - Set ObeservedVersion to target when upgrade is finished
* - Delete unused objects at the end of upgrade
* * opertor controller unit test - detect upgrade
* cdi upgrade unit tests
* - verify upgrade flow is detected when version is updated
* - verify on upgrade objects are updated
* - verify on upgrade unused objects are deleted
* * optimize cleanuoUnusedResourses function
* fix logging error
* * CR fixes
* remove unused methods in unit tests
* use reflect.DeepEqual to compare runtime.Objects in unit test
* check DeletionTimeStamp before entering upgrade
* * uit tests - CR is deleted during/before upgrade
* * CR fixes:
* - invoke Deletion callbacks before and after resource deletion on clenaupUnusedResourse function
* - when looking for object to delete - search not only by name but by namespace as well
* * delete unused resources of previous version is CDI CRF is marked for deletion during upgrade
* add unit test for this case
* * should not start upgrade if versions are identical
* * add unit tests to verify there is no upgrade on identical versions
* CR fix - return error
* don't think we have to explicitly cleanup old resources when CDI deleted during upgrade
* refactor code and properly handle deleting resources on upgrade
* reconcile loop now does three way merge to better handle upgrade