Commit Graph

88 Commits

Author SHA1 Message Date
jgilaber
6cb4e2fa83 Enable storage model collector by default
By default Watcher enables only the compute model collector [1]. This
change enables the storage one as well, since otherwise when doing
volume migration the model quickly becomes obsolete if there are new
volumes created while an audit is running. The storage model is only
enabled if a cinder service is registered in keystone.

[1] https://docs.openstack.org/watcher/latest/configuration/watcher.html#collector.collector_plugins

Assisted-By: Cursor
Closes-Bug: 2111785
Change-Id: I864d3fc12d6364f1932cf5d2348a6b68169641e9
Signed-off-by: jgilaber <jgilaber@redhat.com>
2025-09-10 15:58:24 +02:00
Douglas Viroel
f21df7ce1e Update prometheus-threading parent jop
Updates watcher-prometheus-integration-threading job
parent, so every new config option added to
watcher-prometheus-integration job is also added/tested
in the threading job.

Change-Id: I38c95f638f748fd5c051c312817e9123d6037ab5
Signed-off-by: Douglas Viroel <viroel@gmail.com>
2025-09-03 13:44:06 -03:00
morenod
eb3fdb1e97 Update aetos fake data job to disable real metrics
Job watcher-aetos-integration is failing because of
having real metrics enabled coming from ceilometer.

We need to disable ceilometer-acompute and node_exporter so only
injected data will be considered when asking prometheus to take
decisions


Change-Id: If4f2c3f6f89527d768c48f1ca4967339837bb994
Signed-off-by: morenod <dsanzmor@redhat.com>
2025-08-28 10:51:08 +00:00
Douglas Viroel
03c09825f7 Extend compute model attributes
This patch extends compute model attributes by
adding new fields to Instance element. Values are
populated by nova the collector, using the same
nova list call, but requires a more recent compute
API microversion.
A new config option was added to allow users to
enable or disable the extended attributes and it is
disable by default.
Configure prometheus-based jobs to run on newer version
of nova api (2.96) and enables the extended attributes
collection.

Implements: bp/extend-compute-model-attributes

Assisted-By: Cursor (claude-4-sonnet)

Change-Id: Ibf31105d780dce510a59fc74241fa04e28529ade
Signed-off-by: Douglas Viroel <viroel@gmail.com>
2025-08-26 11:35:18 -03:00
Jaromir Wysoglad
8309d9848a Add Aetos datasource
Implement the spec for multi-tenancy support for metrics. This adds
a new 'Aetos' datasource very similar to the current Prometheus
datasource. Because of that, the original PrometheusHelper class
was split into two classes and the base class is used for
PrometheusHelper and for AetosHelper. Except for the split, there
is one more change to the original PrometheusHelper class code, which
is the addition and use of the _get_fqdn_label() and
_get_instance_uuid_label() methods.

As part of the change, I refactored the current prometheus datasource
unit tests. Most of them are now used to test the PrometheusBase class
with minimal changes. Changes I've made to the original tests:

- the ones that can be be used to test the base class are moved into the
  TestPrometheusBase class
- the _setup_prometheus_client, _get_instance_uuid_label and
  _get_fqdn_label functions are mocked in the base class tests.
  Their concrete implementations are tested in each datasource tests
  separately.
- a self._create_helper() is used to instantiate the helper class with
  correct mocking.
- all config value modification is the original tests got moved out and
  instead of modifying the config values, the _get_* methods are mocked
  to return the wanted values
- to keep similar test coverage, config retrieval is tested for each
  concrete class by testing the _get_* methods.

New watcher-aetos-integration and watcher-aetos-integration-realdata
zuul jobs are added to test the new datasource. These use the same set
of tempest tests as the current watcher-prometheus-integration jobs.
The only difference is the environment setup and the Watcher config,
so that the job deploys Aetos and Watcher uses it instead of accessing
Prometheus directly.

At first this was generated by asking cursor to implement the linked spec
with some additional prompts for some smaller changes. Afterwards I manually
went through the code doing some cleanups, ensuring it complies with
PEP8 and hacking and so on. Later on I manually adjusted the code to use
the latest observabilityclient changes.
The zuul job was also mostly generated by cursor.

Implements: https://blueprints.launchpad.net/watcher/+spec/prometheus-multitenancy-support

