Commit Graph

1955 Commits

Author SHA1 Message Date
Thierry Carrez
e206bc474c 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
(cherry picked from commit 6003322711)
stein-eol
2023-08-19 07:31:12 +00:00
Ghanshyam Mann
ba394096fd Make greande jobs n-v for EM and oldest stable
As discussed in ML thread[1], we are going to
make grenade jobs as non voting for all EM stable and
oldest stable. grenade jobs are failing not and it might take
time to fix those if we are able to fix. Once it jobs are
working depends on project team, they can bring them back to
voting or keep non-voting.

If those jobs are failing consistently and no one is fixing them
then removing those n-v jobs in future also fine.

[1] http://lists.openstack.org/pipermail/openstack-discuss/2020-June/015499.html

StableOnly

Change-Id: Icf6403de9655e99e1bed44ded896b1bbb2a6a635
2020-06-22 21:11:29 -05:00
licanwei
306224f70c Don't throw exception when missing metrics
When querying data from datasource, it's possible to miss some data.
In this case if we throw an exception, Audit will failed because of
the exception. We should remove the exception and give the decision
to the strategy.

Change-Id: I1b0e6b78b3bba4df9ba16e093b3910aab1de922e
Closes-Bug: #1847434
can not cherry picke from master because of code refactoring
2019-10-18 16:41:29 +08:00
Sumit Jamgade
ec5780902f pass default_config_dirs variable for config initialization.
Currently default config files are being for initialization of CONF from
oslo_config. However default config dirs are not being passed as a
result watcher components (eg: decision-engine) are unable to load
files from default directories (eg: /etc/watcher/watcher.conf.d)
supported by oslo_config. This is a short-coming on watcher's side.
Also this forces user to have multiple config for each component.

Without this default set, oslo_config will search for conf with string
'python-watcher' in it, eg: /etc/python-watcher/.... Since there is a
because project=python-watcher a couple of lines below

This patch adds the option after evaluating using project as 'watcher'
which is similar to evaluation of default_config_files and also allows
it to be passed in as a function parameter.

Change-Id: I013f9d03978f8716847f8d1ee6888629faf5779b
(cherry picked from commit dce23d7eb4)
2019-09-13 22:44:18 +00:00
licanwei
78574f92e9 Move eventlet monkey patch code
Eventlet monkey patching is not recommended on top level __init__ [1],
because Apache WSGI module uses own concurrency model [2] and API
service under Apache should be runned without eventlet. This patch
moves eventlet monkey patching code to watcher.cmd module __init__
(like in nova).

[1] https://specs.openstack.org/openstack/openstack-specs/specs/eventlet-best-practices.html
[2] http://modwsgi.readthedocs.io/en/develop/user-guides/processes-and-threading.html

Change-Id: Ie5cf67429ea9ef8d00dd7348ce288437ea105c08
(cherry picked from commit ac3aa94599)
2019-08-30 15:13:29 +00:00
chenke
34324c95f9 Reduce the query time of the instances when call get_instance_list()
The problem is that watcher is passing limit=-1 to novaclient when
listing servers which will always make at least two API calls to be
sure it's done paging:

https://github.com/openstack/python-novaclient/blob/13.0.1/novaclient/v2/servers.py#L896

If we can determine before we list servers that there are only a
certain number where the number of servers is less than 1000. For
example: 4, we should just pass the limit=len(servers) to novaclient
and avoid the second call for paging which takes extra time and
yields no results.

Change-Id: I797ad934a0f8496dbcbf65798e28b0443f238137
Closes-Bug: #1834679
(cherry picked from commit 1e8b17ac46)
2019-07-09 09:39:46 -04:00
Matt Riedemann
0f90ad596c [stable-only] Stop running watcherclient-tempest-functional
The watcherclient-tempest-functional job is broken for stable
branches since python-watcherclient in stable/stein does not
support microversions but that is what the tempest plugin
is using when executing commands [1]. Since the job is non-voting
in stable anyway we are not losing anything really, and fixing
the job in stable would be complicated, so we just remove it here.

[1] I79fcaded18471d2df4d49a526ad3024e55488f96

