Commit Graph

2042 Commits

Author SHA1 Message Date
Zuul
8000dd650f Merge "add strategy tempest job" 2019-06-06 09:11:19 +00:00
licanwei
c3e0e41fbf add strategy tempest job
Change-Id: I84a68f92fa34cf19487323f2afb89d379b8d80f5
2019-06-06 07:18:53 +00:00
licanwei
7f37f7b92a Remove apidoc
Now there are some errors when running apidoc,
actually we don't need apidoc, so remove it.
Closes-Bug: #1831515

Change-Id: I3b91a2c05ed62ae7bbd30a29e9db51d0e021410f
2019-06-04 11:34:07 +08:00
zhufl
9c1b83e610 Add missing ws separator between words
This is to add missing ws separator between words.

Change-Id: Iab23ce2ad081fef18978579594886950b8e2cb01
2019-05-31 14:51:30 +08:00
Zuul
5f94eef027 Merge "Group instance methods together in nova_helper" 2019-05-31 02:58:11 +00:00
Zuul
788f0055c1 Merge "Improve exceptions and logging in ds manager" 2019-05-31 02:57:33 +00:00
Zuul
88fb097539 Merge "Audit API supports new force option" 2019-05-29 10:01:04 +00:00
Zuul
ee3cbe46ef Merge "Fix test_metric_file_override metric from backend" 2019-05-29 08:13:31 +00:00
Dantali0n
a00daf9f26 Group instance methods together in nova_helper
Some of the methods for retrieving data about instances was placed
at the bottom of nova_helper instead of being close to the other
instance based methods.

Change-Id: I68475883529610e514aa82f1881105ab0cf24ec3
2019-05-29 09:02:21 +02:00
Zuul
855bfecf2f Merge "formal datasource interface implementation" 2019-05-28 12:15:06 +00:00
Zuul
5a3d1b741d Merge "Add force field to api-ref" 2019-05-28 02:10:42 +00:00
Zuul
15316a57db Merge "Optimize NovaClusterDataModelCollector.add_instance_node" 2019-05-27 03:02:53 +00:00
Zuul
38131a37b2 Merge "Remove 2.56 version compatibility check" 2019-05-27 03:01:48 +00:00
Zuul
59306b9a47 Merge "Require nova_client.api_version >= 2.56" 2019-05-27 03:01:47 +00:00
licanwei
2afd0dfcf5 Audit API supports new force option
Depends-on:Ia08694d2fb76907ea14e64116af2e722fe930063

Change-Id: Ib2d221ea9c994dea396c54cc8d2d32237025a1d4
Implements: blueprint add-force-field-to-audit
2019-05-27 02:08:33 +00:00
Matt Riedemann
fdea38fb06 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
2019-05-27 02:31:32 +03:00
Zuul
3b9364d4c7 Merge "Add force field to Audit" 2019-05-25 07:48:20 +00:00
Zuul
ba92791117 Merge "support-keystoneclient-option" 2019-05-25 07:01:10 +00:00
Dantali0n
5c492ea862 Fix test_metric_file_override metric from backend
Fix the list of required metrics from a datasource when testing the
existence of this metric in the metric map.

Change-Id: I19b7408a98893bc942c32edb09f1b3798ec8dc79
2019-05-24 15:32:55 +02:00
licanwei
62d181d925 Add force field to Audit
Partially Implements: blueprint add-force-field-to-audit

Change-Id: Ia08694d2fb76907ea14e64116af2e722fe930063
2019-05-24 00:05:13 -07:00
Matt Riedemann
a09cb3fa6c Remove 2.56 version compatibility check
With change Id34938c7bb8a5ca934d997e52cac3b365414c006
we require nova API version 2.56 or greater so we can
remove the compatibliity check in the
watcher_non_live_migrate_instance method.

The _check_nova_api_version method is left in place
for future compability checks.

Change-Id: I69040fbc13b03d90b9687c0d11104d4a5bae51d3
2019-05-23 16:01:44 -04:00
Matt Riedemann
7489126d83 Require nova_client.api_version >= 2.56
The [nova_client]/api_version defaults to 2.56 since
change Idd6ebc94f81ad5d65256c80885f2addc1aaeaae1. There
is compatibility code for that change but if 2.56 is
not available watcher_non_live_migrate_instance will
still fail if a destination host is used.

Since 2.56 has been available since the Queens version of
nova it should be reasonable to require at least that
version of nova is running for using Watcher.

This adds code which enforces the minimum version along
with a release note and "watcher-status upgrade check"
check method.