Generated-By: Cursor with claude-4-sonnet model
Change-Id: I72c2171f72819bbde6c9cbbf565ee895e5d2bd53
Signed-off-by: Jaromir Wysoglad <jwysogla@redhat.com>
2025-08-14 02:27:24 -04:00
Zuul
355671e979 Merge "Add a new tox environment to run unit tests in threading mode" 2025-08-13 21:37:19 +00:00
Zuul
4080d5767d Merge "Disable real metrics on devstack injected data jobs" 2025-08-11 17:10:32 +00:00
Douglas Viroel
8ca794cdbb Add a new tox environment to run unit tests in threading mode
It is done by disabling the eventlet patching and configuring
oslo.service backend to threading. Once oslo.service backend is
configured, it can't be reverted to eventlet. This needs to be
done before including other modules, which may include oslo.service
library.
Adds a job that run a subset of tests with eventlet patching disabled.

Change-Id: I9f8c2c5bbcf3192313cc3b309e8f2719a3bea18f
Signed-off-by: Douglas Viroel <viroel@gmail.com>
2025-08-05 16:50:29 -03:00
Douglas Viroel
f879b10b05 Extend decision engine to support threading mode
With the events of eventlet removal, Watcher will need
to be adapted to support both modes, eventlet and threading, for
a couple of releases before removing all eventlet code.
This patch adds methods and classes that allow decision engine
modules to create futurist thread pools instead of green thread pools,
based on a environment variable that can be enabled by service.
It moves continuous audit handler instance to decison engine service,
so it can be started together with the main decision engine service.
Adds an environment variable that allows the user to disable
eventlet monkey patching and to use oslo.service threading backend.

Change-Id: I8a8be0a7cebdc44005fd77ec960543828c7da318
Signed-off-by: Douglas Viroel <viroel@gmail.com>
2025-08-05 16:45:48 -03:00
morenod
0435200fb1 Disable real metrics on devstack injected data jobs
We need to disable real data metrics comming from host and
instances on injected data jobs as they are creating wrong results
when they are mixed with the injected data.

We already did this on watcher-operator disabling ceilometer agent and
node_exported on [1] so now we have to do it on devstack installations,
disabling meminfo on node_exporter for host metrics (cpu is already
disabled) and sg-core for instance metrics

[1] https://github.com/openstack-k8s-operators/watcher-operator/pull/196

Change-Id: I4130ca6dd7cb52d96842e04e7720431ebc76efff
Signed-off-by: morenod <dsanzmor@redhat.com>
2025-08-04 12:41:54 +02:00
morenod
1256b24133 Adapt zuul.yaml strategies jobs to include tests with tag 'strategy'
The idea is to adapt zuul.yaml to future test structure where every strategy will be on its own file so now we keep executing everything inside test_execute_strategies but also any other test on any file with tag 'strategy'

Change-Id: I304c858078d35beb1f7b4f1fad4ea8bedde674af
2025-06-04 09:50:35 +00:00
Chandan Kumar (raukadah)
188e583dcb Drop sg_core related prometheus var
https://review.opendev.org/c/openstack/devstack-plugin-prometheus/+/950476
adds the support for passing custom scrape target and
https://github.com/openstack-k8s-operators/sg-core/pull/25
drops sg_core prometheus related vars.

So we also need to sg_core related prometheus vars from our job.
This cr achieves the same.

Depends-On: https://github.com/openstack-k8s-operators/sg-core/pull/25
Depends-On: https://review.opendev.org/c/openstack/devstack-plugin-prometheus/+/950476

Change-Id: I6c8f54f8749e81b532c88e9224022294c4a1d331
Signed-off-by: Chandan Kumar (raukadah) <chkumar@redhat.com>
2025-05-21 16:52:36 +05:30
Sean Mooney
77e7e4ef7b drop jammy jobs
ubuntu jammy is nolonger part of the required
testing runtime so this change simply removes
the jammy jobs.

Change-Id: I1e3bbb14cea5b856e8146f3a32d60c3a4ffdcfcc
2025-05-02 17:41:06 +00:00
Alfredo Moralejo
c4acce91d6 Add real-data based tests to experimental and weekly pipelines
This job is adding a new job using prometheus datastore and real
workload data into the experimental pipeline so that we can run it
on-demand.