Change-Id: Idff3f7cb3db1af1aacb680ab3611149355474841
2019-05-29 13:03:52 -04:00
Zuul
322cd786df Merge "Handle no nova CDM in notification code" into stable/stein 2019-05-29 08:13:30 +00:00
Zuul
7e2b6c75bb Merge "Optimize NovaClusterDataModelCollector.add_instance_node" into stable/stein 2019-05-29 08:13:29 +00:00
Zuul
fcbf256cbb Merge "Remove dead code from NovaClusterDataModelCollector" into stable/stein 2019-05-29 08:02:34 +00:00
Zuul
dbeca934f5 Merge "Update migration notification" into stable/stein 2019-05-29 07:49:55 +00:00
Zuul
59be8928d0 Merge "allow building docs without ceilometer client" into stable/stein 2019-05-28 01:36:30 +00:00
Matt Riedemann
fd9c5c85cb Optimize NovaClusterDataModelCollector.add_instance_node
This does two things:

1. Rather than make an API call per server on the host,
   get all of the servers in a single API call by
   filtering on the host. The os-hypervisors API results
   to use make this require a bit of refactoring since
   get_compute_node_by_name does not have the service
   entry in it and get_compute_node_by_id does not have the
   servers entry in it. A TODO is added to clean that up
   with a single call to os-hypervisors once we have the
   support in python-novaclient.

2. Pulls get_node_by_uuid() out of the loop.

A test is added for the nova_helper get_instance_list method
since one did not exist before.

The fake compute node mocks in test_nova_cdmc_execute are
also cleaned up since, as noted above, get_compute_node_by_name
and get_compute_node_by_id don't both return all the details.

Change-Id: Ifd9f83c2f399d4c1765b0c520f4d5a62ad0f5fbd
(cherry picked from commit fdea38fb06)
2019-05-27 10:07:20 +03:00
Matt Riedemann
2132063fd3 Remove dead code from NovaClusterDataModelCollector
The _add_virtual_layer and _add_virtual_servers methods
have not been used since Ic4659d1f18af181203439a8bf1b38805ff34c309
in Stein so this change removes them.

Change-Id: I8c05f29c3c03aa5897cb182bb492948771c42881
(cherry picked from commit 4cd8a2f46e)
2019-05-27 10:06:27 +03:00
Sumit Jamgade
42957fc912 allow building docs without ceilometer client
CeilometerClient has been deprecated and is no longer available for
master. Without ceilometer client installed docs fail to build with
an exception [1].

This patch marks the import optional.

1 -
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/sphinx/config.py", line 368, in
eval_config_file
    execfile_(filename, namespace)
  File "/usr/lib/python2.7/site-packages/sphinx/util/pycompat.py", line
150, in execfile_
    exec_(code, _globals)
  File "/usr/lib/python2.7/site-packages/six.py", line 709, in exec_
    exec(""exec _code_ in _globs_, _locs_"")
  File "<string>", line 1, in <module>
  File
"/home/abuild/rpmbuild/BUILD/python-watcher-2.1.0.dev45/doc/source/conf.py",
line 20, in <module>
    objects.register_all()
  File
"/home/abuild/rpmbuild/BUILD/python-watcher-2.1.0.dev45/watcher/objects/__init__.py",
line 31, in register_all
    __import__('watcher.objects.action_plan')
  File
"/home/abuild/rpmbuild/BUILD/python-watcher-2.1.0.dev45/watcher/objects/action_plan.py",
line 78, in <module>
    from watcher import conf
  File
"/home/abuild/rpmbuild/BUILD/python-watcher-2.1.0.dev45/watcher/conf/__init__.py",
line 28, in <module>
    from watcher.conf import datasources
  File
"/home/abuild/rpmbuild/BUILD/python-watcher-2.1.0.dev45/watcher/conf/datasources.py",
line 21, in <module>
    from watcher.datasources import manager
  File
"/home/abuild/rpmbuild/BUILD/python-watcher-2.1.0.dev45/watcher/datasources/manager.py",
line 19, in <module>
    from watcher.datasources import ceilometer as ceil
  File
"/home/abuild/rpmbuild/BUILD/python-watcher-2.1.0.dev45/watcher/datasources/ceilometer.py",
line 21, in <module>
    from ceilometerclient import exc
ImportError: No module named ceilometerclient
)