Note that it's kind of weird for watcher to have a config
option like nova_client.api_version since compute API
microversions are per API request even though novaclient
is constructed with the single configured version. It should
really be something the client (watcher in this case) determines
using version discovery and gracefully enables features if
the required nova API version is available, but that's a bigger
change.

Change-Id: Id34938c7bb8a5ca934d997e52cac3b365414c006
2019-05-23 15:49:19 -04:00
Zuul
1e6ce53273 Merge "Handle no nova CDM in notification code" 2019-05-22 02:57:56 +00:00
Dantali0n
e76c20d1c5 Improve exceptions and logging in ds manager
MetricNotAvailable and NoDatasourceAvailable allow to differentiate
between having no datasources configured and a required metric being
unavailable from the datasource. Both exceptions have comments so
that the use case is clear.

The input validation of the get_backend method in the datasource
manager is improved.

Additional logging information allows to identify which metric caused
the available datasource to be discarded.

Tests are updated to validate the correct functionality of the new
exceptions.

Change-Id: I512976cce2401dbcd249d42686b78843e111a0e7
2019-05-21 20:11:20 +02:00
Dantali0n
84cb589aa9 formal datasource interface implementation
Changes to the baseclass for datasources so strategies can be made
compatible with every datasource. Baseclass methods clearly describe
expected values and types for both parameters and for method returns.
query_retry has been added as base method since every current
datasource implements it.

Ceilometer is updated to work with the new baseclass. Several methods
which are not part of the baseclass and are not used by any strategies
are removed. The signature of these methods would have to be changed
to fit with the new base class while it would limit strategies to
only work with Ceilometer.

Gnocchi is updated to work with the new baseclass.

Gnocchi and Ceilometer will perform a transformation for the
host_airflow metric as it retrieves 1/10 th of the actual CFM

Monasca is updated to work with the new baseclass.

FakeMetrics for Gnocchi, Monasca and Ceilometer are updated to work
with the new method signatures of the baseclass.

FakeClusterAndMetrics for Ceilometer and Gnocchi are updated to work
with the new method signatures of the baseclass.

The strategies workload_balance, vm_workload_consolidation,
workload_stabilization, basic_consolidation, noisy_neighbour,
outlet_temp_control and uniform_airflow are updated to work with the
new datasource baseclass.

This patch will break compatibility with plugin strategies and
datasources due to the changes in signatures.

Depends-on: I7aa52a9b82f4aa849f2378d4d1c03453e45c0c78
Change-Id: Ie30ca3dbf01062cbb20d3be5d514ec6b5155cd7c
Implements: blueprint formal-datasource-interface
2019-05-21 11:18:08 +02:00
Zuul
f049815cf4 Merge "Enhance the collector_plugins option help text" 2019-05-21 09:10:12 +00:00
Zuul
7b1a7f0fe4 Merge "Allow using file to override metric map" 2019-05-21 09:04:40 +00:00
Zuul
3af43be7da Merge "Improve Gnocchi and Monasca datasource tests" 2019-05-21 09:04:39 +00:00
Zuul
f731aa1748 Merge "Fix Stein version in watcher-status docs" 2019-05-21 07:17:33 +00:00
Zuul
7d4c587014 Merge "Add doc/requirements.txt to venv tox target" 2019-05-21 07:17:32 +00:00
Zuul
124a942301 Merge "Remove dead code from NovaClusterDataModelCollector" 2019-05-20 13:00:16 +00:00
Dantali0n
dea32c5e1f Improve Gnocchi and Monasca datasource tests
As a follow up to the recent test improvements for Ceilometer this
patch ensures that the same test pattern is used for Gnocchi and
Monasca as well. This ensures that the mocked functions will be called
with matching signatures.

Change-Id: Ic14a4c087f3961a4b4f373e2e3d792aba71868f6
2019-05-20 14:41:24 +02:00
Sumit Jamgade
b620081714 Allow using file to override metric map
Override the metric map of each datasource as soon as it is created by
the manager. This override comes from a file whose path is provided by
a setting in config file.

Loading at creation time allows the correct datasource be used when
get_backend is called, this allows loading a datasource whose metric
names get updated outside the watcher's codebase.

The function 'load_metric_map' returns empty-dict in any error case.
Also in case the file is empty where safe_load is unable finds any
yaml documents, it will return None. [1]

Some minor refactoring in the test_manager file for readability and
added tests for file load and metric override.

1 - https://pyyaml.org/wiki/PyYAMLDocumentation