Also, it is adding it to the weekly periodic pipeline as agreed on
Watcher meeting.

Also I am excluding strategies execution with annotation `real_load` in
non-real-load jobs.

Finally, I'm moving the project configuration to the end of the file
as requested in the comments, as it's the usual location by convention.

Change-Id: Id41efda2f0dd8b1521df3f6179c3504f298e0e59
2025-04-15 16:11:21 +02:00
Zuul
adbcac9319 Merge "Replace watcherclient functional job with python-watcherclient-functional" 2025-04-15 13:32:34 +00:00
Chandan Kumar (raukadah)
0702cb3869 Drop sg_core prometheus related vars
The depends-on pr removes the installation of promotheus[1] and node
exporter[2] from sg_core. We no longer need to define those vars in
the devstack config.

Links:
[1]. https://github.com/openstack-k8s-operators/sg-core/pull/21
[2]. https://github.com/openstack-k8s-operators/sg-core/pull/23

Note: We do not need to enable sg_core service on compute node,
so removing it's plugin call.

Change-Id: Ie8645813a360605635de4dff9e8d1ba0d7a0cdc3
Signed-off-by: Chandan Kumar (raukadah) <raukadah@gmail.com>
2025-04-04 19:36:54 +05:30
Chandan Kumar (raukadah)
253e97678c Replace watcherclient functional job with python-watcherclient-functional
https://review.opendev.org/c/openstack/python-watcherclient/+/943132
Move functional tests from watcher_tempest_plugin to watcherclient and
adds new zuul job based on devstack-tox-functional to run functional tests.

This pr replaces the existing zuul job using tempest regex with
devstack tox functional job. The new job will run only watcher/api
changes.

Closes-Bug: #2100741

Depends-On: https://review.opendev.org/c/openstack/python-watcherclient/+/943132

Change-Id: Ic2371745fe8aaf6f283151111fec4f92ea6bdf69
Signed-off-by: Chandan Kumar (raukadah) <chkumar@redhat.com>
2025-03-20 10:04:13 +00:00
Douglas Viroel
539be503f0 Do not collect node_exporter cpu metrics in prometheus job
Prometheus job already injects fake metrics for hosts and
instances. This patch disables node_exporter cpu metric
collector to avoid mixing both real and fake values in
test execution.

Depends-On: https://review.opendev.org/c/openstack/devstack-plugin-prometheus/+/942181
Depends-On: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/943825

Change-Id: Ie2b7269ab15af6190ce72ba2b149e84375f4419d
2025-03-08 10:57:31 -03:00
Douglas Viroel
342fe8882a Enable prometheus datasource in watcher-prometheus-integration job
Enable prometheus as datasouce in tempest configuration,
to enable metric generation needed to run some scenario
tests. It is enabled on the watcher-prometheus-integration
job

Depends-On: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/942141
Depends-On: https://review.opendev.org/c/openstack/watcher-tempest-plugin/+/942308

Change-Id: I2b657782aedf61d89766fcd18bb453b62c0b0e3b
2025-02-22 10:46:01 -03:00
Chandan Kumar (raukadah)
7fcca0cc46 Enable prometheus and node_exporter from devstack-plugin-prometheus
https://opendev.org/openstack/devstack-plugin-prometheus is the new
devstack plugin providing functionality to install/configure
prometheus/node_exporter.

It will replace sg_core devstack plugin in future.

Depends-On: https://review.opendev.org/c/openstack/watcher/+/938893
Depends-On: https://review.opendev.org/c/openstack/devstack-plugin-prometheus/+/940426

Change-Id: Ia75e6597275b36c04cde653c16f7d45ed23bc261
Signed-off-by: Chandan Kumar (raukadah) <chkumar@redhat.com>
2025-02-19 08:49:53 -03:00
Zuul
e535177bc0 Merge "Remove ceilometer datasource" 2025-01-29 13:22:46 +00:00
Ronelle Landy
56b8c1211a Add Tempest test for Prometheus integration
This review adds a base job to test Watcher,
via devstack/tempest installation) and the
intreraction with the newly added
Prometheus data source.

Related change:
https://review.opendev.org/c/openstack/watcher/+/934423