Change-Id: Idcf582c2495aab39aacf691b687759405bb94dca
(cherry picked from commit: 241df0d5f4)
2019-05-27 02:46:08 +00:00
Matt Riedemann
3c75c13f80 Handle no nova CDM in notification code
As of change Ic4659d1f18af181203439a8bf1b38805ff34c309 the
nova CDM will not be built until an audit is performed.

Instances and services (compute hosts) can be created and
deleted before an audit is performed which will attempt
to use the notification callback function which relies
on the CDM being built already, and if not results in
an AttributeError.

This change side-steps that issue by checking to see that the
nova CDM exists before trying to call the notification
callback function.

An alternative to this is forcefully create the nova CDM when
notifications are received before an audit which is what happend
before change Ic4659d1f18af181203439a8bf1b38805ff34c309.

Change-Id: I16990afb82019821c443c9df26d3e515e52efa69
Closes-Bug: #1828582
(cherry picked from commit 8a206a6ae5)
2019-05-22 15:38:49 +00:00
licanwei
7fafedbb43 Update migration notification
_post_live_migration[1] runs on the source host and calls
post_live_migration_at_destination on the dest host which
emits the instance.live_migration_post_dest.end notification:[2]
But it's not the last notification for the live migration operation.
so we should use instance.live_migration_post.end instead of
instance.live_migration_post_dest.end notification.

[1]daa2ac2287/nova/compute/manager.py (L6907)
[2]daa2ac2287/nova/compute/manager.py (L7035)

Change-Id: Id1e2d98f56d5a95d49e32f98d2910660b9f48ce6
(cherry picked from commit 6d96512188)
2019-05-20 10:43:25 +00:00
chenke
750547bc33 Fix bandit and sphinx requirements for stable branches
This is a combination of 2 commits.

1st commit:
Update Sphinx requirement
Sphinx 2.0 no longer works on python 2.7, so we need to start capping
it there as well.

2nd commit:
Fix bandit runs with 1.6.0
The -x option for bandit changed in 1.6.0 and now
supports glob patterns so use that to correctly
exclude test code from bandit scans.

Change-Id: I588d3fb02ef61623affd82a43a54585aba0cb5f9
2019-05-20 12:40:30 +03:00
Dantali0n
36c2095254 Resolve problems with audit scope and add tests
This resolves problems with the audit scope such as the scope being
ignored, the scope not merging due to a type in .append, change update
into .add method when adding single elements to a set and making the
access of dict keys and values as lists work in python 3.7.

All these methods from the model builder now have tests to prevent
regressions.

Co-Authored-By: Canwei Li <li.canwei2@zte.com.cn>

Change-Id: I287763d5e426ff860aefabc4a1f3fe3f51accd76
(cherry picked from commit d84f8c50f5)
2019-05-08 01:44:46 +00:00
Tatiana Kholkina
a089183b52 Add hardware.cpu_util in workload_stabilization
Since commit I8df8921337ea3f4e751c0c822d823e64e3ca7e1c
the check for hardware.cpu.util was removed.
But it can be still used in workload stabilization.

Change-Id: I301487837aac2e1e63bce16a79d0f8136452c313
(cherry picked from commit 4db39c527d)
2019-04-26 08:21:36 +00:00
OpenDev Sysadmins
8989ed9357 OpenDev Migration Patch
This commit was bulk generated and pushed by the OpenDev sysadmins
as a part of the Git hosting and code review systems migration
detailed in these mailing list posts:

http://lists.openstack.org/pipermail/openstack-discuss/2019-March/003603.html
http://lists.openstack.org/pipermail/openstack-discuss/2019-April/004920.html

Attempts have been made to correct repository namespaces and
hostnames based on simple pattern matching, but it's possible some
were updated incorrectly or missed entirely. Please reach out to us
via the contact information listed at https://opendev.org/ with any
questions you may have.
2019-04-19 19:40:48 +00:00
Zuul
5b1610037c Merge "Replace openstack.org git:// URLs with https://" into stable/stein 2019-04-01 01:18:27 +00:00
ghanshyam
eb6771137d Migrate legacy jobs to Ubuntu Bionic
We have migrated the zuulv3 job to Bionic during Dec/Jan month.
 - http://lists.openstack.org/pipermail/openstack-discuss/2018-December/000837.html
 - https://etherpad.openstack.org/p/devstack-bionic