Change-Id: I1df16245f4c7dfd34066f3ab0553cd67154faa58
Implements: blueprint file-based-metric-map
2019-05-20 10:28:00 +02:00
Zuul
7456975445 Merge "Fix typo in ceilometer datasource" 2019-05-20 07:44:55 +00:00
chenke
f131825690 support-keystoneclient-option
Some users may want to create keystoneclient by specifying the
type of endpoint and region name, so we need to supply the option
for user to choose.

Implements: blueprint support-keystoneclient-option

Change-Id: I49b33a69ec99d2a91568ce27ef89dc80b75e7091
2019-05-18 18:36:19 +00:00
Zuul
1b328f5148 Merge "Update migration notification" 2019-05-18 08:30:15 +00:00
Zhenyu Zheng
f92f77f683 Fix typo in ceilometer datasource
Change I25b4cb0e1b85379ff0c4da9d0c1474380d75ce3a in
Queens refactored the statistic_aggregation method
and renamed the "aggregate" kwarg to "aggregation",
presumably to match the signature of the GnocchiHelper
statistic_aggregation method (the commit message does
not give details) so a base method could be added to
the parent class for all datasource helpers.

As a result, the CeilometerHelper calls to its
statistic_aggregation started passing the new
"granularity" kwarg but failed to match the rename
to the "aggregation" kwarg, which breaks the
CeilometerHelper. This was missed by the unit tests
because the tests were just asserting the erroneous
call that the runtime code made.

This change fixes the kwarg typo and makes the
tests more robust by using the mock spec kwarg
to define a spec for the statistic_aggregation
mock so that it must be called with the correct
parameters defined in the method signature. The
test is refactored to reduce duplicate mocking.
The same test hardening can and should be done
in the gnocchi and monasca helper tests but that
should be done in a separate change.

Co-Authored-By: Matt Riedemann <mriedem.os@gmail.com>

Closes-Bug: #1829542

Change-Id: Idfd099f718873d9056fdc35a97954771c9ae5762
2019-05-17 12:06:42 -04:00
Zuul
78d28427be Merge "pass default_config_dirs variable for config initialization." 2019-05-17 10:20:44 +00:00
Zuul
b45777c497 Merge "Use base_strategy's add_action_migrate method" 2019-05-17 10:13:41 +00:00
Zuul
a0e434042b Merge "Fix_inappropriate_name" 2019-05-17 10:11:52 +00:00
Zuul
ce1d64a16c Merge "Remove unused utilities file" 2019-05-17 03:36:35 +00:00
Matt Riedemann
8a206a6ae5 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
2019-05-16 17:45:44 -04:00
Zuul
a1fa9b8c3f Merge "Fix API version header" 2019-05-16 08:54:58 +00:00
Zuul
96d25d8bfe Merge "update api version history" 2019-05-16 08:10:59 +00:00
Dantali0n
76367afd1d Remove unused utilities file
Change-Id: I26495fe9b0f191f6df953b5c61e971969c767662
2019-05-16 10:10:34 +02:00
licanwei
6d96512188 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
2019-05-16 15:48:49 +08:00
Zuul
6b16e7e58f Merge "Remove bandit from lower-constraints" 2019-05-16 02:38:45 +00:00
Zuul
2834610fa6 Merge "docs: fix link to install guide from user guide" 2019-05-15 15:48:00 +00:00
chenke
86a537fe7f Remove bandit from lower-constraints
The version of bandit in lower-constraints (1.4.0) does
not match the version in test-requirements (1.6.0) however
bandit is a test-only dependency and there is no test coverage
for bandit in the lower-constraints tox job target, so there
is really no good reason to have bandit in lower-constraints.
As such, this change simply removes it from lower-constraints.

Co-Authored-By: Matt Riedemann <mriedem.os@gmail.com>

Change-Id: I35f66994e9a3a334b342232587d84491542da755
2019-05-15 14:37:52 +00:00
chenke
15c842fba2 Update Sphinx requirement
Sphinx 2.0 no longer works on python 2.7, so we need to start capping
it there as well.

The errors are as follow:

Requirement(package='sphinx', location='', specifiers='!=1.6.6,!=1.6.7,>=1.6.5'
does not match "python_version>='3.4'"
Requirement(package='sphinx', location='', specifiers='!=1.6.6,!=1.6.7,>=1.6.5'
does not match "python_version=='2.7'"
Could not find a global requirements entry to match package sphinx. If the package
is already included in the global list, the name or platform markers there may not
match the local settings.

Change-Id: I6dad56ffbb9e85e36cacea1a89565c2fc8248fbf
2019-05-15 11:03:48 +08:00