Change-Id: Id9d7d2ded1aae160a97a5f0aa0f7048a9c38e87d
2025-01-10 08:50:04 -05:00
Takashi Kajinami
da23fdc621 Remove ceilometer datasource
This datasource requires Ceilometer API which was already removed some
years ago. The implementation should have been removed when dependency
on ceilometerclient was removed by [1].

Also remove some job definitions which are not actually used.

[1] 01d74d0a87

Change-Id: I29c3865dc1207f1bbbb266e4217cf8888afebfb6
2024-12-16 23:51:27 +09:00
Ghanshyam Mann
c80c940a4f Update gate jobs as per the 2025.1 cycle testing runtime
As per 2025.1 testing runtime[1], we need to test on Ubuntu
Noble (which will be taken care by depends-on tempest and devstack
patches to move base jobs to Noble) and at least single job to run on
Ubuntu Jammy (for smooth upgrade from previous releases).

This commit adds a new job to run on Jammy which can be removed
in future cycle when testing runtime test next version of Ubuntu
as default.

Depends-On: https://review.opendev.org/c/openstack/tempest/+/932156
Depends-On: https://review.opendev.org/c/openstack/watcher/+/933062

[1] https://governance.openstack.org/tc/reference/runtimes/2025.1.html

Change-Id: I1bc11633f4739bc87c7741496a2972ab99c9b08b
2024-11-25 18:27:25 +00:00
Lucian Petrut
922478fbda Unblock the CI gate
The Nova collector json schema validation started [1][2] failing after
the jsonschema upper constraint was bumped from 4.17.3 to 4.19.1 [3].

The reason is that jsonschema v4.18.0a1 switched to a reference
resolving library [4], which treats the aggregate "id" as a jsonschema
id and expects it to be a string [5]. For this reason, we're now getting
AttributeError exceptions.

As a workaround, we'll rename the "id" ref element as "host_aggr_id".

Also, the watcher-tempest-multinode job is configured to use Focal,
which is no longer supported by Devstack [6]. That being considered,
we'll switch to Ubuntu Jammy (22.04).

While at it, we're disabling Cinder Backup, which isn't used while
testing Watched. It currently causes Devstack failures since it
uses the Swift backend by default, which is disabled.

[1] https://paste.opendev.org/raw/bjQ1uIdbDMnmA1UEhxLL/
[2] https://paste.opendev.org/raw/bNgxqulBwBLYB7tNhrU4/
[3] ab0dcbdda2
[4] https://github.com/python-jsonschema/jsonschema/releases/tag/v4.18.0a1
[5] c23a5dc1c9/referencing/jsonschema.py (L54-L55C18)
[6] https://paste.openstack.org/raw/bSoSyXgbtmq6d9768HQn/

Change-Id: I300620c2ec4857b1e0d402a9b57a637f576eeb24
2023-10-23 09:21:55 +03:00
Thierry Carrez
6003322711 Move queue declaration to project level
This moves the watcher queue declaration from the pipeline level
(where it is no longer valid) to the project level.

https: //lists.openstack.org/pipermail/openstack-discuss/2022-May/028603.html
Change-Id: I06923abb00f7eecd59587f44cd1f6a069e88a9fc
2022-09-26 14:19:58 +02:00
OpenStack Release Bot
0b2e641d00 Switch to 2023.1 Python3 unit tests and generic template name
This is an automatically generated patch to ensure unit testing
is in place for all the of the tested runtimes for antelope. Also,
updating the template name to generic one.

See also the PTI in governance [1].

[1]: https://governance.openstack.org/tc/reference/project-testing-interface.html

Change-Id: Ide6c6c398f8e6cdd590c6620a752ad802a1f5cf8
2022-09-13 12:30:33 +00:00
OpenStack Release Bot
ac6911d3c4 Add Python3 zed unit tests
This is an automatically generated patch to ensure unit testing
is in place for all the of the tested runtimes for zed.

See also the PTI in governance [1].

[1]: https://governance.openstack.org/tc/reference/project-testing-interface.html

Change-Id: I5cf874842550de18ff777b909fd28e2c32e6d530
2022-03-10 12:14:06 +00:00
OpenStack Release Bot
e4fab0ce7f Add Python3 yoga unit tests
This is an automatically generated patch to ensure unit testing
is in place for all the of the tested runtimes for yoga.