But that effort does not move all gate job to Bionic as there are
large amount of jobs are still legacy jobs. All the legacy jobs still
use Xenial as nodeset.

As per the decided runtime for Stein, we need to test everything on openstack
CI/CD on Bionic - https://governance.openstack.org/tc/reference/runtimes/stein.html

Below patch move the legacy base jobs to bionic which will move the derived jobs
automatically to bionic. These jobs are modified with branch variant so that they will use
Bionic node from stein onwards and xenial for all other stable branches
until stable/rocky.
- https://review.openstack.org/#/c/639096

This commit remove the overridden nodeset from legacy jobs
so that it will start using the nodeset defined in parent job.

More Details: 
- https://etherpad.openstack.org/p/legacy-job-bionic
- http://lists.openstack.org/pipermail/openstack-discuss/2019-March/003614.html

Depends-On: https://review.openstack.org/#/c/639096
Change-Id: I99646904d3d0fb26f4e45df1be841a67c4c2477b
(cherry picked from commit a4865b64f6)
2019-03-25 03:18:55 +00:00
Ian Wienand
ca1773ffb6 Replace openstack.org git:// URLs with https://
This is a mechanically generated change to replace openstack.org
git:// URLs with https:// equivalents.

This is in aid of a planned future move of the git hosting
infrastructure to a self-hosted instance of gitea (https://gitea.io),
which does not support the git wire protocol at this stage.

This update should result in no functional change.

For more information see the thread at

 http://lists.openstack.org/pipermail/openstack-discuss/2019-March/003825.html

Change-Id: Id6575b342e75058c00fd41041549277bbc1894aa
2019-03-24 20:36:26 +00:00
OpenStack Release Bot
9227b12efc Update UPPER_CONSTRAINTS_FILE for stable/stein
Update the URL to the upper-constraints file to point to the redirect
rule on releases.openstack.org so that anyone working on this branch
will switch to the correct upper-constraints list automatically when
the requirements repository branches.

Until the requirements repository has as stable/stein branch, tests will
continue to use the upper-constraints list on master.

Change-Id: I75ae6cefd75816c22bb163676010ed381b4a5123
2019-03-21 10:36:15 +00:00
OpenStack Release Bot
4acb764c68 Update .gitreview for stable/stein
Change-Id: I6c83e6b43d9e190a003491ecca5a036180138d53
2019-03-21 10:36:12 +00:00
Zuul
922783a5f8 Merge "Move client function test to watcher-tempest-plugin" 2.0.0 2.0.0.0rc1 stein-em 2019-03-16 10:15:57 +00:00
zhurong
c8bfb3b188 Move client function test to watcher-tempest-plugin
Depends-On: https://review.openstack.org/643244
Change-Id: I463203fee608be6684a09326d189d0254696d8e0
2019-03-15 03:49:54 +00:00
Tatiana Kholkina
e830d3793e Access to action's uuid by key
Change-Id: I9fe992be8f54de51f0c8e0a9fcf7880c68360929
Closes-Bug: #1818962
2019-03-14 11:51:48 +03:00
licanwei
a3e5b26ca4 releasenote for data model scope
Change-Id: Ie83b472152d6bd0d4e7435d224ad32c240587ada
2019-03-13 10:16:52 +08:00
Zuul
c1bb0ae443 Merge "Remove unused type check 'int' in audit.py" 2019-03-12 01:52:25 +00:00
Zuul
23cac6813b Merge "scope for datamodel" 2019-03-11 12:40:24 +00:00
Zuul
8d2c249f4b Merge "Generalize exceptions & structure of strategies" 2019-03-11 12:40:24 +00:00
Zuul
baf90dcc1b Merge "Fix unittest failed" 2019-03-11 09:32:30 +00:00
licanwei
6da31b42cb Fix unittest failed
ironicclient added 'interface' argument
https://review.openstack.org/#/c/640491/

Change-Id: I3cf826846281b44a346694a49059578b9fd4c0f1
2019-03-11 14:05:12 +08:00
chenke
9435418bc0 Remove unused type check 'int' in audit.py
Although this method does not report an error, this type check 'int'
is redundant and may be misleading.

Refercnce code url: https://github.com/openstack/wsme/blob/master/wsme/api.py

Change-Id: I631b5f9901790666e7f20275e8c8b99f06f06f0a
2019-03-11 12:03:40 +08:00
Dantali0n
b24bd7a3bb Generalize exceptions & structure of strategies
Many strategies execute very similar statements especially in
pre_execute and some might raise errors that others might not. This
same pattern of many similar statements can also be observed in
strategies their tests.

This patch addresses these issues, firstly; the BaseStrategy class gets
1 additional method _pre_execute which allows for general logic that
most strategies perform at that stage. This method can be executed
before the similarly named method of the superclass. A notable change
is that _pre_execute now handles common exception handling for
ClusterStateStale & ClusterStateNotDefined exceptions.

A similar pattern is applied to the test classes of the strategies
each of these classes now inherits from the TestBaseStrategy class.
This class provides the common attributes almost every test class for
the strategies requires such as: The mocked compute_model, mocked
audit_scope and an instance of FakerModelCollector.

Finally, some minor changes were required in test_strategy_context
& test_audit_handlers and exceptions around 0 nodes in cluster or
storage are removed.

Change-Id: Ia7154376b2448aac65cf17999cc8c3e1c8309b5b
2019-03-08 08:14:48 +01:00
licanwei
f337c67bfe scope for datamodel
This patch adds a scope to the datamodel, which only gets the VMs
 of the specified nodes, and no longer gets all VMs from nova.

Implements: blueprint scope-for-watcher-datamodel
Change-Id: Ic4659d1f18af181203439a8bf1b38805ff34c309
2019-03-08 14:30:18 +08:00
chenke
eb48cee9ab Fix inappropriate description about the audit_state_machine.png
Audit will only failed if an exception occured.
The situation that no solution found will not cause audit failed.

Change-Id: Ib9c3c3505f31c14500926ec13aa865dc8f7aa310
2019-03-07 17:08:53 +08:00
Zuul
29d29ef07a Merge " improve _collect_aggregates" 2019-03-06 03:29:37 +00:00
licanwei
4cdf6a7930 improve _collect_aggregates
There are id,name and hosts fields in the response of list aggregates.
    So don't need invoke get_aggregate_detail again.
    https://developer.openstack.org/api-ref/compute/?expanded=#list-aggregates

Change-Id: I94b768c2d3e0471ca619ce43387889ec74769ce2
2019-03-04 15:21:05 +08:00
Zuul
f19e0539b6 Merge "make ceilometer client import optional" 2019-03-04 04:32:33 +00:00
Zuul
2ea1f524e4 Merge "Provide two arguments to exception's message" 2019-02-27 03:26:36 +00:00
Tatiana Kholkina
594039f794 Provide two arguments to exception's message
Change-Id: I003c9e88abb08b11c22b008936413ee51f6096b1
Closes-Bug: #1817533
2019-02-26 08:47:30 +00:00
Zuul
c7fe13e9e3 Merge "Fix outlet_temp_control config parameter" 2019-02-26 02:29:09 +00:00
Zuul
b60d9cc4e4 Merge "Fix uniform airflow strategy config parameter" 2019-02-26 02:29:08 +00:00
Sumit Jamgade
ea728d91ab make ceilometer client import optional
on ImportError set HAS_CEILCLIENT to false

Without this none of the watcher componenets can be started for master
as well as rocky because the ceilometercleint was deprecated.

Using the variable the support for ceilometer can be gradually removed
from master

A backport to rocky will allow using watcher without ceilometerclient.

Change-Id: I3beb0fb8f0a8e8e0a22acaf6bdeca492836bbee2
2019-02-22 14:13:56 +01:00
licanwei
4590c47aec Fix uniform airflow strategy config parameter
'datasource' should be 'datasources'

Change-Id: I2bd183e020298a93029f38008619a5bebaed3de4
2019-02-20 14:20:17 +08:00
licanwei
dd3c4d5507 Fix outlet_temp_control config parameter
'datasource' should be 'datasources'

Change-Id: Iad337313f5d03b2fef34902950a4b5e41b3e980f
Depends-On: I2bd183e020298a93029f38008619a5bebaed3de4
2019-02-20 11:29:17 +08:00
licanwei
9c4b750c9a remove config parameter 'datasource'
Change-Id: I9d8435663710f4c5f1698df71bec67aa799722bd
2019-02-19 17:01:50 +08:00