See also the PTI in governance [1].

[1]: https://governance.openstack.org/tc/reference/project-testing-interface.html

Change-Id: I328b3ccb76153fa0dbb4d174dd976412be049200
2021-09-15 17:14:09 +00:00
ricolin
204992ff6f Enable tls-proxy as default in test jobs
Change-Id: Idbc8850269d84d0a3041c17f4453b00452c9dab8
2021-07-01 08:25:12 +00:00
OpenStack Release Bot
2205f4e4e3 Add Python3 xena unit tests
This is an automatically generated patch to ensure unit testing
is in place for all the of the tested runtimes for xena.

See also the PTI in governance [1].

[1]: https://governance.openstack.org/tc/reference/project-testing-interface.html

Change-Id: Ib957dae35926bf4c18e5a0c126904bbc67939f21
2021-03-22 10:01:44 +00:00
sue
63b6997c83 Drop lower-constraints
Lower-constraints is not a requirement of the OpenStack Python PTI
[0] and there currently is a discussion on the mailing list [1]
about dropping the test, with the oslo team already having done
so [2].

The new dependency resolver in pip fails due to incompatible
dependency versions in our lower-constraints file, meaning that
we were never providing any real guarantees with it.

To unblock the CI, I am disabling lower-constraints job for now,
with the option to reenable it in case we fix the constraints,
and based on the outcome of the mailing list discussions and
consensus.

[0]. https://governance.openstack.org/tc/reference/pti/python.html
[1]. http://lists.openstack.org/pipermail/openstack-discuss/2021-January/019672.html
[2]. http://lists.openstack.org/pipermail/openstack-discuss/2021-January/019659.html

Change-Id: I588fa809839cf3112dae24e356547100f7e89bc5
2021-01-21 03:28:56 +00:00
Zuul
2454d4d199 Merge "Add Python3 wallaby unit tests" 2020-09-30 04:06:23 +00:00
OpenStack Release Bot
f8797a7f70 Add Python3 wallaby unit tests
This is an automatically generated patch to ensure unit testing
is in place for all the of the tested runtimes for wallaby.

See also the PTI in governance [1].

[1]: https://governance.openstack.org/tc/reference/project-testing-interface.html

Change-Id: I8951721c8c06ba6ebde9b68665c9aa791ab7ef9b
2020-09-22 14:12:54 +00:00
Ghanshyam Mann
e21e5f609e [goal] Migrate testing to ubuntu focal
As per victoria cycle testing runtime and community goal[1]
we need to migrate upstream CI/CD to Ubuntu Focal(20.04).

Fixing:
- bug#1886298
Bump the lower constraints for required deps which added python3.8 support
in their later version.

- Move multinode jobs to focal nodeset

Story: #2007865
Task: #40227

Closes-Bug: #1886298

[1] https://governance.openstack.org/tc/goals/selected/victoria/migrate-ci-cd-jobs-to-ubuntu-focal>

Depends-On: https://review.opendev.org/#/c/752294/

Change-Id: Iec953f3294087cd0b628b701ad3d684cea61c057
2020-09-17 10:59:59 +00:00
Luigi Toscano
ed59145354 Native Zuul v3 watcher-grenade job + some cleanup
Create a native Zuul v3 grenade job. It matches the existing job,
even though it doesn't call any local hook as the current legacy
job does (because no local hook exists and it should be rewritten
as zuul configuration if it did).

The new job reuses the variable definition of the devstack watcher
job, so clean up that job as well:
- do not depend on devstack-gate, which is not needed and will be
  deprecated soon anyway;
- use the new way (tempest_plugins) to define which tempest plugin
  should be installed;
- remove the definition of USE_PYTHON3: true and simply inherit
  the value set by devstack;
- remove the definition of PYTHONUNBUFFERED, not really set
  anywhere else and only useful back in the days in Jenkins.

Change-Id: Ib0ed3c0f395e1b85b8f25f6e438c414165baab32
2020-07-29 09:45:17 +02:00
licanwei
dbd86be363 voting watcher-grenade
Change-Id: I69ef17b545c62fe5b17e002b4c154e80e7fa5ffa
2020-06-18 10:14:01 +08:00
zhurong
097ac06f0b Use uwsgi binary from path and mark grenade non-voting
Change-Id: Iaa6283e3f34166210cc2d0c918e610484bfd3ab9
2020-06-16 08:02:26 +00:00
OpenStack Release Bot
60a829e982 Add Python3 victoria unit tests
This is an automatically generated patch to ensure unit testing
is in place for all the of the tested runtimes for victoria.

See also the PTI in governance [1].

[1]: https://governance.openstack.org/tc/reference/project-testing-interface.html

Change-Id: Ia59e92394115c4b672c86772840a1e188695079f
2020-04-23 09:48:55 +00:00
Ghanshyam Mann
17f5a65a62 [ussuri][goal] Drop python 2.7 support and testing
OpenStack is dropping the py2.7 support in ussuri cycle.

Watcher is ready with python 3 and ok to drop the
python 2.7 support.

Complete discussion & schedule can be found in
- http://lists.openstack.org/pipermail/openstack-discuss/2019-October/010142.html
- https://etherpad.openstack.org/p/drop-python2-support

Ussuri Communtiy-wide goal:
https://governance.openstack.org/tc/goals/selected/ussuri/drop-py27.html

Depends-On: https://review.opendev.org/#/c/693631/

Change-Id: I603c6d2c22779e8ef2e70eb6369fc521a77c9c3a
2019-11-16 14:55:01 +00:00
sunjia
a7b24ac6a5 Switch to Ussuri jobs
Change-Id: I681f324c243860255a9ede0794e7d96026bca5a3
2019-10-22 13:39:11 +08:00
Zuul
cdb81e43f6 Merge "improve strategies tempest" 2019-08-26 12:52:22 +00:00
licanwei
8ca5d65501 improve strategies tempest
watcher-tempest-strategies includes all strategies tempest,
we add it and remove all other individual strategy tempest.

Depends-on: I3e45d4a66a6e1bf55499def8550da38ddf01b638

Change-Id: I182bf0ddc528099f5115098b825e9bddae3b187a
2019-08-23 09:12:08 +00:00
licanwei
6ac6ab2444 add placement min_microversion
for tempest test

Change-Id: Ie98e2c000568ecac63e8981a8b7087029c0d3705
2019-08-22 23:48:11 -07:00
Zuul
7289243624 Merge "[train][goal] Define new 'watcher-tempest-functional-ipv6-only' job" 2019-08-23 03:05:20 +00:00
licanwei
d6fbc79742 set compute min_microversion
The min microversion that Watcher needed is 2.56.[1]

[1]:https://github.com/openstack/watcher/blob/master/watcher/common/clients.py

Change-Id: If21b0df50e2f2cc2884f531cb40084e95a688026
2019-08-20 14:18:08 +08:00
Ghanshyam Mann
26cce968e9 [train][goal] Define new 'watcher-tempest-functional-ipv6-only' job
As part of Train community goal 'Support IPv6-Only Deployments and Testing'[1],
Tempest has defined the base job 'devstack-tempest-ipv6' which will
deploy services on IPv6.

This commit adds the new job 'watcher-tempest-functional-ipv6-only'
run on gate which is derived from 'devstack-tempest-ipv6'.

Verification structure will be:
- 'devstack-IPv6' deploy the service on IPv6
- 'devstack-tempest-ipv6' run will verify the IPv6-only setting and listen address
- 'watcher-tempest-functional-ipv6-only' will run the tests.

Story: #2005477
Task: #35939

[1] https://governance.openstack.org/tc/goals/train/ipv6-support-and-testing.html

Change-Id: I42b7e5ff5fd64a21bdb8a32f319759a18c173601
2019-08-18 14:09:20 +00:00
pengyuesheng
148ae3688d Add Python 3 Train unit tests
See the Train python3-updates goal document for details:
https://governance.openstack.org/tc/goals/train/python3-updates.html

Change-Id: I11f7aafdfb3a45569b021df748ea32ebddc4ba6b
2019-07-01 14:57:27 +08:00
licanwei
c3e0e41fbf add strategy tempest job
Change-Id: I84a68f92fa34cf19487323f2afb89d379b8d80f5
2019-06-06 07:18:53 +00:00
licanwei
c99e051a14 Add tempest voting
Change-Id: If09544e96ef23a6c52bde1f7211bf323d9609f63
2019-04-30 16:02:32 +08:00