Compare commits

..

434 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)
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" 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
Zuul
e74ab79e81 Merge "Add the define of vm_workload_consolidation job" 2019-02-19 06:34:30 +00:00
Zuul
ae005876cb Merge "change config parameter from 'datasource' to 'datasources'" 2019-02-19 02:45:41 +00:00
chenke
a9c0293508 Add the define of vm_workload_consolidation job
Change-Id: I6ac79e406e5a6365376f2a2707419e9931c46369
2019-02-19 09:58:03 +08:00
licanwei
477b4d01e4 change config parameter from 'datasource' to 'datasources'
Change-Id: Iaf59ea25f8d62bf29562f21d846243f98d9b6997
2019-02-19 09:35:59 +08:00
Dantali0n
73830387c6 Move datasources metric mappings out of base.py
Moved the metric mappings for Ceilormeter, Gnocchi & Monasca out of
base.py. The datasources manager now uses classes extending base.py
their NAME attribute as key in the dictionary of total available
mappings and datasources. base.py still contains a template
definition of all available mappings so that anyone extending the
base class can identify all the possible endpoints they can map to.

Change-Id: I6a826423031b5a6a60c4cd5fe24f74b8400f6b55
Closes-Bug: #1815769
2019-02-13 22:24:01 +01:00
Dantali0n
f8dfdd405d function get_sd return 0 early if len(hosts) is 0
Prevent workload_stabilization strategy from failing in a network with
0 hosts.

Change-Id: I9f1a9524923c14d958eb50a70dad379a6021b884
Closes-Bug: #1815059
2019-02-08 11:03:37 +01:00
licanwei
0e46dec6c6 Update storage_balance job
Change-Id: I4f5b0881988452acdaac37b2c3c0573d88ecf244
2019-01-28 11:14:05 +08:00
Zuul
3fffe3b6fa Merge "Add storage balance job" 2019-01-25 03:27:06 +00:00
Zuul
645c0358b1 Merge "trivial" 2019-01-25 01:31:57 +00:00
Zuul
98a6a967f9 Merge "Update user guide" 2019-01-25 01:31:56 +00:00
licanwei
dff99bdaa8 Add storage balance job
Change-Id: I9ae1c0232450c1960e55b067cb398e90bef02835
2019-01-25 09:30:31 +08:00
licanwei
121ec6e532 Update user guide
Change-Id: I0845b3c1a21cf82c3c8ddd30980a7f1b8de57cb7
2019-01-24 17:14:35 +08:00
licanwei
1fba994912 Fix E731 error
Change-Id: I8b314b66af3bd79da06c45c33f5054c292e41fbf
2019-01-24 17:09:47 +08:00
licanwei
551f7c8a6a trivial
Change-Id: Ibb8299401aef52ed2505f85ad36ec1f8a4227d13
2019-01-24 16:01:19 +08:00
Zuul
7c62593495 Merge "Update hacking version" 2019-01-24 02:05:00 +00:00
Zuul
b5b1ecb788 Merge "[Trivial fix] Do not use self in classmethod" 2019-01-23 04:08:35 +00:00
Zuul
87a4600835 Merge "Add grenade job" 2019-01-15 09:12:51 +00:00
zhufl
1e49203cc7 [Trivial fix] Do not use self in classmethod
Do not use self in classmethod, cls should be used instead.

Change-Id: Ib4e5b27e237122e519bdf84d2af1e8c0ea5f1dda
2019-01-15 11:20:36 +08:00
Alexander Chadin
103e5b5605 Add grenade job
This patch set adds grenade support to Watcher based on
legacy-dsvm-base job.

Change-Id: I9e23f59f7415aa350b2da644d8801621533b69b0
2019-01-14 17:21:52 +03:00
Zuul
e42a89b834 Merge "Add version api ref" 2019-01-12 07:39:37 +00:00
Zuul
30437fd929 Merge "update api-ref for audit start/end time" 2019-01-12 07:36:57 +00:00
zhulingjie
a4d31eac42 Update hacking version
Use latest release 1.1.0 and compatible changes w.r.t pep8

Change-Id: If1860c3fe287852e87704b511567c65d8d4d0c1c
2019-01-09 23:54:55 +08:00
Zuul
7dbd8ab34b Merge "Use template for lower-constraints" 2019-01-04 02:37:02 +00:00
Zuul
cb9cb649dd Merge "Add host maintenance tempest" 2019-01-04 02:37:01 +00:00
licanwei
f7dcefb554 Add version api ref
Change-Id: I93cb484a1f3ae533558ecde0cd79c8b6b2fb18f1
2018-12-25 00:56:22 +00:00
licanwei
6addd6bda0 update api-ref for audit start/end time
Change-Id: I2d81f58fc32885ec967df29f56b0dc040eb52534
2018-12-24 16:57:29 +08:00
Zuul
3a5966fb92 Merge "Remove unused modules" 2018-12-21 13:17:47 +00:00
Andreas Jaeger
d8017c177c Use template for lower-constraints
Small cleanups:

* Use openstack-lower-constraints-jobs template, remove individual
  jobs.
* Sort list of templates

Change-Id: I63bfcd9bc21011b446fd1c54cb64c5568c601687
Needed-By: https://review.openstack.org/623229
2018-12-20 21:30:34 +01:00
Zuul
f94a397817 Merge "Update min tox version to 2.0" 2018-12-20 12:56:01 +00:00
Alexander Chadin
4f2b4fdd8d Remove unused modules
This patch set removes "observable" and "synchronization"
modules cause they aren't used by any Watcher modules so far.

Change-Id: If23cdf0d3d09087919d48f50ab38b0d355c36481
2018-12-19 13:41:16 +03:00
licanwei
a19b799de4 Add host maintenance tempest
Change-Id: I3450ed8fe550195b80347680763549f45cf734f6
2018-12-18 09:30:46 +08:00
Zuul
90c8525ccb Merge "audit create request can't set scope" 2018-12-17 01:54:44 +00:00
Zuul
d41d6bebfa Merge "Fix mailing list archive URL" 2018-12-17 01:54:43 +00:00
Zuul
e3c5151a16 Merge "Add audit scoper for baremetal data model" 2018-12-17 01:48:10 +00:00
Zuul
1dcaf0d7e6 Merge "Deprecate Ceilometer Datasource" 2018-12-12 06:15:35 +00:00
Hidekazu Nakamura
8bed87697b Fix mailing list archive URL
OpenStack mailing list is merged to openstack-discuss now.

Change-Id: I7b869b95f83ede8410d7f636726821078cb91ea5
2018-12-12 14:42:54 +09:00
Zuul
66a6191d9b Merge "Fix stop_watcher function" 2018-12-10 15:19:52 +00:00
Alexander Chadin
b0c504cd1e Fix stop_watcher function
Apache should be reloaded after watcher-api is disabled.

Change-Id: Ifee0e7701849348630568aa36b3f3c4c62d3382e
2018-12-10 16:29:46 +03:00
Zuul
6f1dace5c8 Merge "Fix doc about nova notifications" 2018-12-10 09:45:45 +00:00
Alexander Chadin
92894237f3 Deprecate Ceilometer Datasource
Ceilometer Datasource has been deprecated since its API has been
deprecated in Ocata cycle. Watcher has supported Ceilometer for some
releases after Ocata to let users migrate to Gnocchi/Monasca datasources.
Since U-release, Ceilometer support will be removed.

Change-Id: I944a5a562ab09a36961eb9b75e9a5144ba0b9ca4
2018-12-07 07:56:54 +00:00
Zuul
bd71671572 Merge "Increase the unit test coverage of host_maintenance.py" 2018-12-07 03:03:38 +00:00
licanwei
216e63c1fa Fix doc about nova notifications
Change-Id: I65bd9dcee37baa244975120f136ee41ce366bceb
2018-12-06 10:10:46 +08:00
Alexander Chadin
e251d85fdd Remove hostname-related playbooks
Change-Id: Ia2a617e337de987fb371c8507013c78c2ca80cd3
2018-12-05 16:38:40 +03:00
Zuul
63e6fde8ff Merge "update doc for install ubuntu" 2018-12-05 09:16:47 +00:00
Zuul
e9b71e62f3 Merge "Fix audit_template_uuid description" 2018-12-05 09:07:02 +00:00
licanwei
b0a86b424b audit create request can't set scope
Change-Id: Iab680bc860bbd6b8edcbefcb1498b343de58281b
2018-12-05 15:06:40 +08:00
Alexander Chadin
4a1d03b9ac Change openstack-dev to openstack-discuss channel
Change-Id: Ifa577a3e04cdaaf4b46ef85b043acb7edb9b8bbc
2018-12-04 11:34:50 +03:00
Zuul
a30ee72ec5 Merge "start tls-proxy (if enabled) before checking for api" 2018-11-30 09:06:55 +00:00
chenke
0dc9f39a9a Increase the unit test coverage of
host_maintenance.py

Increase coverage from 66% to 88%.

Change-Id: I7073fd904f5b2a6063a8e4c97fad8ab63885bd1a
2018-11-30 09:02:32 +08:00
Zuul
ffb7125165 Merge "Increase the unit test coverage of vm_workload_consolidation.py" 2018-11-29 11:38:16 +00:00
licanwei
c032807a42 update doc for install ubuntu
Change-Id: I04692e0002a5e81c898793c7215a21ceba02b8d2
2018-11-28 12:11:13 +08:00
Zuul
b2de7d691c Merge "Add missing ws separator between words" 2018-11-27 12:11:56 +00:00
Zuul
12d7a00f90 Merge "Fix spelling error in the comments of file host_maintenance.py" 2018-11-27 04:39:12 +00:00
Zuul
5fef5274d0 Merge "remove older api doc" 2018-11-27 01:14:00 +00:00
chenke
92f2d1c037 Fix spelling error in the comments of
file host_maintenance.py

This is to fix spelling error and unsuitable punctuation
in file host_maintenance.py

Change-Id: I9c535059c3a02277be4c7329693db34fb7674b4e
2018-11-26 20:45:14 +08:00
Yumeng_Bao
af0c90db4d Add audit scoper for baremetal data model
Bare metal cluster data model was introduced in Queens cycle.
Since the model is different from compute data model, we
need add CDM scoper for bare metal cluster data model

Change-Id: Idd041cefb692085d4545252d229ebe8602926b58
Implements: blueprint audit-scoper-for-baremetal-data-model
2018-11-26 12:21:06 +03:00
chenke
ddba357327 Increase the unit test coverage of
vm_workload_consolidation.py

Increase the test of the execute method which contains
the pre_execute(), do_execute(), post_execute() methods.
Increase coverage from 82% to 87%.

Change-Id: Ibde67d7b7d7945657ad0b674e06b1edc9eb24a9f
2018-11-23 14:47:58 +08:00
licanwei
fd8bd4d51a Fix audit_template_uuid description
Change-Id: I8b915de6d3eda150f633c88899bf3d54afcbe099
2018-11-22 10:26:07 +08:00
Sumit Jamgade
b4b625c9f5 start tls-proxy (if enabled) before checking for api
When tls-proxy is enabled, first start the tls-proxy and then then wait
for api to come up.

Without this the api comes up on the internal port as a result the
subsequent curl fails killing the deployment
- create a zuul job to test with tls
- fix apache ports accordingly

Depends-On: Ie665240b53df92b8e5ca509e998e95d859bd5282
Change-Id: I610a7a24daab68c7ab0e30977e3cabd62cdb56a5
2018-11-21 18:47:47 +01:00
licanwei
f1ce2a58c7 remove older api doc
api referance doc uses api-ref and adds microversion history.

Change-Id: I654bd25966f0f5ef982928766ac58aced2bc784c
2018-11-21 14:23:20 +08:00
zhufl
2cf1187aeb Add missing ws separator between words
This is to add missing ws separator between words.

Change-Id: I311cabbbc8cf95dbceb7d194b6e742f2e1d91589
2018-11-21 11:15:58 +08:00
chenke
63afd8259a Update doc for vm_workload_consolidation strategy
Actually, the metric "cpu_util" and "memory.resident" are necessary
in vm_workload_consolidation.py, according to line 75. So modify
this document about this part.

Change-Id: I648f341184a0b42d88dcb4c934af989997fe3fea
2018-11-19 17:19:25 +08:00
chenke
4f99c6be22 Increase the unit test coverage of cinder_helper.py
Increase coverage from 58% to 94%

Change-Id: I5b60d8db7c15b5a1be1470addaa818b30b7c6b56
2018-11-19 10:28:32 +08:00
Zuul
d1f80f9d5a Merge "Increase the unit test coverage of nova_helper.py" 2018-11-17 09:09:52 +00:00
Zuul
b45e8a1464 Merge "Enhance Watcher Applier Engine" 2018-11-16 07:18:41 +00:00
chenke
c7800225f1 Increase the unit test coverage of nova_helper.py
Increase coverage from 61% to 86%

Change-Id: I639168108e8076b2cccc02902793d77f6e94c1a5
2018-11-16 14:43:59 +08:00
Zuul
39113fd128 Merge "Fix version header in the response" 2018-11-16 02:36:06 +00:00
Zuul
8636770253 Merge "Remove unsuitable brackets" 2018-11-14 08:29:03 +00:00
licanwei
9f09abd6ec Fix version header in the response
This patch updates response header
from OpenStack-API-Version: [VERSION_STRING]
to OpenStack-API-Version: [SERVICE_TYPE] [VERSION_STRING]

Change-Id: I10577ff1123ef781bd4aa0b26577574a3f7e9c39
2018-11-14 07:57:37 +00:00
licanwei
69cf0d3ee5 Enhance Watcher Applier Engine
Add a new config option 'action_execution_rule' which is a dict type.
Its key field is strategy name and the value is 'ALWAYS' or 'ANY'.
'ALWAYS' means the callback function returns True as usual.
'ANY' means the return depends on the result of previous action
execution. The callback returns True if previous action gets failed,
and the engine continues to run the next action. If previous action
executes success, the callback returns False then the next action
will be ignored.
For strategies that aren't in 'action_execution_rule', the callback
always returns True.

If exception is throwing out during the action execution, reverting will
be triggered by taskflow. To continue executing the next action,
we return False instead of throwing an exception.

Change-Id: Ib5afa214d8d097d739aad35d18b3fe5c8e4de8fc
Implements: blueprint enhance-watcher-applier-engine
2018-11-14 01:23:07 +00:00
chenke
1e8b63e6f4 Remove unsuitable brackets
With these brackets, the statement "raise Exception("Live migration
execution.....") in watcher/common/nova_helper.py, line 379 will never
be executed. So remove it and let the statement make sense.

Change-Id: I42a2fa0c8ffa9c84a918d432c5093470dbd80f82
2018-11-14 09:22:21 +08:00
Zuul
437a958422 Merge "To avoid ambiguity for flavor_id" 2018-11-13 06:17:42 +00:00
Zuul
99dc956681 Merge "Add cover job" 2018-11-13 04:38:53 +00:00
Zuul
3e39e421df Merge "Imported Translations from Zanata" 2018-11-08 08:33:22 +00:00
Zuul
dab3b3c3c0 Merge "Remove redundant docstring" 2018-11-08 08:33:21 +00:00
OpenStack Proposal Bot
4c3bac142a Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: I20bb708e682551f355cdb38d25f19c7f36ab1ea5
2018-11-08 06:11:23 +00:00
chenke
b6c24ed49b To avoid ambiguity for flavor_id
Change-Id: I34f5281be868a48e64f2e582f28c2b260b0862a1
2018-11-08 11:40:42 +08:00
Zuul
cf31b7fb34 Merge "Fix accessing to optional cinder pool attributes" 2018-11-08 01:14:04 +00:00
Zuul
7118545e97 Merge "Add detailed unit test documentation for watcher" 2018-11-07 11:58:35 +00:00
Tatiana Kholkina
e8c08e2abb Fix accessing to optional cinder pool attributes
Leave storage pool arguments empty if they are not provided
by cinderclient.

Change-Id: I90435146b33465c8eef95a6104e53285f785b014
Closes-Bug: #1800468
2018-11-07 08:31:55 +00:00
Nguyen Hai Truong
e4d4a262cd Add cover job
Insert python coverage job for py-test.

Change-Id: I0811600b2c7fd7e5941fa4a30e7212b536b927cc
2018-11-06 22:27:33 -08:00
Zuul
7c1aeef8cc Merge "Adjust the same format as above" 2018-11-07 03:20:50 +00:00
Tatiana Kholkina
456ce5a9e0 Remove redundant docstring
The method is quite simple and it doesn't need a dostring.
Also existing docstring was incorrect. The name of the expected
parameter is 'name', not 'node'. And it cannot be an object
of the type node.StorageNode

Change-Id: I94124d327c490d45eae4d2ded218beadfbc33ad7
2018-11-06 16:38:11 +03:00
licanwei
8a3d9fc4b2 optimize get_instances_by_node
We can set host filed in search_opts.
refer to:
https://developer.openstack.org/api-ref/compute/?expanded=list-servers-detail#list-servers

Change-Id: I36b27167d7223f3bf6bb05995210af41ad01fc6d
2018-11-06 13:25:34 +00:00
chenke
701a248324 Adjust the same format as above
Change-Id: I98f6e052c6c37b9756e9bc7750306c8ce821f387
2018-11-06 20:37:59 +08:00
Alexander Chadin
a9393ef29a Make watcherclient-tempest-functional test non-voting
Change-Id: I1ec4d50e944f8684d72284173ca96557074c6285
2018-11-06 13:38:26 +03:00
chenke
d6dc5675e3 Add detailed unit test documentation for watcher
Change-Id: Ife4771707223351a84941b462d853c5e49ff55a5
2018-11-06 11:34:11 +08:00
Zuul
59cae3268e Merge "update datamodel by nova notifications" 2018-11-02 08:50:05 +00:00
Nguyen Hai Truong
f6c0946573 Update min tox version to 2.0
The commands used by constraints need at least tox 2.0.
Update to reflect reality, which should help with local running of
constraints targets.

Change-Id: I0eb9af735f34ad259c7099729d7d465a1276fc5f
2018-11-01 21:38:30 -07:00
Zuul
ffd67c37e6 Merge "Fix parameter type for cinder pool" 2018-11-02 03:23:57 +00:00
Tatiana Kholkina
34523ec285 Fix parameter type for cinder pool
The correct type of parameter 'pool' in method build_storage_pool is
<class 'cinderclient.v2.pools.Pool'>

Change-Id: I986f707e4e740ebec94a46c6ee413f9a70197dad
2018-11-01 10:47:47 +03:00
licanwei
a8eed9fc4c update datamodel by nova notifications
Change-Id: Ib2676d6e69eb07644beae66bde22d308bbb836f1
Implements: blueprint update-datamodel-by-nova-notifications
2018-11-01 03:07:23 +00:00
Zuul
3c9a4f86b1 Merge "API Microversioning" 2018-10-31 13:05:51 +00:00
Zuul
e2338b00d0 Merge "add start and end time for continuous audit" 2018-10-31 13:05:50 +00:00
Zuul
1159e0a2ce Merge "remove set_host_offline" 2018-10-29 11:49:39 +00:00
Zuul
22cfd16354 Merge "Add efficacy indicators for workload_stabilization strategy" 2018-10-29 11:46:48 +00:00
Alexander Chadin
c4a30153f1 API Microversioning
This patch set adds API microversion support along
with the first API microversion: start/end time for
CONTINUOUS audits.

APIImpact

Implements: blueprint api-microversioning
Depends-On: I6bb838d777b2c7aa799a70485980e5dc87838456
Change-Id: I17309d80b637f02bc5e6d33294472e02add88f86
2018-10-29 08:45:32 +00:00
Zuul
754674cab2 Merge "Fix oslo_versionedobjects warnings" 2018-10-26 06:27:50 +00:00
Zuul
aa6eac446b Merge "Don't need nova notifications" 2018-10-25 13:18:39 +00:00
licanwei
f9fe6659db remove set_host_offline
change_node_power_state action can be used to make a host offline.
set_host_offline never be used and the Nova os-hosts API is deprecated.
So remove it
https://developer.openstack.org/api-ref/compute/?expanded=update-host-status-detail#hosts-os-hosts-deprecated

Change-Id: I5f81fc9e2189db39b143d2935540d637bd2d88cc
2018-10-25 19:02:26 +08:00
licanwei
cbaf38519e Watcher doesn't need paramiko
Change-Id: I46a1df82b2b7e4051f1a844ad17d1afa758a1fcb
2018-10-24 16:07:09 +08:00
licanwei
93890fb290 Don't need nova notifications
Now we have removed nova legacy notifications in Watcher
and just consume nova versioned notifications,
we don't need notification config in nova.conf

Change-Id: I1c9c141d98d858c36ad8bb7be0b95c38ff1d5752
2018-10-24 14:41:41 +08:00
Zuul
938bd336ca Merge "Add framework for watcher-status upgrade check" 2018-10-24 03:39:42 +00:00
Alexander Chadin
62b9282b1e Fix oslo_versionedobjects warnings
This patch set fixes warnings regarding invalid UUIDs and
static_root.

Change-Id: Icb0bbca9c05ee97ea9947a31db5e87b7837e42d0
2018-10-23 17:16:50 +03:00
Zuul
d1f946e121 Merge "Use limit -1 for nova servers list" 2018-10-22 10:47:31 +00:00
akhiljain23
d621f72730 Add framework for watcher-status upgrade check
This commit adds the functionality of watcher-status CLI for performing
upgrade checks as part of the Stein cycle upgrade-checkers goal.
It only includes a sample check which must be replaced by real checks in
future.

Change-Id: Ic3d066af439797d6f705e805334f729b52ce3aac
Story: 2003657
Task: 26164
2018-10-22 13:51:56 +05:30
Zuul
80754b80cb Merge "Update documentation regarding DataSource for strategies" 2018-10-17 15:49:40 +00:00
Zuul
133bd3ca69 Merge "Don't quote {posargs} in tox.ini" 2018-10-17 08:46:06 +00:00
Alexander Chadin
7c9a856918 Update documentation regarding DataSource for strategies
Change-Id: Ifc82fc06858a4e5a2badef074cd6bb5ce4e216cb
2018-10-16 13:33:24 +03:00
Tatiana Kholkina
e5386aa745 Use limit -1 for nova servers list
By default nova has a limit for returned items in a single response [1].
We should pass limit=-1 to get all items.

[1] https://docs.openstack.org/nova/rocky/configuration/config.html

Change-Id: I1fabd909c4c0356ef5fcb7c51718fb4513e6befa
2018-10-16 11:13:49 +03:00
licanwei
b69fc584d8 tenant_id should be project_id in instance element
Change-Id: I4e8d35b5dbf62df2c653defb223aca7ec5032e3e
2018-10-12 16:40:09 +08:00
licanwei
c2550e534e add start and end time for continuous audit
Add new start_time and end_time fields in the audit table

Partially Implements: blueprint add-start-end-time-for-continuous-audit

Change-Id: I6bb838d777b2c7aa799a70485980e5dc87838456
2018-10-12 11:21:17 +03:00
Dao Cong Tien
f41adc7e8b Remove uses of rpc_backend (oslo_config)
As rpc_backend config option has been removed from
oslo_config [1], projects should not use it.
Current uses of it cause watcher crash when installing
via devstack.

[1] https://review.openstack.org/#/c/580910/

Change-Id: Iba7471e87e8935f1ea02b363f269e9debdc7cc71
2018-10-10 05:21:31 +00:00
98k
a073c42a9d Don't quote {posargs} in tox.ini
Quotes around {posargs} cause the entire string to be combined into one
arg that gets passed to stestr. This prevents passing multiple args
(e.g. '--concurrency=16 some-regex')

Change-Id: I0371fc2c0878a177c0a9e9c9313ca5b8470bfd98
2018-10-09 21:34:51 +00:00
Zuul
05055b7064 Merge "Fix audit creation with named goal and strategy" 2018-10-05 09:34:05 +00:00
Tatiana Kholkina
f0b96b8a37 Do not pass www_authenticate_uri to RequestContext
Change-Id: I0ee32031d714608c33643b12b1e217a04157f5b3
Closes-Bug: #1795613
2018-10-03 12:21:55 +03:00
Zuul
59cadfd2ea Merge "remove nova legacy notifications" 2018-09-30 02:39:07 +00:00
licanwei
5265b06a9b remove nova legacy notifications
http://lists.openstack.org/pipermail/openstack-dev/2018-August/133071.html

Closes-Bug: #1793048
Change-Id: Id591c8979fd4a6bda674588060eaf51386d937cb
2018-09-30 09:03:00 +08:00
Alexander Chadin
bb2f6d230c Fix link to Watcher API
Change-Id: I64f234257043d8fe2b7932f3b8ddbd01d63957f1
Closes-Bug: #1769084
2018-09-25 16:52:04 +03:00
Alexander Chadin
7cb81ac6c5 Fix audit creation with named goal and strategy
This patch set fixes process of audit creation and
allows to create audit without Audit Template using only
names of Goal and Strategy. It also provides some additional
unit tests to improve tests covering.

Change-Id: I89a9c7661616f49639151869055d8f5ebe723d5f
Closes-Bug: #1794233
2018-09-25 13:44:54 +03:00
Tatiana Kholkina
925b971377 Provide region name while initialize clients
Add new option 'region_name' to config for each client section.

Change-Id: Ifad8908852f4be69dd294a4c4ab28d2e1df265e8
Closes-Bug: #1787937
2018-09-19 16:54:46 +03:00
Alexander Chadin
81c241bef7 Add efficacy indicators for workload_stabilization strategy
This patch set adds efficacy indicators for workload_balancing
goal (that includes workload_stabilization and workload_balance
strategies so far).

Change-Id: I5b04d084ace7c661001c62f07b8308e5763e144d
2018-09-18 19:46:37 +03:00
Zuul
c641fd33e7 Merge "Fix wrong audit scope" 2018-09-18 09:54:01 +00:00
licanwei
1f3c96d077 ignore .testrepository
Change-Id: I62d5ab34e64b1bfadb602515eeb0308af1496e6b
2018-09-14 11:04:20 +08:00
licanwei
9e00d1bb1f Fix wrong audit scope
Closes-Bug #1792368

Change-Id: I3349cbe9ad66233b1b28ffb3c76e003432a843a1
2018-09-14 10:59:25 +08:00
Zuul
8e40880882 Merge "Remove warning log in common.context" 2018-09-11 22:31:09 +00:00
Zuul
cab3b58205 Merge "add python 3.6 unit test job" 2018-09-11 16:04:24 +00:00
Zuul
4c330c22f4 Merge "switch documentation job to new PTI" 2018-09-11 16:04:21 +00:00
Zuul
5f05c10037 Merge "Follow the new PTI for building docs" 2018-09-11 16:04:20 +00:00
Nguyen Hai
bb31cc59dd add python 3.6 unit test job
This is a mechanically generated patch to add a unit test job running
under Python 3.6 as part of the python3-first goal.

See the python3-first goal document for details:
https://governance.openstack.org/tc/goals/stein/python3-first.html

Change-Id: I3b5663945f3ee3e9fd8d36acd2ad28faff58daa2
Story: #2002586
Task: #24344
2018-09-11 04:11:14 +00:00
Nguyen Hai
37d9aa526c switch documentation job to new PTI
This is a mechanically generated patch to switch the documentation
jobs to use the new PTI versions of the jobs as part of the
python3-first goal.

See the python3-first goal document for details:
https://governance.openstack.org/tc/goals/stein/python3-first.html

Depends-On: https://review.openstack.org/#/c/594176/
Change-Id: I66df141b69103e1389a294b75daadb292673e8a0
Story: #2002586
Task: #24344
2018-09-11 04:11:10 +00:00
Nguyen Hai
0b40479d52 Follow the new PTI for building docs
For compliance with the Project Testing Interface as described in:
https://governance.openstack.org/tc/reference/project-testing-interface.html#documentation
http://lists.openstack.org/pipermail/openstack-dev/2017-December/125710.html
http://lists.openstack.org/pipermail/openstack-dev/2018-March/128594.html

Change-Id: I86d2460231d246005cfdace75c50dc54c137f0ca
2018-09-10 20:28:26 -06:00
OpenStack Proposal Bot
35e9422e07 Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: I58e45eaeea6ff29d7a32b7b7b8e5f774f5809eff
2018-09-09 06:30:14 +00:00
Zuul
619f326e44 Merge "Remove hosts if can't find hosts in host agrregate" 2018-09-07 10:17:08 +00:00
Zuul
7404d2510a Merge "Fix goal method in policy" 2018-09-06 14:39:30 +00:00
licanwei
3861f1c845 Remove warning log in common.context
oslo_context may add new fields in request context, there are no
need to warning these fields.
Closes-Bug #1790577

Change-Id: Ic96c1f1e1a80099d9dafa95a014fc47f05b88e42
2018-09-05 11:21:16 +08:00
licanwei
d822a0f37e Remove hosts if can't find hosts in host agrregate
Change-Id: Ie2dc20d8068f6d945a487238a0b6e5bc2f72fa3b
Closes-Bug: #1789366
2018-09-04 10:03:47 +08:00
licanwei
e772b289ee Fix goal method in policy
Change-Id: I8f002900e898b945573c5a60b485ae3b98da639c
2018-08-30 15:44:13 +08:00
Zuul
c7e9457258 Merge "import zuul job settings from project-config" 2018-08-22 08:43:43 +00:00
Zuul
f93225b75c Merge "Remove -u root as mysql is executed with root user" 2018-08-20 02:24:37 +00:00
Zuul
1764810323 Merge "Add hostname to API Reference" 2018-08-20 01:48:46 +00:00
Zuul
fc9fac6622 Merge "Improve logs of Workload Stabilization strategy" 2018-08-20 01:48:45 +00:00
Nguyen Hai
b095793176 import zuul job settings from project-config
This is a mechanically generated patch to complete step 1 of moving
the zuul job settings out of project-config and into each project
repository.

Because there will be a separate patch on each branch, the branch
specifiers for branch-specific jobs have been removed.

Because this patch is generated by a script, there may be some
cosmetic changes to the layout of the YAML file(s) as the contents are
normalized.

See the python3-first goal document for details:
https://governance.openstack.org/tc/goals/stein/python3-first.html

Change-Id: I5e75f2ea7dd02065bc18793d974f56fef2daa2c4
Story: #2002586
Task: #24344
2018-08-19 00:57:45 +09:00
zhang.lei
a1b0c09005 Remove -u root as mysql is executed with root user
As openstack installation guides suggest to run mysql with root shell
user, mysql will not ask for password, so in
controller-install-*.rst "-u root -p" is useless.

Change-Id: I511f39d734702ab3d1a209f7d868f52fb184f1fc
Related-Bug: #1785025
2018-08-14 12:08:23 +00:00
Alexander Chadin
172d7b040d Improve logs of Workload Stabilization strategy
This patch set refactors logs of workload stabilization
strategy to make them more readable and sensible.

Change-Id: I408988712bb7560728157f3b4e4f2b37572128c4
2018-08-14 14:13:13 +03:00
OpenStack Proposal Bot
9686d2003c Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: I30fe61e98c1f54d9c582fa5a7f82cb83ae0acfd8
2018-08-14 07:11:56 +00:00
Alexander Chadin
cc2962af4a Add hostname to API Reference
This patch set adds hostname attribute to Audit and
ActionPlan resources in API Reference.

Change-Id: I187d44dc401d3d1770452022b8610570d459cc98
2018-08-13 16:44:22 +03:00
OpenStack Release Bot
7247d2f95b Update reno for stable/rocky
Change-Id: I3b0cdde07815261bb8a69947573f5d9e32f02106
2018-08-08 14:10:50 +00:00
Zuul
b471b4ca36 Merge "Fix TypeError in LOG.debug" 2018-08-08 12:11:09 +00:00
Zuul
2be5bd1c3f Merge "fix unit test:test_execute_audit_with_interval_no_job" 2018-08-08 10:06:56 +00:00
licanwei
d79edb93d6 Fix TypeError in LOG.debug
Change-Id: I4a4050081d0a22cc66fdb311ef676d0ba802bb72
Closes-Bug: #1785962
2018-08-07 23:44:23 -07:00
Zuul
0c41f20df2 Merge "improve strategy doc" 2018-08-07 10:34:44 +00:00
Yumeng_Bao
249e3c9515 fix unit test:test_execute_audit_with_interval_no_job
The previous unit test does not indeed test the situation where there is no job.

Change-Id: I3a0835932134fa6d888e0611a9232e1098d3fe53
2018-08-07 15:44:29 +08:00
licanwei
a229fec4a6 improve strategy doc
Change-Id: Id84e086f316ab50999b43c4b4c60a59ca454e79c
2018-08-06 18:21:39 -07:00
licanwei
5c2b3f0025 remove get_flavor_instance
From nova api 2.47(see [1]),the flavor.id has been removed.
we could remove this unused get_flavor_instance.

[1] https://developer.openstack.org/api-ref/compute/#show-server-details

Change-Id: I19a30950c298ee5cde8e71548428330c101bcad6
2018-08-06 01:10:53 +00:00
Zuul
cf9b158713 Merge "remove voluptuous" 2018-08-03 08:32:14 +00:00
Zuul
2cb7871df0 Merge "Update watcher-db-manage help doc" 2018-08-03 08:26:42 +00:00
Zuul
7c83042aa1 Merge "Add noisy neighbor strategy doc" 2018-08-03 08:15:52 +00:00
Zuul
7103e60786 Merge "only check decision engine service" 2018-08-03 08:15:51 +00:00
Zuul
343128fcb9 Merge "Fix unittest MismatchError" 2018-08-02 08:38:38 +00:00
Zuul
a739f81bfb Merge "remove extra'_' and space" 2018-08-02 08:19:58 +00:00
Zuul
d690b2b598 Merge "Fix AttributeError exception" 2018-08-01 07:28:43 +00:00
Zuul
4d1b9c1f04 Merge "Add apscheduler_jobs table to models" 2018-08-01 07:19:29 +00:00
licanwei
927d094907 Fix unittest MismatchError
Change-Id: I4030fb2c4ec89c6c653c2882be1052ed5cbd2cd7
Closes-Bug: #1784758
2018-07-31 22:47:39 -07:00
licanwei
57a4aae92b only check decision engine service
We just need to check decision engine service status
when Rescheduling continuous audits.
This is an update for 1
1:https://review.openstack.org/#/c/586033

Change-Id: I05a17f39b6ff80c6b9382248c72cac571191e395
2018-08-01 01:10:25 +00:00
chenke
abd129002c remove extra'_' and space
Change-Id: I85cdb0dd4e8f192181146b99f0416bf777a8279a
2018-07-31 20:07:40 +08:00
licanwei
b92a26345f remove voluptuous
We have replaced voluptuous with jsonschema in [1].
Now voluptuous can be removed.
[1]: https://review.openstack.org/#/c/561182/

Change-Id: I99c65ed79ef166839838559a808ee7607389e07a
2018-07-30 19:03:26 -07:00
licanwei
843cd493c2 Update watcher-db-manage help doc
Change-Id: I472204687da138f23f51a56e24cc95a9ae3359fb
2018-07-30 04:05:34 -07:00
Alexander Chadin
bad257f402 Fix strategies with additional time to initialize CDM
Change-Id: I995cfe99443744eb9f5746be5fce6302b6a7b834
2018-07-27 13:14:38 +00:00
licanwei
c4821ceedf Add apscheduler_jobs table to models
watcher-db-manage create_schema doesn't create apscheduler_jobs.

Change-Id: I57327317aab0186b0ff641111b90e6f958f1e5fe
Closes-Bug: #1783504
2018-07-26 20:00:34 -07:00
licanwei
abbb1317d3 Fix AttributeError exception
StartError is in exception, not Exception

Change-Id: Iff6ea38a2d0173173719f1cd840d9f3789fcf023
Closes-Bug: #1783924
2018-07-26 19:50:28 -07:00
Zuul
595cd1d435 Merge "Use jsonschema to validate efficacy indicators" 2018-07-26 12:06:57 +00:00
Zuul
df8419949b Merge "Rescheduling continuous audits from FAILED nodes" 2018-07-26 11:49:29 +00:00
Zuul
05a8f0ba3e Merge "Add HA support" 2018-07-26 11:49:28 +00:00
Alexander Chadin
20ffb5945f Rescheduling continuous audits from FAILED nodes
This patch set adds background job that reschedules CONTINUOUS
audits from FAILED to ACTIVE decision engine nodes using round-robin
algorithm. It also contains fix for main[1] HA PS about filtering audits.

[1]: https://review.openstack.org/#/c/578102/

Partially-Implements: blueprint support-watcher-ha-active-active-mode
Change-Id: Ib248a6cd3adbd3927c47db6bb819300361492411
2018-07-26 09:57:35 +00:00
Alexander Chadin
e426a015ee Add HA support
This patch set adds hostname field to Audit and Action Plan
objects to track services which execute these objects.

Change-Id: I786e419952925c380c969b12cc60f9a1004af96b
Partially-Implements: blueprint support-watcher-ha-active-active-mode
2018-07-26 12:54:11 +03:00
Zuul
f21f3dbb8b Merge "Add actionplan list detail api ref" 2018-07-26 08:57:21 +00:00
licanwei
4a5175cbad Add noisy neighbor strategy doc
Change-Id: I84add2103fd12c7b0c7e36d57fdfc4fe43e933b1
2018-07-26 00:45:40 -07:00
Zuul
996fc85081 Merge "Sync CDM among Decision Engines by using notification pool" 2018-07-26 07:44:52 +00:00
Zuul
758b1fab59 Merge "Add noisy neighbor description" 2018-07-26 01:53:39 +00:00
Zuul
fad85443b6 Merge "Fix service task interval" 2018-07-26 01:48:42 +00:00
Zuul
66723e97be Merge "Check job before removing it" 2018-07-26 01:48:42 +00:00
Zuul
ac6a471d2f Merge "remove LOG definitions that have not been used" 2018-07-26 01:38:56 +00:00
Zuul
550c306063 Merge "Update host_maintenance doc" 2018-07-25 14:35:30 +00:00
licanwei
b54647e6c0 Fix service task interval
Change-Id: Id6912c8d9c34b0aa3c0b5455586149747b07d491
2018-07-25 00:13:05 -07:00
licanwei
6a31f2c343 Add noisy neighbor description
Change-Id: Ibe0feb389e75c6ef52294413011e4fe250b42d0b
2018-07-25 02:45:51 +00:00
chenke
ea5252dd29 remove LOG definitions that have not been used
Change-Id: I6d1b942390a592e00755c5974995d0810085ace2
2018-07-25 10:31:03 +08:00
Zuul
1272ca579e Merge "trivial: fix strategy name" 2018-07-24 11:03:19 +00:00
licanwei
e76b27c0fe trivial: fix strategy name
Change-Id: Ic3df4233a544670ad4f736a0046725ea2797e337
2018-07-23 20:32:04 -07:00
licanwei
8377603f3c update Ubuntu version from 14.04 to 16.04
Change-Id: Ia05e7bd45f0bf5d300d238396b52b313949e3bef
2018-07-23 18:35:42 -07:00
licanwei
9630e2c4e2 Update host_maintenance doc
add change_nova_service_state action help

Change-Id: I68c41a4342fc1a215d697ef4bb0d333794e6a077
2018-07-23 01:43:46 -07:00
licanwei
4022714f5d Check job before removing it
Change-Id: Ibbd4da25fac6016a0d76c8f810ac567f6fd075f1
Closes-Bug: #1782731
2018-07-20 19:20:26 -07:00
licanwei
6fcdb5e74b update monascaclient version
TimingSession is removed and replaced by keystone session (see [1]).
monasca client fixed it in [2].
Watcher need to update monascaclient version
[1] https://review.openstack.org/#/c/579139/
[2] https://review.openstack.org/#/c/582882

Closes-Bug: #1782276
Change-Id: I567b7727cbfe645c4d16e06a8cbb8eb8e33eb872
Co-Authored-By: zhurong <aaronzhu1121@gmail.com>
2018-07-20 14:34:10 +03:00
Zuul
31a1a2e7d7 Merge "Remove help message about ZeroMQ driver" 2018-07-20 08:48:31 +00:00
Zuul
3c817fe0a0 Merge "Switch to stestr" 2018-07-20 08:48:30 +00:00
Zuul
f95b755c09 Merge "Switch to oslo_messaging.ConfFixture.transport_url" 2018-07-20 08:23:28 +00:00
Alexander Chadin
d62c4967bd Sync CDM among Decision Engines by using notification pool
This commit allows to consume notifications via notifications pools[1].
Listeners in notification pools recieves a copy of notification. It
will let Watcher to sync Data Models of Decision Engines.

[1]: https://docs.openstack.org/oslo.messaging/ocata/notification_listener.html

Change-Id: Ie37528263181924f84510500fc1277b0237c1df8
Partially-Implements: blueprint support-watcher-ha-active-active-mode
2018-07-20 10:54:19 +03:00
licanwei
486d08bc5e Add actionplan list detail api ref
Change-Id: If8bdea3b29049870b222b69ede10669183a3d952
2018-07-19 23:48:06 -07:00
Zuul
5bedb43d69 Merge "fix the rule name" 2018-07-20 03:20:17 +00:00
zhang.lei
b3e84fa2dc Remove help message about ZeroMQ driver
ZeroMQ driver is deprecated, as per the Dublin 2018 PTG decision:
http://lists.openstack.org/pipermail/openstack-dev/2018-March/128055.html

Change-Id: Ia3d5fd1d2ccd57bf3b9f97172c09994bf5d44022
2018-07-12 01:48:00 +00:00
Vu Cong Tuan
dc3531fa10 Switch to stestr
According to Openstack summit session [1],
stestr is maintained project to which all Openstack projects should migrate.
Let's switch to stestr as other projects have already moved to it.

[1] https://etherpad.openstack.org/p/YVR-python-pti

Change-Id: I8f70f7d8a3d18301559c0eb47e6a64c8b5100d39
2018-07-10 15:38:50 +07:00
Zuul
fb7be7984c Merge "Triggers the api-ref-jobs to publish wather api reference" 2018-07-05 08:13:48 +00:00
Andreas Jaeger
c9e8886631 Remove non-voting jobs from gate queue
Non-voting jobs should not be in gate queue at all, remove them.
They are wasting needlessly are resources.

To make clearer which jobs are non-voting, move voting:false
from base job to individual jobs.

Make watcherclient-tempest-functional as voting job and explicitly set
it non-voting in project stanza so that it can be easier to make it
voting in other repos.

Change-Id: Id94e49347006bca850f72a0400794da8c2a67144
2018-07-04 11:50:02 +02:00
Clark Boylan
7373588673 Remove undefined job
The legacy-rally-dsvm-watcher-rally job does not exist but it is listed
in the .zuul.yaml config. This is a zuul configuration error. Remove
this job which does not exist to fix zuul.

Change-Id: I1bbfd373ad12b98696ab2ddb78e56e6503cc4c4d
2018-07-04 09:28:27 +00:00
chenxing
c783a29047 Triggers the api-ref-jobs to publish wather api reference
Change-Id: I842a4e4bbe0bb713c8206df32952b4297b21d15f
2018-07-03 16:56:43 +08:00
Hidekazu Nakamura
393d68f658 Fix unit test error
This patch fixes watcher.tests.common.test_clients.TestClients.
test_clients_ironic unit test error due to python-ironicclient 2.4.0.

Change-Id: I0aaa2047cc8fcf09dee8bc7168e35f7a58c10125
2018-07-03 13:23:51 +09:00
Yumeng_Bao
0540cd22d6 Use jsonschema to validate efficacy indicators
This patch replaces voluptuous with JSON-schema to validate
efficacy indicator since in watcher we want to remove voluptuous
and use JSONSchema as our only JSON validation tool to keep consistency.

Change-Id: Iaa77566f1cdfdac03ce8e7d5a75406274c7d5298
Implements: blueprint replace-voplutuous-with-jsonschema
2018-07-02 05:43:22 +00:00
lvxianguo
281a5e6998 fix the rule name
Change-Id: Ica3ab522a816d7d31e8a72d26953e961ec4d9919
2018-06-22 16:26:16 +08:00
Zuul
0c4231e422 Merge "Amend the spelling error of a word" 2018-06-20 08:37:04 +00:00
Zuul
0d5df127f5 Merge "fix tox python3 overrides" 2018-06-20 00:39:25 +00:00
Zuul
6ed8fc0c15 Merge "Add API Reference for Watcher" 2018-06-19 00:37:59 +00:00
Zuul
855baacb5c Merge "replace windows line endings with unix line endings" 2018-06-18 10:59:22 +00:00
Zuul
02b72f4a38 Merge "Correcting url in action_plan policy" 2018-06-18 10:12:27 +00:00
rajat29
5f93e96b7a Correcting url in action_plan policy
url in action_plan policy file is:
'path': '/v1/action_plans/{action_plan_uuid}/action'
whereas it shouls be :
'path': '/v1/action_plans/{action_plan_uuid}/start'

Related-Bug: #1756274

Change-Id: Ic15fed9af739b59efb2777b70514697747b2af7f
2018-06-18 04:46:56 +00:00
Zuul
3591d9fa0a Merge "Replace port 35357 with 5000 for test_clients.py" 2018-06-15 05:10:32 +00:00
Doug Hellmann
88ff5e1b1f fix tox python3 overrides
We want to default to running all tox environments under python 3, so
set the basepython value in each environment.

We do not want to specify a minor version number, because we do not
want to have to update the file every time we upgrade python.

We do not want to set the override once in testenv, because that
breaks the more specific versions used in default environments like
py35 and py36.

Change-Id: Ia481330b9a889b113b585fca0d4ddb86df9f74d3
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
2018-06-13 14:34:39 -04:00
Doug Hellmann
ae0918488d replace windows line endings with unix line endings
The python 3 version of the linter does not allow Windows-style line
endings (\r\n) so replace them with UNIX-style endings (\n).

Change-Id: Ifb97491323d3df92bb1520e373552aeb5e1919a4
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
2018-06-13 14:34:39 -04:00
Alexander Chadin
44fc7d5799 Restore requirements versions
Change-Id: I7704778324d7597d5df2de6b77f6b914d948d6fa
2018-06-13 15:08:11 +03:00
Steve Kowalik
b683d2c6bd Switch to oslo_messaging.ConfFixture.transport_url
oslo_messaging's rpc_backend setting, which is set by
ConfFixture.transport_driver has been deprecated since Newton. To allow
oslo_messaging to remove it, switch to setting transport_url instead.

Change-Id: Ie37b20d1be6c177f2f1c26cc473b632d7d934c05
Partial-Bug: #1712399
2018-06-12 12:56:54 +10:00
Alexander Chadin
533c0a4114 Add API Reference for Watcher
This patch set adds API Reference along with some
fixes to documentation. It partially fixes bug #1757423.

Change-Id: I107b4fd5daf40aad63fc13864debbbbc82a9826c
2018-06-07 12:57:11 +03:00
chengebj5238
a8079ba0f1 Amend the spelling error of a word
Change-Id: I2b67774cf923d14a5735fd174061c87adaaaf63f
2018-06-07 09:50:21 +08:00
Zuul
a330576eae Merge "Update storage CDM collector" 2018-06-06 12:16:43 +00:00
Zuul
70d05214c7 Merge "add doc for host_maintenance" 2018-06-06 08:23:13 +00:00
suzhengwei
ca9644f4d8 add doc for host_maintenance
Change-Id: If9a112d33d7586d828024dbace1863ecc04408d9
2018-06-05 17:34:01 +08:00
inspurericzhang
44061cf333 Update pypi url to new url
Pypi url update to "https://pypi.org/"

Change-Id: I0bc9d7fc6111cb32db212d6ef3dab144fdd31c17
2018-05-25 17:11:56 +08:00
Zuul
18bf1f4e8d Merge "add strategy host_maintenance" 2018-05-23 09:18:24 +00:00
Zuul
f2df0da0b2 Merge "Trivial: update url to new url" 2018-05-23 07:46:28 +00:00
Hidekazu Nakamura
3c83077724 Update storage CDM collector
Storage CDM can not be build for some environment such as
the one using VMwareVcVmdkDriver, since some attributes of
Storage CDM'S pool element can be 'unknown'.

This patch updates storage CDM collector to raise watcher
specific exception if some attributes of storage CDM'S pool
element is 'unknown'

Change-Id: If75a909025c8d764e4de6e20f058b84e23123c1a
Closes-Bug: #1751206
2018-05-23 10:51:26 +09:00
caoyuan
d8872a743b Replace port 35357 with 5000 for test_clients.py
Now that the v2.0 API has been removed, we don't have a reason to
include deployment instructions for two separate applications on
different ports.

Related-bug: #1754104

Change-Id: I98fae626d39cb62ad51c86435c1a2c60be5c1fb9
2018-05-15 12:43:48 +00:00
Hidekazu Nakamura
7556d19638 Add Cinder Cluster Data Model Collector test case
This patch adds Cinder Data Model Collector test case.

Change-Id: Ifaf7cd4a962da287f740a12e4c382a1ca92750d6
2018-05-15 20:30:31 +09:00
suzhengwei
58276ec79e add strategy host_maintenance
maintain one compute node without having the user's application
been interruptted.
It will firstly migrate all instances from the maintenance node
to one backup node. If not, it will migrate all instances,
relying on nova-schduler.

Change-Id: I29ecb65745d5e6ecab41508e9a91b29b39a3f0a8
Implements:blueprint cluster-maintaining
2018-05-14 11:33:59 +00:00
XiaojueGuan
36ad9e12da Trivial: update url to new url
Change-Id: Ia238564c5c41aaf015d9d2f5839703a035c76fce
2018-05-13 21:39:50 +08:00
Hidekazu Nakamura
cdb1975530 Fix to reuse RabbitMQ connection
Currently RabbitMQ connection gradually increases by CONTINUOUS audit
with auto-trigger option.
This patch fixes watcher to reuse RabbitMQ connection.

Change-Id: I818fc1ce982f67bac08c815821f1ad67f8f3c893
2018-05-10 14:21:23 +09:00
Zuul
6efffd6d89 Merge "Updated tests on bug, when get list returns deleted items" 2018-05-09 08:40:18 +00:00
Zuul
95ec79626b Merge "Grouped _add_*_filters methods together" 2018-05-09 08:20:37 +00:00
Zuul
00aa77651b Merge "Replace of private _create methods in tests" 2018-05-09 08:20:36 +00:00
Zuul
7d62175b23 Merge "Added _get_model_list base method for all get_*_list methods" 2018-05-09 08:20:36 +00:00
Zuul
5107cfa30f Merge "Refactor watcher API for Action Plan Start" 2018-05-09 06:16:38 +00:00
deepak_mourya
ff57eb73f9 Refactor watcher API for Action Plan Start
Currently the REST API to start action plan in watcher
is which is same as for update action plan.

PATCH /v1/action_plans

https://docs.openstack.org/watcher/latest/api/v1.html

we need to make it easy to understand like :

POST /v1/action_plans/{action_plan_uuid}/start

the action should be start in above case.
Change-Id: I5353e4aa58d1675d8afb94bea35d9b953514129a
Closes-Bug: #1756274
2018-05-08 07:28:45 +00:00
Zuul
4c035a7cbd Merge "Update auth_url in install docs" 2018-05-08 05:57:39 +00:00
Zuul
b5d9eb6acb Merge "Exclude Project By Audit Scope" 2018-05-08 05:01:57 +00:00
Hidekazu Nakamura
904b72cf5e Update auth_url in install docs
Beginning with the Queens release, the keystone install guide
recommends running all interfaces on the same port. This patch
updates the install guide to reflect that change.

Change-Id: Ice155d0b80d2f2ed6c1a9a9738be2184b6e9e76c
Closes-bug: #1754104
2018-05-07 11:42:10 +09:00
Egor Panfilov
d23e7f0f8c Updated tests on bug, when get list returns deleted items
In I4d2f44fa149aee564c62a69822c6ad79de5bba8a we introduced new
_get_model_list method that introduces unify way for retrieving models
from db. This commit adds tests that do checks on bug 1761956, when
selecting with filter() method could return deleted entites.

Change-Id: I12df4af70bcc25654a0fb276ea7145d772d891e2
Related-Bug: 1761956
2018-05-05 14:30:00 +03:00
Zuul
55cbb15fbc Merge "Moved do_execute method to AuditHandler class" 2018-05-04 06:08:17 +00:00
wu.chunyang
3a5b42302c Fix the openstack endpoint create failed
Change-Id: Ic05950c47bf5ad26e91051ac5e1d766db0f5ccae
2018-04-27 22:44:13 +08:00
Zuul
4fdb22cba2 Merge "Update the default value for nova api_verison" 2018-04-27 06:10:54 +00:00
Zuul
431f17d999 Merge "add unittest for execute_audit in audit/continuous.py" 2018-04-25 08:24:25 +00:00
caoyuan
b586612d25 Update the default value for nova api_verison
refer to https://github.com/openstack/watcher/blob/master/watcher/conf/nova_client.py#L26

Change-Id: If7c12d49c68e1bfc30327d465b9d5bafe82882e0
2018-04-24 23:15:37 +08:00
Egor Panfilov
ad1593bb36 Moved do_execute method to AuditHandler class
Both Continuous and Oneshot audits made same action in
do_execute, so it's a good idea to move it to the base
class

TrivialFix

Change-Id: Ic0353f010509ce45f94126e4db0e629417128ded
2018-04-23 20:38:06 +03:00
Zuul
bbd0ae5b16 Merge "Fix typo in StorageCapacityBalance" 2018-04-23 07:59:51 +00:00
Zuul
5a30f814bf Merge "add strategy doc:storage capacity balance" 2018-04-23 05:46:08 +00:00
Egor Panfilov
7f6a300ea0 Fix typo in StorageCapacityBalance
TrivialFix

Change-Id: If1fb33276fc08945aa45e6baecaeebca3ba070fe
2018-04-22 18:00:53 +03:00
Egor Panfilov
93a8ba804f Grouped _add_*_filters methods together
TrivialFix

Change-Id: I148dc19140aede8cc905b0bdc2753b82d8484363
2018-04-22 00:52:27 +03:00
Egor Panfilov
415bab4bc9 Replace of private _create methods in tests
Methods that already implemented in utils module are removed from test
classes

TrivialFix

Change-Id: I38d806e23c162805b7d362b68bf3fe18da123ee3
2018-04-21 22:32:25 +03:00
aditi
fc388d8292 Exclude Project By Audit Scope
This patch adds project_id in compute CDM, It also adds logic for
excluding project_id in audit scope.

Change-Id: Ife228e3d1855b65abee637516470e463ba8a2815
Implements: blueprint audit-scope-exclude-project
2018-04-20 08:47:07 +00:00
Zuul
5b70c28047 Merge "amend delete action policy" 2018-04-20 03:08:52 +00:00
licanwei
b290ad7368 add strategy doc:storage capacity balance
Change-Id: Ifa37156e641b840ae560e1f7c8a0dd4bca7662ba
2018-04-19 19:55:37 -07:00
Alexander Chadin
8c8e58e7d9 Update requirements
Change-Id: Iee6ca0a49f8b1d67dd0d88f9a2cf9863b2c6c7bf
2018-04-19 11:10:39 +03:00
Zuul
391bb92bd2 Merge "Replace cold migration to use Nova migration API" 2018-04-18 13:36:53 +00:00
licanwei
171654c0ea add unittest for execute_audit in audit/continuous.py
Change-Id: I20b9cb9b4b175a1befdbe23f7c187bec6a195dac
2018-04-17 04:19:12 -07:00
suzhengwei
0157fa7dad amend delete action policy
Change-Id: I545b969a3f0a3451b880840108484ca7ef3fabf9
2018-04-17 16:18:14 +08:00
Zuul
3912075c19 Merge "Enable mutable config in Watcher" 2018-04-16 11:39:39 +00:00
Zuul
d42a89f70f Merge "Update auth_uri option to www_authenticate_uri" 2018-04-16 02:16:26 +00:00
Zuul
6bb25d2c36 Merge "Trivial fix of saving_energy strategy doc" 2018-04-13 11:35:29 +00:00
Hidekazu Nakamura
4179c3527c Replace cold migration to use Nova migration API
Since Nova API v2.56, Nova migrate Server(migrate Action) API
has host option.
This patch replaces cold migration implementation to use the API.

Change-Id: Idd6ebc94f81ad5d65256c80885f2addc1aaeaae1
Implements: blueprint replace-cold-migrate-to-use-nova-migration-api
2018-04-13 10:53:26 +09:00
ShangXiao
3b1356346a Add release notes link to README
Add release notes url doc link to README.rst.

Change-Id: Ia068ce4847a99be4ec5fb336e6b8e283a061d614
2018-04-12 00:35:31 -07:00
licanwei
67be974861 Trivial fix of saving_energy strategy doc
Change-Id: Ie7b85b8e57a679be8f8fc05c0c24e707b0dd575d
2018-04-11 22:58:56 -07:00
caoyuan
8c916930c8 Update auth_uri option to www_authenticate_uri
Option auth_uri from group keystone_authtoken is deprecated[1].
Use option www_authenticate_uri from group keystone_authtoken.

[1]https://review.openstack.org/#/c/508522/

Change-Id: I2ef330d7f9b632e9a81d22a8edec3c88eb532ff5
2018-04-12 04:15:01 +00:00
Zuul
b537979e45 Merge "Several fixes of strategies docs" 2018-04-11 09:12:22 +00:00
Egor Panfilov
aa74817686 Added _get_model_list base method for all get_*_list methods
When we call audittemplate list without filters, it returns all Audit
Templates that are not deleted, as expected. If we add any filter to
query and context.show_deleted is None (we request only current AT),
query.filter_by adds filter to joined table (for example, goals, results
 in a query like JOIN goals ... WHERE ... goals.deleted_at IS NULL) not
to model's table (AuditTemplate in our case).

We change call for filter_by to filter, explicitly point to model that
we want to filter.

Also, we moved query generating code to new method _get_model_list(). As
a result we applied same fix to all of the other models.

Change-Id: I4d2f44fa149aee564c62a69822c6ad79de5bba8a
Closes-bug: 1761956
2018-04-10 14:10:44 +03:00
Zuul
831e58df10 Merge "Trivial fix of user guide doc" 2018-04-09 05:42:03 +00:00
Egor Panfilov
3dd03b2d45 Trivial fix of user guide doc
Removed duplicates of same commands, removed erroneous sentence about
conf file

Change-Id: I630924ed2860d0df70524d4f9f7d3ddb07a3dcc0
2018-04-07 12:56:30 +03:00
Zuul
2548f0bbba Merge "zuulv3 optimization" 2018-04-03 13:06:48 +00:00
Alexander Chadin
39d7ce9ee8 zuulv3 optimization
This patch set improves inheritance of watcher jobs.

Change-Id: I65335cd0b25a355c46bfea8a962f63b8ac02ebf2
2018-04-03 09:25:04 +00:00
Zuul
1f8c073cb3 Merge "filter exclude instances during migration" 2018-04-02 12:09:47 +00:00
Zuul
0353a0ac77 Merge "Fix sort of *list command output" 2018-03-30 07:42:52 +00:00
Zuul
921584ac4b Merge "add lower-constraints job" 2018-03-29 09:04:18 +00:00
Egor Panfilov
65a09ce32d Enable mutable config in Watcher
New releases of oslo.config support a 'mutable' parameter to Opts.
Configuration options are mutable if their oslo.config Opt's
mutable=True is set. This mutable setting is respected when the oslo
method mutate_config_files is called instead of reload_config_files.
Icec3e664f3fe72614e373b2938e8dee53cf8bc5e allows services to tell
oslo.service they want mutate_config_files to be called by specifying
the 'restart_method=mutate' parameter, what this patch does.

The default mutable configuration options (set by oslo.config Opts'
mutable=True) are:
- [DEFAULT]/pin_release_version
- [DEFAULT]/debug
- [DEFAULT]/log_config_append

Concrete params, that made mutable in Watcher:

* watcher_decision_engine.action_plan_expiry
* watcher_decision_engine.check_periodic_interval
* watcher_decision_engine.continuous_audit_interval
* gnocchi_client.query_max_retries
* gnocchi_client.query_timeout
* DEFAULT.periodic_interval

Change-Id: If28f2de094d99471a3ab756c947e29ae3d8a28a2
Implements: bp mutable-config
2018-03-28 23:44:47 +03:00
Egor Panfilov
92dad3be2d Several fixes of strategies docs
Removed duplicates of strategies descriptions, added references to
that descriptions instead of module descriptions.

Change-Id: Ife396ddce5c3cc926cc111f1ff1abd3a42c22561
2018-03-28 22:53:17 +03:00
Zuul
d86fee294f Merge "Remove obsolete playbooks of legacy jobs" 2018-03-28 14:41:25 +00:00
Zuul
95a01c4e12 Merge "set one worker for watcherclient-tempest-functional job" 2018-03-28 09:58:26 +00:00
Alexander Chadin
b9456e242e set one worker for watcherclient-tempest-functional job
Change-Id: I88646707ddfeff91a33bf25ee348bcb0981a2df4
2018-03-28 11:15:31 +03:00
Zuul
4e49ad64c0 Merge "Replaced deprecated oslo_messaging_rabbit section" 2018-03-28 03:40:14 +00:00
Alexander Chadin
184b1b1ce6 Remove obsolete playbooks of legacy jobs
This patch set removes playbooks of legacy jobs.

Change-Id: Ia8c36e261486709c3077b2705a97106b946519c2
2018-03-27 12:48:21 +03:00
OpenStack Proposal Bot
f49d0555e7 Updated from global requirements
Change-Id: Ia731e87abd108b07193f869322ba32b0c130c26e
2018-03-26 08:31:14 +00:00
Doug Hellmann
9d8a0feab4 add lower-constraints job
Create a tox environment for running the unit tests against the lower
bounds of the dependencies.

Create a lower-constraints.txt to be used to enforce the lower bounds
in those tests.

Add openstack-tox-lower-constraints job to the zuul configuration.

See http://lists.openstack.org/pipermail/openstack-dev/2018-March/128352.html
for more details.

Change-Id: Ia0547a12c756388dc521c5eed7897140fe0dfd61
Depends-On: https://review.openstack.org/555034
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
2018-03-25 14:50:34 -04:00
Egor Panfilov
52a5c99fc5 Replaced deprecated oslo_messaging_rabbit section
Added creation of [DEFAULT]/transport_url value
in devstack.

Also, fixed same topic in docs.

Change-Id: I9ad9475c4fccf023daac40c0b1e841eeeb22f040
Closes-Bug: 1738329
2018-03-25 12:50:13 +03:00
Zuul
cfaab0cbdc Merge "ZuulV3 jobs" 2018-03-23 22:29:17 +00:00
Alexander Chadin
6bb0432ee7 ZuulV3 jobs
This patch set removes legacy-* jobs and migrates
tempest functional job to ZuulV3 syntax.

Change-Id: I87771737cc713eae20b4d6aaaefefc5e40875666
Implements: blueprint migrate-to-zuulv3
2018-03-23 20:40:23 +00:00
melissaml
99837d6339 Delete the unnecessary '-'
Fix a typo

Change-Id: Ibeaf5454c3a8f10f338022fd24d98ef484efd370
2018-03-22 00:05:39 +08:00
Egor Panfilov
3075723da9 Fix sort of *list command output
While sorting output of list command ("audittemplate list",
"strategy list", etc)  by sort-key that is not belongs
to specific model, this sort-key was passed to db what
caused error (HTTP 500). We added check on such keys and now,
if got one of them, then we make sort on API side
instead of db side.

We removed excess sort and changed all sorting routines
to unified way.

Also added sort tests on every model.

Change-Id: I41faea1622605ee4fa8dc48cd572876d75be8383
Closes-Bug: 1662887
2018-03-20 13:16:13 +00:00
Zuul
b0bdeea7cf Merge "Remove version/date from CLI documentation" 2018-03-20 09:36:45 +00:00
Zuul
5eaad33709 Merge "Adding driver to mysql connection URL" 2018-03-20 09:32:10 +00:00
Ken'ichi Ohmichi
24b6432490 Remove version/date from CLI documentation
This patch removes the unnecessary maintenance of a date and version
from the CLI documentation.

NOTE: Cinder/Nova teams also did the same removal with
      the commit Idf78bbed44f942bb6976ccf4da67c748d9283ed9
      and the commit I0a9dd49e68f2d47c58a46b107c77975e7b2aeaf7

Change-Id: I6a0faeb596f1ee3a3b67d1d37a14e1507aa40eba
2018-03-19 15:04:32 -07:00
Vu Cong Tuan
ca61594511 Adding driver to mysql connection URL
With current URL [1], default driver will be used.
In order to ensure the compatibility, it is better to include the exact driver [2].

[1] connection = mysql://
[2] connection = mysql+pymysql://

Change-Id: I4f7b3ccbecfb2f1e2b3d125179dbd5c6fbf5e6b9
2018-03-19 17:02:08 +07:00
OpenStack Proposal Bot
bd57077bfe Updated from global requirements
Change-Id: I3aa816dadb10cb52b431edb928b789df4dca337d
2018-03-15 09:40:18 +00:00
Zuul
56bcba2dc0 Merge "ignore useless WARNING log message" 2018-03-13 07:54:49 +00:00
licanwei
73928412b3 ignore useless WARNING log message
remove the useless 'project' filed in context

Change-Id: I0d00969dd4b993dfbe6f4623c27457ed2589ae3f
Closes-Bug: #1755347
2018-03-12 21:03:12 -07:00
Zuul
29f41b7dff Merge "Change the outdated links to the latest links in README" 2018-03-13 02:18:36 +00:00
Zuul
02f86ffe02 Merge "Updated from global requirements" 2018-03-12 11:14:42 +00:00
Zuul
20c6bf1b5a Merge "Add the missing markups for the hyperlink titles" 2018-03-12 11:13:26 +00:00
Zuul
083f070d17 Merge "Revert "Update OpenStack Installation Tutorial to Rocky"" 2018-03-12 01:30:48 +00:00
OpenStack Proposal Bot
4022b59d79 Updated from global requirements
Change-Id: I16aebdcc8b83d7f85034845da2a2de0470d12ce6
2018-03-10 14:00:34 +00:00
caoyuan
3d1cb11ea6 Add the missing markups for the hyperlink titles
Change-Id: If037d1ad76cfea89cc5a132b60eeda8e17afb1c4
2018-03-10 17:19:02 +08:00
caoyuan
d0b1dacec1 Change the outdated links to the latest links in README
1. Update the link
2. Remove the unnecessary space

Change-Id: I0fcf5a878d789ecd2f2a23cad314c32b6bb5ba51
2018-03-10 16:26:28 +08:00
Alexander Chadin
45a06445f3 basic_cons fix
Change-Id: I0856fadc3aaece3be286af9047339ce63d54be29
2018-03-09 14:52:57 +03:00
Andreas Jaeger
2f173bba56 Revert "Update OpenStack Installation Tutorial to Rocky"
The change is wrong. We link on purpose to the unversioned version and update that one once rocky is released.

This reverts commit e771ae9e95.

Change-Id: I0f981a8473a47d18ce20be74a8e2d12d22f40061
2018-03-09 11:10:16 +00:00
Zuul
cb497d2642 Merge "Add parameter aggregation_method for basic_consolidation" 2018-03-09 10:52:08 +00:00
Zuul
e1fd686272 Merge "Update OpenStack Installation Tutorial to Rocky" 2018-03-09 10:04:16 +00:00
Zuul
8f7127a874 Merge "Delete the unnecessary '-'" 2018-03-09 10:04:15 +00:00
Zuul
3a529a0f7b Merge "Fix Uuid and virtual_free elements load error" 2018-03-09 10:00:19 +00:00
Alexander Chadin
5c81f1bd7f Add parameter aggregation_method for basic_consolidation
This parameter is required to fix tempest multinode test.

Change-Id: I4014fb7a76ce74e1426378183ecef0308bc56ce7
2018-03-09 12:50:46 +03:00
Zuul
e0c019002a Merge "Imported Translations from Zanata" 2018-03-09 06:50:04 +00:00
Zuul
cc24ef6e08 Merge "Fix exception string format" 2018-03-09 06:47:03 +00:00
OpenStack Proposal Bot
7e27abc5db Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: Ic6546e38367df64e2b3819ccf79261a1c4d38a2c
2018-03-08 07:27:37 +00:00
caoyuan
4844baa816 Delete the unnecessary '-'
fix a typo

Change-Id: I4ecdb827d94ef0ae88e2f37db9d1a53525140947
2018-03-08 12:50:00 +08:00
caoyuan
e771ae9e95 Update OpenStack Installation Tutorial to Rocky
Since rocky branch created, OpenStack Installation Tutorial
should use it.

Change-Id: I40d2b1fdf2bac9a5515d10cf0b33f25c1153155a
2018-03-08 12:46:46 +08:00
Alexander Chadin
a2488045ea Add parameter aggregation_method for work_stab
This parameter is required to fix tempest multinode test.

Change-Id: Id0c6a01b831a6b15694fdb811a1f53f8c6303120
2018-03-07 11:38:40 +00:00
Alexander Chadin
cce5ebd3f0 basic_consolidation trivial fix
This fix adds usage of granularity parameter.
Should be merged ASAP.

Change-Id: I469ee056b32f95aba02100450c65945ee9877b23
2018-03-06 14:42:51 +00:00
Hidekazu Nakamura
a7ab77078e Fix Uuid and virtual_free elements load error
NotImplementedError are reported in decision-engine log file
when we activate storage data model and see a Guru Meditation Report.
This patch fixes by adding default values.

Change-Id: I06386f8295f7758cbb633612eee8b19225905c92
Closes-Bug: #1750300
2018-03-06 16:55:11 +09:00
Zuul
9af32bce5b Merge "Complete schema of workload_stabilization strategy" 2018-03-06 01:17:37 +00:00
Zuul
4cf35e7e62 Merge "Updated Hacking doc" 2018-03-06 01:06:55 +00:00
Andreas Jaeger
6f27e50cf0 Fix exception string format
The string %(action) is not valid, it misses the conversion specified,
add s for string.

Note that this leads to an untranslatable string, since our translation
tools check for valid formats and fail. In this case the failure comes
from a source code fail.

Change-Id: I2e630928dc32542a8a7c02657a9f0ab1eaab62ff
2018-03-03 17:09:59 +00:00
Zuul
bd8c5c684c Merge "Add the missing title of Configuration Guide" 2018-03-03 13:17:46 +00:00
OpenStack Proposal Bot
1834db853b Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: Id81df7aff5aa53071bc6f15a9178c5fcaffabf56
2018-03-03 12:13:49 +00:00
zhang.lei
59ef0d24d1 Add the missing title of Configuration Guide
There is no title for Configuration Guide now[1], this patch
is to add it.

backport: pike

[1] https://docs.openstack.org/watcher/pike/configuration/

Change-Id: I82d1b14b9a943cc1a2a22187ff30c75680f9f5d6
2018-03-03 12:13:19 +00:00
Alexander Chadin
c53817c33d Fix change_nova_service_state action
The function signature has been changed in 2.53 version[1]
and this patch is required to fix watcher-tempest-plugin.
If all tests are ok, I'll merge it ASAP.

[1]: https://developer.openstack.org/api-ref/compute/#enable-scheduling-for-a-compute-service

Change-Id: Ie03519dac2a55263e278344fd00f103067f90f27
2018-03-03 10:14:26 +00:00
Zuul
b33b7a0474 Merge "Add a hacking rule for string interpolation at logging" 2018-02-28 12:24:37 +00:00
wangqi
033bc072c0 Updated Hacking doc
Change-Id: Ib9ec1d7dd17786e084b7e889e845b959b1398909
2018-02-28 03:58:07 +00:00
Zuul
f32ed6bc79 Merge "Fix old url links in doc" 2018-02-27 14:20:09 +00:00
Zuul
707590143b Merge "[Trivialfix]Modify a grammatical error" 2018-02-26 01:47:50 +00:00
Zuul
b2663de513 Merge "Add support for networkx v2.0" 2018-02-23 09:23:47 +00:00
ShangXiao
dd210292ae [Trivialfix]Modify a grammatical error
Modify a grammatical error in basic_consolidation.py.

Change-Id: I9770121b0b0064c3ddfb582e5eaf6ee52ae8d6bb
2018-02-23 09:16:18 +00:00
ShangXiao
abb9155eb4 Fix old url links in doc
Replace the old http url links with the lastest https ones according
to the official OpenStack website.

Change-Id: I1abd79bb80dae44ee2ba5946b8a375c7096b39d6
2018-02-23 00:19:24 -08:00
ForestLee
f607ae8ec0 Add a hacking rule for string interpolation at logging
String interpolation should be delayed to be handled by
the logging code, rather than being done at the point
of the logging call.
See the oslo i18n guideline
* https://docs.openstack.org/oslo.i18n/latest/user/guidelines.html#adding-variables-to-log-messages
and
* https://github.com/openstack-dev/hacking/blob/master/hacking/checks/other.py#L39
Closes-Bug: #1596829

Change-Id: Ibba5791669c137be1483805db657beb907030227
2018-02-23 10:41:00 +03:00
Alexander Chadin
b3ded34244 Complete schema of workload_stabilization strategy
This patch set completes schema by adding restrictions
to different types of schema properties.

It also makes workload_stabilization strategy more
user friendly by setting cpu_util as default metric.

Change-Id: If34cf4b7ee2f70dc9a86309cb94a90b19e3d9bec
2018-02-23 07:13:40 +00:00
Zuul
bdfb074aa4 Merge "workload_stabilization trivial fix" 2018-02-23 06:40:51 +00:00
Zuul
b3be5f16fc Merge "Fix grammar errors" 2018-02-23 05:48:54 +00:00
suzhengwei
dad60fb878 filter exclude instances during migration
Change-Id: Ib5e0d285de0f25515702890778aca5e6417befaf
Implements:blueprint compute-cdm-include-all-instances
2018-02-23 03:13:46 +00:00
baiwenteng
fb66a9f2c3 Fix grammar errors
Replace 'a instance' with 'an instance' in
watcher/decision_engine/model/collector/nova.py
watcher/decision_engine/model/element/instance.py

Change-Id: I39020f3e7b460dea768f7e38fef9ae9e2a4b7357
2018-02-21 13:18:42 +00:00
Alexander Chadin
dc9ef6f49c workload_stabilization trivial fix
This fix allows to compare metric name by value,
not by object.

Change-Id: I57c50ff97efa43efe4fd81875e481b25e9a18cc6
2018-02-20 13:53:02 +03:00
Zuul
8e8a43ed48 Merge "Updated from global requirements" 2018-02-19 07:30:56 +00:00
OpenStack Proposal Bot
5ac65b7bfc Updated from global requirements
Change-Id: I998ce5743e58a8c6bf754a15e491d7bce44e7264
2018-02-17 10:30:58 +00:00
OpenStack Proposal Bot
7b9b726577 Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: Iba37807905b24db36d506c0dc08c3dff0a3c38cf
2018-02-17 07:41:55 +00:00
Alexander Chadin
c81cd675a5 Add support for networkx v2.0
Closes-Bug: #1718576
Change-Id: I1628e4c395591b87c7993294c065476a1f8191bb
2018-02-15 15:17:34 +03:00
Zuul
ab926bf6c5 Merge "Updated from global requirements" 2018-02-15 10:05:54 +00:00
Zuul
08c688ed11 Merge "Fix some dead link in docs" 2018-02-15 08:34:18 +00:00
OpenStack Proposal Bot
e399d96661 Updated from global requirements
Change-Id: Ibed48beff0bf4537644641fd149e39d54a21d475
2018-02-14 12:37:35 +00:00
Zuul
ba54b30d4a Merge "Update meeting time on odd weeks" 2018-02-14 11:04:22 +00:00
watanabe isao
44d9183d36 Fix some dead link in docs
Change-Id: I729266a789d38f831d726c769fd7ac8d111dee26
2018-02-14 16:45:13 +09:00
Zuul
f6f3c00206 Merge "Imported Translations from Zanata" 2018-02-12 10:27:48 +00:00
Alexander Chadin
cc87b823fa Update meeting time on odd weeks
Change-Id: Ib07fea7a0bb9dc7c6f50655eeb05443ccf312ebd
2018-02-12 12:43:47 +03:00
Zuul
ba2395f7e7 Merge "fix misspelling of 'return'" 2018-02-12 09:39:32 +00:00
Zuul
b546ce8777 Merge "Add missing release notes" 2018-02-11 01:53:49 +00:00
pangliye
0900eaa9df fix misspelling of 'return'
[trivial_fix]

Change-Id: I3df27dc419d8ae48650648e9f696ea6a182915bf
2018-02-11 01:17:32 +00:00
Alexander Chadin
9fb5b2a4e7 Add missing release notes
Change-Id: I6559398d26869ed092eedf5648eea23d89bcb81c
2018-02-09 11:45:05 +03:00
OpenStack Proposal Bot
d80edea218 Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: Idf4f8689bedc48f500e9cebb953c036675729571
2018-02-09 07:38:05 +00:00
OpenStack Release Bot
26d6074689 Update reno for stable/queens
Change-Id: I32b3883d0a7d47434b5f21efcf2d053d0e40a448
2018-02-08 16:34:08 +00:00
Zuul
40a653215f Merge "Zuul: Remove project name" 2018-02-07 07:24:53 +00:00
Zuul
1492f5d8dc Merge "Repalce Chinese double quotes to English double quotes" 2018-02-07 07:22:41 +00:00
Zuul
76263f149a Merge "Fix issues with aggregate and granularity attributes" 2018-02-06 06:05:50 +00:00
James E. Blair
028006d15d Zuul: Remove project name
Zuul no longer requires the project-name for in-repo configuration.
Omitting it makes forking or renaming projects easier.

Change-Id: Ib3be82015be1d6853c44cf53faacb238237ad701
2018-02-05 14:18:38 -08:00
Alexander Chadin
d27ba8cc2a Fix issues with aggregate and granularity attributes
This patch set fixes issues that have appeared after merging
watcher-multi-datasource and strategy-requirements patches.
It is final commit in watcher-multi-datasource blueprint.

Partially-Implements: blueprint watcher-multi-datasource
Change-Id: I25b4cb0e1b85379ff0c4da9d0c1474380d75ce3a
2018-02-05 11:08:48 +00:00
chengebj5238
33750ce7a9 Repalce Chinese double quotes to English double quotes
Change-Id: I566ce10064c3dc51b875fc973c0ad9b58449001c
2018-02-05 17:59:08 +08:00
Zuul
cb8d1a98d6 Merge "Fix get_compute_node_by_hostname in nova_helper" 2018-02-05 06:47:10 +00:00
Hidekazu Nakamura
f32252d510 Fix get_compute_node_by_hostname in nova_helper
If hostname is different from uuid in Compute CDM,
get_compute_node_by_hostname method returns empty.
This patch set fixes to return a compute node even if hostname
is different from uuid.

Change-Id: I6cbc0be1a79cc238f480caed9adb8dc31256754a
Closes-Bug: #1746162
2018-02-02 14:26:20 +09:00
Zuul
4849f8dde9 Merge "Add zone migration strategy document" 2018-02-02 04:51:26 +00:00
Hidekazu Nakamura
0cafdcdee9 Add zone migration strategy document
This patch set adds zone migration strategy document.

Change-Id: Ifd9d85d635977900929efd376f0d7990a6fec627
2018-02-02 09:35:58 +09:00
OpenStack Proposal Bot
3a70225164 Updated from global requirements
Change-Id: Ifb8d8d6cb1248eaf8715c84539d74fa04dd753dd
2018-02-01 07:36:19 +00:00
Zuul
892c766ac4 Merge "Fixed AttributeError in storage_model" 2018-01-31 13:58:53 +00:00
Zuul
63a3fd84ae Merge "Remove redundant import alias" 2018-01-31 12:45:21 +00:00
Zuul
287ace1dcc Merge "Update zone_migration comment" 2018-01-31 06:14:15 +00:00
Zuul
4b302e415e Merge "Zuul: Remove project name" 2018-01-30 12:22:41 +00:00
licanwei
f24744c910 Fixed AttributeError in storage_model
self.audit.scope should be self.audit_scope

Closes-Bug: #1746191

Change-Id: I0cce165a2bc1afd4c9e09c51e4d3250ee70d3705
2018-01-30 00:32:19 -08:00
Zuul
d9a85eda2c Merge "Imported Translations from Zanata" 2018-01-29 14:12:36 +00:00
Zuul
82c8633e42 Merge "[Doc] Add actuator strategy doc" 2018-01-29 14:12:35 +00:00
Hidekazu Nakamura
d3f23795f5 Update zone_migration comment
This patch updates zone_migration comment for document and
removes unnecessary TODO.

Change-Id: Ib1eadad6496fe202e406108f432349c82696ea88
2018-01-29 17:48:48 +09:00
Hoang Trung Hieu
e7f4456a80 Zuul: Remove project name
Zuul no longer requires the project-name for in-repo configuration[1].
Omitting it makes forking or renaming projects easier.

[1] https://docs.openstack.org/infra/manual/drivers.html#consistent-naming-for-jobs-with-zuul-v3

Change-Id: Iddf89707289a22ea322c14d1b11f58840871304d
2018-01-29 07:24:44 +00:00
OpenStack Proposal Bot
a36a309e2e Updated from global requirements
Change-Id: I29ebfe2e3398dab6f2e22f3d97c16b72843f1e34
2018-01-29 00:42:54 +00:00
Hidekazu Nakamura
8e3affd9ac [Doc] Add actuator strategy doc
This patch adds actuator strategy document.

Change-Id: I5f0415754c83e4f152155988625ada2208d6c35a
2018-01-28 20:00:05 +09:00
OpenStack Proposal Bot
71e979cae0 Imported Translations from Zanata
For more information about this automatic import see:
https://docs.openstack.org/i18n/latest/reviewing-translation-import.html

Change-Id: Ie34aafe6d9b54bb97469844d21de38d7c6249031
2018-01-28 07:16:20 +00:00
Luong Anh Tuan
6edfd34a53 Remove redundant import alias
This patch remove redundant import aliases and add pep8 hacking function
to check no redundant import aliases.

Co-Authored-By: Dao Cong Tien <tiendc@vn.fujitsu.com>

Change-Id: I3207cb9f0eb4b4a029b7e822b9c59cf48d1e0f9d
Closes-Bug: #1745527
2018-01-26 09:11:43 +07:00
Alexander Chadin
0c8c32e69e Fix strategy state
Change-Id: I003bb3b41aac69cc40a847f52a50c7bc4cc8d020
2018-01-25 15:41:34 +03:00
Alexander Chadin
9138b7bacb Add datasources to strategies
This patch set add datasources instead of datasource.

Change-Id: I94f17ae3a0b6a8990293dc9e33be1a2bd3432a14
2018-01-24 20:51:38 +03:00
384 changed files with 15202 additions and 5312 deletions

6
.gitignore vendored
View File

@@ -23,11 +23,10 @@ pip-log.txt
# Unit test / coverage reports
.coverage*
.tox
nosetests.xml
.stestr/
.testrepository
.venv
.idea
.testrepository/
# Translations
*.mo
@@ -76,3 +75,6 @@ releasenotes/build
# Autogenerated sample config file
etc/watcher/watcher.conf.sample
# Atom
.remote-sync.json

View File

@@ -1,4 +1,5 @@
[gerrit]
host=review.openstack.org
host=review.opendev.org
port=29418
project=openstack/watcher.git
defaultbranch=stable/stein

View File

@@ -1,4 +1,4 @@
[DEFAULT]
test_path=${OS_TEST_PATH:-./watcher/tests}
test_path=./watcher/tests
top_dir=./

View File

@@ -1,7 +0,0 @@
[DEFAULT]
test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-160} \
${PYTHON:-python} -m subunit.run discover -t ./ ${OS_TEST_PATH:-./watcher/tests} $LISTOPT $IDOPTION
test_id_option=--load-list $IDFILE
test_list_option=--list

View File

@@ -1,39 +1,228 @@
- project:
name: openstack/watcher
queue: watcher
templates:
- check-requirements
- openstack-cover-jobs
- openstack-lower-constraints-jobs
- openstack-python-jobs
- openstack-python35-jobs
- openstack-python36-jobs
- publish-openstack-docs-pti
- release-notes-jobs-python3
check:
jobs:
- watcher-tempest-multinode
- legacy-rally-dsvm-watcher-rally
- watcher-tempest-functional
- watcher-grenade:
voting: false
- watcher-tempest-dummy_optim
- watcher-tempest-actuator
- watcher-tempest-basic_optim
- watcher-tempest-vm_workload_consolidation
- watcher-tempest-workload_balancing
- watcher-tempest-zone_migration
- watcher-tempest-host_maintenance
- watcher-tempest-storage_balance
- watcher-tls-test
gate:
jobs:
- watcher-tempest-functional
- job:
name: watcher-tempest-base-multinode
parent: legacy-dsvm-base-multinode
run: playbooks/legacy/watcher-tempest-base-multinode/run.yaml
post-run: playbooks/legacy/watcher-tempest-base-multinode/post.yaml
timeout: 4200
name: watcher-tempest-dummy_optim
parent: watcher-tempest-multinode
voting: false
vars:
tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_dummy_optim
- job:
name: watcher-tempest-actuator
parent: watcher-tempest-multinode
voting: false
vars:
tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_actuator
- job:
name: watcher-tempest-basic_optim
parent: watcher-tempest-multinode
voting: false
vars:
tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_basic_optim
- job:
name: watcher-tempest-vm_workload_consolidation
parent: watcher-tempest-multinode
voting: false
vars:
tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_vm_workload_consolidation
devstack_local_conf:
test-config:
$WATCHER_CONFIG:
watcher_strategies.vm_workload_consolidation:
datasource: ceilometer
- job:
name: watcher-tempest-workload_balancing
parent: watcher-tempest-multinode
voting: false
vars:
tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_workload_balancing
- job:
name: watcher-tempest-zone_migration
parent: watcher-tempest-multinode
voting: false
vars:
tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_zone_migration
- job:
name: watcher-tempest-host_maintenance
parent: watcher-tempest-multinode
voting: false
vars:
tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_host_maintenance
- job:
name: watcher-tempest-storage_balance
parent: watcher-tempest-multinode
voting: false
vars:
tempest_test_regex: watcher_tempest_plugin.tests.scenario.test_execute_storage_balance
devstack_local_conf:
test-config:
$TEMPEST_CONFIG:
volume:
backend_names: ['BACKEND_1', 'BACKEND_2']
volume-feature-enabled:
multi_backend: true
- job:
name: watcher-tls-test
parent: watcher-tempest-multinode
group-vars:
subnode:
devstack_services:
tls-proxy: true
vars:
devstack_services:
tls-proxy: true
- job:
name: watcher-tempest-multinode
parent: watcher-tempest-functional
nodeset: openstack-two-node-bionic
roles:
- zuul: openstack/tempest
group-vars:
subnode:
devstack_local_conf:
post-config:
$WATCHER_CONF:
watcher_cluster_data_model_collectors.compute:
period: 120
watcher_cluster_data_model_collectors.baremetal:
period: 120
watcher_cluster_data_model_collectors.storage:
period: 120
devstack_services:
watcher-api: false
watcher-decision-engine: true
watcher-applier: false
# We need to add TLS support for watcher plugin
tls-proxy: false
ceilometer: false
ceilometer-acompute: false
ceilometer-acentral: false
ceilometer-anotification: false
watcher: false
gnocchi-api: false
gnocchi-metricd: false
rabbit: false
mysql: false
vars:
devstack_local_conf:
post-config:
$WATCHER_CONF:
watcher_cluster_data_model_collectors.compute:
period: 120
watcher_cluster_data_model_collectors.baremetal:
period: 120
watcher_cluster_data_model_collectors.storage:
period: 120
test-config:
$TEMPEST_CONFIG:
compute:
min_compute_nodes: 2
compute-feature-enabled:
live_migration: true
block_migration_for_live_migration: true
devstack_plugins:
ceilometer: https://opendev.org/openstack/ceilometer
- job:
name: watcher-tempest-functional
parent: devstack-tempest
timeout: 7200
required-projects:
- openstack-infra/devstack-gate
- openstack/ceilometer
- openstack/devstack-gate
- openstack/python-openstackclient
- openstack/python-watcherclient
- openstack/watcher
- openstack/watcher-tempest-plugin
nodeset: legacy-ubuntu-xenial-2-node
- openstack/tempest
vars:
devstack_plugins:
watcher: https://opendev.org/openstack/watcher
devstack_services:
tls-proxy: false
watcher-api: true
watcher-decision-engine: true
watcher-applier: true
tempest: true
s-account: false
s-container: false
s-object: false
s-proxy: false
devstack_localrc:
TEMPEST_PLUGINS: /opt/stack/watcher-tempest-plugin
tempest_test_regex: watcher_tempest_plugin.tests.api
tox_envlist: all
tox_environment:
# Do we really need to set this? It's cargo culted
PYTHONUNBUFFERED: 'true'
zuul_copy_output:
/etc/hosts: logs
- job:
name: watcher-tempest-multinode
parent: watcher-tempest-base-multinode
voting: false
- job:
# This job is used by python-watcherclient repo
name: watcherclient-tempest-functional
name: watcher-grenade
parent: legacy-dsvm-base
run: playbooks/legacy/watcherclient-tempest-functional/run.yaml
post-run: playbooks/legacy/watcherclient-tempest-functional/post.yaml
timeout: 4200
timeout: 10800
run: playbooks/legacy/grenade-devstack-watcher/run.yaml
post-run: playbooks/legacy/grenade-devstack-watcher/post.yaml
irrelevant-files:
- ^(test-|)requirements.txt$
- ^.*\.rst$
- ^api-ref/.*$
- ^doc/.*$
- ^watcher/hacking/.*$
- ^watcher/tests/.*$
- ^releasenotes/.*$
- ^setup.cfg$
- ^tools/.*$
- ^tox.ini$
required-projects:
- openstack-dev/devstack
- openstack-infra/devstack-gate
- openstack/python-openstackclient
- openstack/python-watcherclient
- openstack/grenade
- openstack/devstack-gate
- openstack/watcher
- openstack/python-watcherclient
- openstack/watcher-tempest-plugin
- job:
# This job is used in python-watcherclient repo
name: watcherclient-tempest-functional
parent: watcher-tempest-functional
voting: false
timeout: 4200
vars:
tempest_concurrency: 1
tempest_test_regex: watcher_tempest_plugin.tests.client_functional

View File

@@ -8,4 +8,4 @@
watcher Style Commandments
==========================
Read the OpenStack Style Commandments https://docs.openstack.org/developer/hacking/
Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/

View File

@@ -2,8 +2,8 @@
Team and repository tags
========================
.. image:: https://governance.openstack.org/badges/watcher.svg
:target: https://governance.openstack.org/reference/tags/index.html
.. image:: https://governance.openstack.org/tc/badges/watcher.svg
:target: https://governance.openstack.org/tc/reference/tags/index.html
.. Change things from this point on
@@ -22,10 +22,11 @@ service for multi-tenant OpenStack-based clouds.
Watcher provides a robust framework to realize a wide range of cloud
optimization goals, including the reduction of data center
operating costs, increased system performance via intelligent virtual machine
migration, increased energy efficiency-and more!
migration, increased energy efficiency and more!
* Free software: Apache license
* Wiki: https://wiki.openstack.org/wiki/Watcher
* Source: https://github.com/openstack/watcher
* Source: https://github.com/openstack/watcher
* Bugs: https://bugs.launchpad.net/watcher
* Documentation: https://docs.openstack.org/watcher/latest/
* Release notes: https://docs.openstack.org/releasenotes/watcher/

90
api-ref/source/conf.py Normal file
View File

@@ -0,0 +1,90 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# nova documentation build configuration file, created by
# sphinx-quickstart on Sat May 1 15:17:47 2010.
#
# This file is execfile()d with the current directory set to
# its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
from watcher import version as watcher_version
extensions = [
'openstackdocstheme',
'os_api_ref',
]
# -- General configuration ----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
# The suffix of source filenames.
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'Infrastructure Optimization API Reference'
copyright = u'2010-present, OpenStack Foundation'
# openstackdocstheme options
repository_name = 'openstack/watcher'
bug_project = 'watcher'
bug_tag = ''
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The full version, including alpha/beta/rc tags.
release = watcher_version.version_info.release_string()
# The short X.Y version.
version = watcher_version.version_string
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# -- Options for HTML output --------------------------------------------------
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
html_theme = 'openstackdocs'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
html_theme_options = {
"sidebar_mode": "toc",
}
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
html_last_updated_fmt = '%Y-%m-%d %H:%M'
# -- Options for LaTeX output -------------------------------------------------
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass
# [howto/manual]).
latex_documents = [
('index', 'Watcher.tex', u'Infrastructure Optimization API Reference',
u'OpenStack Foundation', 'manual'),
]

17
api-ref/source/index.rst Normal file
View File

@@ -0,0 +1,17 @@
:tocdepth: 2
===========
Watcher API
===========
.. rest_expand_all::
.. include:: watcher-api-versions.inc
.. include:: watcher-api-v1-audittemplates.inc
.. include:: watcher-api-v1-audits.inc
.. include:: watcher-api-v1-actionplans.inc
.. include:: watcher-api-v1-actions.inc
.. include:: watcher-api-v1-goals.inc
.. include:: watcher-api-v1-strategies.inc
.. include:: watcher-api-v1-services.inc
.. include:: watcher-api-v1-scoring_engines.inc

View File

@@ -0,0 +1,546 @@
# variables in header
header_version:
description: |
Specific API microversion used to generate this response.
in: header
required: true
type: string
openstack-api-max-version:
description: |
Maximum API microversion supported by this endpoint, eg. "1.1"
in: header
required: true
type: string
openstack-api-min-version:
description: |
Minimum API microversion supported by this endpoint, eg. "1.0"
in: header
required: true
type: string
openstack-api-version:
description: >
A request SHOULD include this header to indicate to the Watcher API service what
version the client supports. The server will transform the response object into
compliance with the requested version, if it is supported, or return a
406 Not Acceptable error.
If this header is not supplied, the server will response with server minimum
supported version.
in: header
required: true
type: string
openstack-request-id:
description: >
An unique ID for tracking the request. The request ID associated with the request
appears in the log lines for that request. By default, the middleware configuration
ensures that the request ID appears in the log files.
in: header
required: false
type: string
# Path
action_ident:
description: |
The UUID of the Action.
in: path
required: true
type: string
actionplan_ident:
description: |
The UUID of the Action Plan.
in: path
required: true
type: string
audit_ident:
description: |
The UUID or name of the Audit.
in: path
required: true
type: string
audittemplate_ident:
description: |
The UUID or name of the Audit Template.
in: path
required: true
type: string
goal_ident:
description: |
The UUID or name of the Goal.
in: path
required: true
type: string
scoring_engine_ident:
description: |
The UUID or name of the Scoring Engine.
in: path
required: true
type: string
service_ident:
description: |
The ID or name of the Service.
in: path
required: true
type: string
strategy_ident:
description: |
The UUID or name of the Strategy.
in: path
required: true
type: string
# Query body
limit:
description: |
Requests a page size of items. Returns a number of items up to a ``limit``
value. Use the limit parameter to make an initial limited request and use
the ID of the last-seen item from the response as the ``marker`` parameter
value in a subsequent limited request.
in: query
required: false
type: integer
marker:
description: |
The ID of the last-seen item. Use the ``limit`` parameter to make an
initial limited request and use the ID of the last-seen item from the
response as the ``marker`` parameter value in a subsequent limited request.
in: query
required: false
type: string
r_action_plan:
description: |
UUID of the action plan used for filtering.
in: query
required: false
type: string
r_audit:
description: |
Optional UUID of an audit, to get only actions for that audit.
in: query
required: false
type: string
r_goal:
description: |
The UUID or name of the Goal.
in: query
required: false
type: string
r_strategy:
description: |
The UUID or name of the Strategy.
in: query
required: false
type: string
sort_dir:
description: |
Sorts the response by the requested sort direction.
A valid value is ``asc`` (ascending) or ``desc`` (descending).
Default is ``asc``.
in: query
required: false
type: string
sort_key:
description: |
Sorts the response by the this attribute value. Default is ``id``.
in: query
required: false
type: string
# variables in the API response body
# Action
action_action_plan_uuid:
description: |
The action plan this action belongs to.
in: body
required: true
type: string
action_description:
description: |
Action description.
in: body
required: true
type: string
action_input_parameters:
description: |
Input parameters which are used by appropriate action type. For example,
``migration`` action takes into account such parameters as
``migration_type``, ``destination_node``, ``resource_id`` and
``source_node``. To see a list of supported action types and their input
parameters visit `Action plugins page <https://docs.openstack.org/watcher/latest/contributor/plugin/plugins.html#actions>`_.
in: body
required: true
type: JSON
action_parents:
description: |
UUIDs of parent actions.
in: body
required: true
type: array
action_state:
description: |
State of Action.
in: body
required: true
type: string
action_type:
description: |
Action type based on specific API action. Actions in Watcher are
pluggable, to see a list of supported action types visit
`Action plugins page <https://docs.openstack.org/watcher/latest/contributor/plugin/plugins.html#actions>`_.
in: body
required: true
type: string
# Action Plan
actionplan_audit_uuid:
description: |
The UUID of the audit this acton plan belongs to.
in: body
required: false
type: string
actionplan_efficacy_indicators:
description: |
The list of efficacy indicators associated to this action plan.
in: body
required: false
type: array
actionplan_global_efficacy:
description: |
The global efficacy of this action plan.
in: body
required: false
type: array
actionplan_hostname:
description: |
Hostname the actionplan is running on
in: body
required: false
type: string
actionplan_state:
description: |
State of this action plan. To get more information about states and
action plan's lifecycle, visit `Action Plan State Machine page <https://docs.openstack.org/watcher/latest/architecture.html#action-plan-state-machine>`_.
in: body
required: false
type: string
# Audit
audit_autotrigger:
description: |
Auto execute action plan once audit is succeeded.
in: body
required: false
type: boolean
audit_endtime_req:
description: |
The local time after which audit can't be executed.
It will be converted to UTC time by Watcher.
in: body
required: false
type: string
min_version: 1.1
audit_endtime_resp:
description: |
The UTC time after which audit can't be executed.
in: body
required: false
type: string
min_version: 1.1
audit_goal:
description: |
The UUID or name of the Goal.
in: body
required: false
type: string
audit_hostname:
description: |
Hostname the audit is running on
in: body
required: false
type: string
audit_interval:
description: |
Time interval between audit's execution.
Can be set either in seconds or cron syntax.
Should be defined only for CONTINUOUS audits.
in: body
required: false
type: string
audit_name:
description: |
Name of this audit.
in: body
required: false
type: string
audit_next_run_time:
description: |
The next time audit launch. Defined only for CONTINUOUS audits.
in: body
required: false
type: string
audit_parameters:
description: |
The strategy parameters for this audit.
in: body
required: false
type: JSON
audit_starttime_req:
description: |
The local time after which audit can be executed in accordance
with interval. It will be converted to UTC time by Watcher.
in: body
required: false
type: string
min_version: 1.1
audit_starttime_resp:
description: |
The UTC time after which audit can be executed in accordance with interval.
in: body
required: false
type: string
min_version: 1.1
audit_state:
description: |
State of this audit. To get more information about states and
audit's lifecycle, visit `Audit State Machine page <https://docs.openstack.org/watcher/latest/architecture.html#audit-state-machine>`_.
in: body
required: true
type: string
audit_strategy:
description: |
The UUID or name of the Strategy.
in: body
required: false
type: string
audit_type:
description: |
Type of this audit. Can only be either ONESHOT or CONTINUOUS.
in: body
required: true
type: string
# Audit Template
audittemplate_description:
description: |
Short description of the Audit Template.
in: body
required: false
type: string
audittemplate_goal:
description: |
The UUID or name of the Goal.
in: body
required: true
type: string
audittemplate_name:
description: |
The name of the Audit template.
in: body
required: true
type: string
audittemplate_scope:
description: |
Audit Scope.
in: body
required: false
type: JSON
audittemplate_strategy:
description: |
The UUID or name of the Strategy.
in: body
required: false
type: string
audittemplate_uuid:
description: |
The UUID of the Audit template.
in: body
required: true
type: string
created_at:
description: |
The date and time when the resource was created. The date and time
stamp format is `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_
in: body
required: true
type: string
deleted_at:
description: |
The date and time when the resource was deleted. The date and time
stamp format is `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_
in: body
required: true
type: string
# Goal
goal_display_name:
description: |
Localized name of the goal.
in: body
required: true
type: string
goal_efficacy_specification:
description: |
Efficacy specifications as result of stategy's execution.
in: body
required: true
type: array
goal_name:
description: |
Name of the goal.
in: body
required: true
type: string
goal_uuid:
description: |
Unique UUID for this goal.
in: body
required: true
type: string
links:
description: |
A list of relative links. Includes the self and bookmark links.
in: body
required: true
type: array
# Scoring Engine
scoring_engine_description:
description: |
A human readable description of the Scoring Engine.
in: body
required: true
type: string
scoring_engine_metainfo:
description: |
A metadata associated with the scoring engine
in: body
required: true
type: string
scoring_engine_name:
description: |
The name of the scoring engine.
in: body
required: true
type: string
# Service
service_host:
description: |
Name of host where service is placed on.
in: body
required: true
type: string
service_id:
description: |
ID of service.
in: body
required: true
type: integer
service_last_seen_up:
description: |
Time when Watcher service sent latest heartbeat.
in: body
required: true
type: string
service_name:
description: |
Name of service like ``watcher-applier``.
in: body
required: true
type: string
service_status:
description: |
State of service. It can be either in ACTIVE or FAILED state.
in: body
required: true
type: string
# Strategy
strategy_check_comment:
description: |
Requirement comment.
in: body
required: true
type: string
strategy_check_mandatory:
description: |
Whether this requirement mandatory or not.
in: body
required: true
type: boolean
strategy_check_state:
description: |
State of requirement for Strategy.
in: body
required: true
type: string or JSON
strategy_check_type:
description: |
Type of requirement for Strategy.
in: body
required: true
type: string
strategy_display_name:
description: |
Localized name of the strategy.
in: body
required: true
type: string
strategy_name:
description: |
Name of the strategy.
in: body
required: true
type: string
strategy_parameters_spec:
description: |
Parameters specifications for this strategy.
in: body
required: true
type: JSON
strategy_uuid:
description: |
Unique UUID for this strategy.
in: body
required: true
type: string
updated_at:
description: |
The date and time when the resource was updated. The date and time
stamp format is `ISO 8601 <https://en.wikipedia.org/wiki/ISO_8601>`_
in: body
required: true
type: string
uuid:
description: |
The UUID for the resource.
in: body
required: true
type: string
# Version
version:
description: |
Versioning of this API response, eg. "1.1".
in: body
required: true
type: string
version_description:
description: |
Descriptive text about the Watcher service.
in: body
required: true
type: string
version_id:
description: |
Major API version, eg, "v1"
in: body
required: true
type: string
versions:
description: |
Array of information about currently supported versions.
in: body
required: true
type: array

View File

@@ -0,0 +1,7 @@
[
{
"op": "replace",
"value": "CANCELLING",
"path": "/state"
}
]

View File

@@ -0,0 +1,7 @@
[
{
"op": "replace",
"value": "CANCELLED",
"path": "/state"
}
]

View File

@@ -0,0 +1,27 @@
{
"action_plans": [
{
"state": "ONGOING",
"efficacy_indicators": [],
"strategy_uuid": "7dae0eea-9df7-42b8-bb3e-313958ff2242",
"global_efficacy": [],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
},
{
"rel": "bookmark",
"href": "http://controller:9322/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
}
],
"updated_at": "2018-04-10T11:59:52.640067+00:00",
"strategy_name": "dummy_with_resize",
"deleted_at": null,
"uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"audit_uuid": "7d100b05-0a86-491f-98a7-f93da19b272a",
"created_at": "2018-04-10T11:59:52.640067+00:00",
"hostname": "controller"
}
]
}

View File

@@ -0,0 +1,24 @@
{
"action_plans": [
{
"state": "ONGOING",
"efficacy_indicators": [],
"strategy_uuid": "7dae0eea-9df7-42b8-bb3e-313958ff2242",
"global_efficacy": [],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
},
{
"rel": "bookmark",
"href": "http://controller:9322/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
}
],
"updated_at": "2018-04-10T11:59:52.640067+00:00",
"strategy_name": "dummy_with_resize",
"uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"audit_uuid": "7d100b05-0a86-491f-98a7-f93da19b272a"
}
]
}

View File

@@ -0,0 +1,21 @@
{
"state": "ONGOING",
"efficacy_indicators": [],
"strategy_uuid": "7dae0eea-9df7-42b8-bb3e-313958ff2242",
"global_efficacy": [],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
},
{
"rel": "bookmark",
"href": "http://controller:9322/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
}
],
"updated_at": "2018-04-10T11:59:52.640067+00:00",
"strategy_name": "dummy_with_resize",
"uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"audit_uuid": "7d100b05-0a86-491f-98a7-f93da19b272a",
"hostname": "controller"
}

View File

@@ -0,0 +1,23 @@
{
"state": "PENDING",
"efficacy_indicators": [],
"strategy_uuid": "7dae0eea-9df7-42b8-bb3e-313958ff2242",
"global_efficacy": [],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
},
{
"rel": "bookmark",
"href": "http://controller:9322/action_plans/4cbc4ede-0d25-481b-b86e-998dbbd4f8bf"
}
],
"updated_at": "2018-04-10T11:59:41.602430+00:00",
"strategy_name": "dummy_with_resize",
"uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"audit_uuid": "7d100b05-0a86-491f-98a7-f93da19b272a",
"created_at": "2018-04-10T11:59:12.592729+00:00",
"deleted_at": null,
"hostname": null
}

View File

@@ -0,0 +1,30 @@
{
"actions": [
{
"state": "PENDING",
"description": "Wait for a given interval in seconds.",
"parents": [
"8119d16e-b419-4729-b015-fc04c4e45783"
],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/actions/7182a988-e6c4-4152-a0d6-067119475c83"
},
{
"rel": "bookmark",
"href": "http://controller:9322/actions/7182a988-e6c4-4152-a0d6-067119475c83"
}
],
"action_plan_uuid": "c6bba9ed-a7eb-4370-9993-d873e5e22cba",
"uuid": "7182a988-e6c4-4152-a0d6-067119475c83",
"deleted_at": null,
"updated_at": null,
"input_parameters": {
"duration": 3.2
},
"action_type": "sleep",
"created_at": "2018-03-26T11:56:08.235226+00:00"
}
]
}

View File

@@ -0,0 +1,23 @@
{
"actions": [
{
"state": "PENDING",
"parents": [
"8119d16e-b419-4729-b015-fc04c4e45783"
],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/actions/7182a988-e6c4-4152-a0d6-067119475c83"
},
{
"rel": "bookmark",
"href": "http://controller:9322/actions/7182a988-e6c4-4152-a0d6-067119475c83"
}
],
"action_plan_uuid": "c6bba9ed-a7eb-4370-9993-d873e5e22cba",
"uuid": "7182a988-e6c4-4152-a0d6-067119475c83",
"action_type": "sleep"
}
]
}

View File

@@ -0,0 +1,26 @@
{
"state": "SUCCEEDED",
"description": "Logging a NOP message",
"parents": [
"b4529294-1de6-4302-b57a-9b5d5dc363c6"
],
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/actions/54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a"
},
{
"rel": "bookmark",
"href": "http://controller:9322/actions/54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a"
}
],
"action_plan_uuid": "4cbc4ede-0d25-481b-b86e-998dbbd4f8bf",
"uuid": "54acc7a0-91b0-46ea-a5f7-4ae2b9df0b0a",
"deleted_at": null,
"updated_at": "2018-04-10T11:59:44.026973+00:00",
"input_parameters": {
"message": "Welcome"
},
"action_type": "nop",
"created_at": "2018-04-10T11:59:12.725147+00:00"
}

View File

@@ -0,0 +1,30 @@
{
"default_version": {
"id": "v1",
"links": [
{
"href": "http://controller:9322/v1/",
"rel": "self"
}
],
"min_version": "1.0",
"status": "CURRENT",
"max_version": "1.1"
},
"description": "Watcher is an OpenStack project which aims to improve physical resources usage through better VM placement.",
"name": "OpenStack Watcher API",
"versions": [
{
"id": "v1",
"links": [
{
"href": "http://controller:9322/v1/",
"rel": "self"
}
],
"min_version": "1.0",
"status": "CURRENT",
"max_version": "1.1"
}
]
}

View File

@@ -0,0 +1,80 @@
{
"scoring_engines": [
{
"href": "http://controller:9322/v1/scoring_engines/",
"rel": "self"
},
{
"href": "http://controller:9322/scoring_engines/",
"rel": "bookmark"
}
],
"media_types": [
{
"base": "application/json",
"type": "application/vnd.openstack.watcher.v1+json"
}
],
"links": [
{
"href": "http://controller:9322/v1/",
"rel": "self"
},
{
"href": "http://docs.openstack.org/developer/watcher/dev/api-spec-v1.html",
"type": "text/html",
"rel": "describedby"
}
],
"actions": [
{
"href": "http://controller:9322/v1/actions/",
"rel": "self"
},
{
"href": "http://controller:9322/actions/",
"rel": "bookmark"
}
],
"audit_templates": [
{
"href": "http://controller:9322/v1/audit_templates/",
"rel": "self"
},
{
"href": "http://controller:9322/audit_templates/",
"rel": "bookmark"
}
],
"action_plans": [
{
"href": "http://controller:9322/v1/action_plans/",
"rel": "self"
},
{
"href": "http://controller:9322/action_plans/",
"rel": "bookmark"
}
],
"services": [
{
"href": "http://controller:9322/v1/services/",
"rel": "self"
},
{
"href": "http://controller:9322/services/",
"rel": "bookmark"
}
],
"audits": [
{
"href": "http://controller:9322/v1/audits/",
"rel": "self"
},
{
"href": "http://controller:9322/audits/",
"rel": "bookmark"
}
],
"id": "v1"
}

View File

@@ -0,0 +1,7 @@
[
{
"op": "replace",
"value": "CANCELLED",
"path": "/state"
}
]

View File

@@ -0,0 +1,54 @@
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "audit1",
"parameters": {
"host_choice": "retry",
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
},
"granularity": 300,
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"periods": {
"instance": 720,
"node": 600
},
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
}
},
"auto_trigger": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "CANCELLED",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": "2018-04-06T11:56:00",
"updated_at": "2018-04-06T11:54:01.266447+00:00",
"hostname": "controller",
"start_time": null,
"end_time": null
}

View File

@@ -0,0 +1,14 @@
{
"auto_trigger": false,
"audit_template_uuid": "76fddfee-a9c4-40b0-8da0-c19ad6904f09",
"name": "test_audit",
"parameters": {
"metrics": [
"cpu_util"
]
},
"audit_type": "CONTINUOUS",
"interval": "*/2 * * * *",
"start_time":"2018-04-02 20:30:00",
"end_time": "2018-04-04 20:30:00"
}

View File

@@ -0,0 +1,5 @@
{
"audit_type": "ONESHOT",
"auto_trigger": false,
"audit_template_uuid": "5e70a156-ced7-4012-b1c6-88fcb02ee0c1"
}

View File

@@ -0,0 +1,54 @@
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "test_audit",
"parameters": {
"host_choice": "retry",
"granularity": 300,
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
},
"periods": {
"node": 600,
"instance": 720
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
}
},
"auto_trigger": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "PENDING",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": null,
"updated_at": null,
"hostname": null,
"start_time": null,
"end_time": null
}

View File

@@ -0,0 +1,58 @@
{
"audits": [
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "test_audit",
"parameters": {
"host_choice": "retry",
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
},
"granularity": 300,
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"periods": {
"instance": 720,
"node": 600
},
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
}
},
"auto_trigger": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "ONGOING",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": "2018-04-06T09:46:00",
"updated_at": "2018-04-06T09:44:01.604146+00:00",
"hostname": "controller",
"start_time": null,
"end_time": null
}
]
}

View File

@@ -0,0 +1,28 @@
{
"audits": [
{
"interval": null,
"strategy_uuid": "e311727b-b9b3-43ef-a5f7-8bd7ea80df25",
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "dummy-2018-03-26T11:56:07.950400",
"auto_trigger": false,
"uuid": "ccc69a5f-114e-46f4-b15e-a77eaa337b01",
"goal_name": "dummy",
"scope": [],
"state": "SUCCEEDED",
"audit_type": "ONESHOT",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/ccc69a5f-114e-46f4-b15e-a77eaa337b01"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/ccc69a5f-114e-46f4-b15e-a77eaa337b01"
}
],
"strategy_name": "dummy",
"next_run_time": null
}
]
}

View File

@@ -0,0 +1,54 @@
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "test_audit",
"parameters": {
"host_choice": "retry",
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
},
"granularity": 300,
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"periods": {
"instance": 720,
"node": 600
},
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
}
},
"auto_trigger": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "ONGOING",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": "2018-04-06T11:56:00",
"updated_at": "2018-04-06T11:54:01.266447+00:00",
"hostname": "controller",
"start_time": null,
"end_time": null
}

View File

@@ -0,0 +1,12 @@
[
{
"value": "CANCELLED",
"path": "/state",
"op": "replace"
},
{
"value": "audit1",
"path": "/name",
"op": "replace"
}
]

View File

@@ -0,0 +1,54 @@
{
"interval": "*/2 * * * *",
"strategy_uuid": "6b3b3902-8508-4cb0-bb85-67f32866b086",
"goal_uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"name": "audit1",
"parameters": {
"host_choice": "retry",
"instance_metrics": {
"cpu_util": "compute.node.cpu.percent",
"memory.resident": "hardware.memory.used"
},
"granularity": 300,
"weights": {
"cpu_util_weight": 1.0,
"memory.resident_weight": 1.0
},
"retry_count": 1,
"metrics": [
"cpu_util"
],
"periods": {
"instance": 720,
"node": 600
},
"thresholds": {
"cpu_util": 0.2,
"memory.resident": 0.2
}
},
"auto_trigger": false,
"uuid": "65a5da84-5819-4aea-8278-a28d2b489028",
"goal_name": "workload_balancing",
"scope": [],
"created_at": "2018-04-06T07:27:27.820460+00:00",
"deleted_at": null,
"state": "CANCELLED",
"audit_type": "CONTINUOUS",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audits/65a5da84-5819-4aea-8278-a28d2b489028"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audits/65a5da84-5819-4aea-8278-a28d2b489028"
}
],
"strategy_name": "workload_stabilization",
"next_run_time": "2018-04-06T11:56:00",
"updated_at": "2018-04-06T11:54:01.266447+00:00",
"hostname": "controller",
"start_time": null,
"end_time": null
}

View File

@@ -0,0 +1,7 @@
{
"name": "at2",
"goal": "dummy",
"strategy": "dummy",
"description": "the second audit template",
"scope": []
}

View File

@@ -0,0 +1,4 @@
{
"name": "at2",
"goal": "dummy"
}

View File

@@ -0,0 +1,23 @@
{
"description": null,
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at3",
"uuid": "b4041d8c-85d7-4224-851d-649fe48b7196",
"goal_name": "dummy",
"scope": [],
"created_at": "2018-04-04T08:38:33.110432+00:00",
"deleted_at": null,
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
}
],
"strategy_name": null,
"updated_at": null
}

View File

@@ -0,0 +1,23 @@
{
"audit_templates":[
{
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at3",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
},
{
"rel": "bookmark", "href":
"http://controller:9322/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
}
],
"strategy_name": null,
"uuid": "b4041d8c-85d7-4224-851d-649fe48b7196",
"goal_name": "dummy", "scope": [],
"description": null
}
]
}

View File

@@ -0,0 +1,22 @@
{
"audit_templates":[
{
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at3",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
},
{
"rel": "bookmark", "href":
"http://controller:9322/audit_templates/b4041d8c-85d7-4224-851d-649fe48b7196"
}
],
"strategy_name": null,
"uuid": "b4041d8c-85d7-4224-851d-649fe48b7196",
"goal_name": "dummy", "scope": []
}
]
}

View File

@@ -0,0 +1,23 @@
{
"description": "test 1",
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at1",
"uuid": "0d100c27-14af-4962-86fb-f6079287c9c6",
"goal_name": "dummy",
"scope": [],
"created_at": "2018-04-04T07:48:36.175472+00:00",
"deleted_at": null,
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/0d100c27-14af-4962-86fb-f6079287c9c6"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audit_templates/0d100c27-14af-4962-86fb-f6079287c9c6"
}
],
"strategy_name": null,
"updated_at": "2018-04-05T07:57:55.803650+00:00"
}

View File

@@ -0,0 +1,7 @@
[
{
"op": "replace",
"value": "PENDING",
"path": "/state"
}
]

View File

@@ -0,0 +1,23 @@
{
"description": "test 1",
"strategy_uuid": null,
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "at11",
"uuid": "0d100c27-14af-4962-86fb-f6079287c9c6",
"goal_name": "dummy",
"scope": [],
"created_at": "2018-04-04T07:48:36.175472+00:00",
"deleted_at": null,
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/audit_templates/0d100c27-14af-4962-86fb-f6079287c9c6"
},
{
"rel": "bookmark",
"href": "http://controller:9322/audit_templates/0d100c27-14af-4962-86fb-f6079287c9c6"
}
],
"strategy_name": null,
"updated_at": "2018-04-05T07:57:42.139127+00:00"
}

View File

@@ -0,0 +1,55 @@
{
"goals": [
{
"efficacy_specification": [],
"uuid": "e1a5a45b-f251-47cf-9c5f-fa1e66e1286a",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/goals/e1a5a45b-f251-47cf-9c5f-fa1e66e1286a"
},
{
"rel": "bookmark",
"href": "http://controller:9322/goals/e1a5a45b-f251-47cf-9c5f-fa1e66e1286a"
}
],
"name": "workload_balancing",
"display_name": "Workload Balancing"
},
{
"efficacy_specification": [
{
"description": "The total number of enabled compute nodes.",
"schema": "Range(min=0, max=None, min_included=True, max_included=True, msg=None)",
"name": "compute_nodes_count",
"unit": null
},
{
"description": "The number of compute nodes to be released.",
"schema": "Range(min=0, max=None, min_included=True, max_included=True, msg=None)",
"name": "released_compute_nodes_count",
"unit": null
},
{
"description": "The number of VM migrations to be performed.",
"schema": "Range(min=0, max=None, min_included=True, max_included=True, msg=None)",
"name": "instance_migrations_count",
"unit": null
}
],
"uuid": "cb9afa5e-aec7-4a8c-9261-c15c33f2262b",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/goals/cb9afa5e-aec7-4a8c-9261-c15c33f2262b"
},
{
"rel": "bookmark",
"href": "http://controller:9322/goals/cb9afa5e-aec7-4a8c-9261-c15c33f2262b"
}
],
"name": "server_consolidation",
"display_name": "Server Consolidation"
}
]
}

View File

@@ -0,0 +1,19 @@
{
"efficacy_specification": [],
"name": "saving_energy",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/goals/6f52889a-9dd4-4dbb-8e70-39b56c4836cc"
},
{
"rel": "bookmark",
"href": "http://controller:9322/goals/6f52889a-9dd4-4dbb-8e70-39b56c4836cc"
}
],
"uuid": "6f52889a-9dd4-4dbb-8e70-39b56c4836cc",
"updated_at": null,
"display_name": "Saving Energy",
"created_at": "2018-03-26T11:55:24.365584+00:00",
"deleted_at": null
}

View File

@@ -0,0 +1,20 @@
{
"scoring_engines": [
{
"description": "Dummy Scorer calculating the average value",
"uuid": "5a44f007-55b1-423c-809f-6a274a9bd93b",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/scoring_engines/5a44f007-55b1-423c-809f-6a274a9bd93b"
},
{
"rel": "bookmark",
"href": "http://controller:9322/scoring_engines/5a44f007-55b1-423c-809f-6a274a9bd93b"
}
],
"name": "dummy_avg_scorer",
"metainfo": ""
}
]
}

View File

@@ -0,0 +1,19 @@
{
"scoring_engines": [
{
"description": "Dummy Scorer calculating the average value",
"uuid": "5a44f007-55b1-423c-809f-6a274a9bd93b",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/scoring_engines/5a44f007-55b1-423c-809f-6a274a9bd93b"
},
{
"rel": "bookmark",
"href": "http://controller:9322/scoring_engines/5a44f007-55b1-423c-809f-6a274a9bd93b"
}
],
"name": "dummy_avg_scorer"
}
]
}

View File

@@ -0,0 +1,16 @@
{
"description": "Dummy Scorer calculating the maximum value",
"uuid": "1ac42282-4e77-473e-898b-62ea007f1deb",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/scoring_engines/1ac42282-4e77-473e-898b-62ea007f1deb"
},
{
"rel": "bookmark",
"href": "http://controller:9322/scoring_engines/1ac42282-4e77-473e-898b-62ea007f1deb"
}
],
"name": "dummy_max_scorer",
"metainfo": ""
}

View File

@@ -0,0 +1,24 @@
{
"services": [
{
"status": "ACTIVE",
"name": "watcher-applier",
"host": "controller",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/services/1"
},
{
"rel": "bookmark",
"href": "http://controller:9322/services/1"
}
],
"id": 1,
"deleted_at": null,
"updated_at": "2018-04-26T08:52:37.652895+00:00",
"last_seen_up": "2018-04-26T08:52:37.648572",
"created_at": "2018-03-26T11:55:24.075093+00:00"
}
]
}

View File

@@ -0,0 +1,36 @@
{
"services": [
{
"id": 1,
"status": "ACTIVE",
"name": "watcher-applier",
"host": "controller",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/services/1"
},
{
"rel": "bookmark",
"href": "http://controller:9322/services/1"
}
]
},
{
"id": 2,
"status": "ACTIVE",
"name": "watcher-decision-engine",
"host": "controller",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/services/2"
},
{
"rel": "bookmark",
"href": "http://controller:9322/services/2"
}
]
}
]
}

View File

@@ -0,0 +1,20 @@
{
"status": "ACTIVE",
"name": "watcher-applier",
"host": "controller",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/services/1"
},
{
"rel": "bookmark",
"href": "http://controller:9322/services/1"
}
],
"id": 1,
"deleted_at": null,
"updated_at": "2018-04-26T09:45:37.653061+00:00",
"last_seen_up": "2018-04-26T09:45:37.649314",
"created_at": "2018-03-26T11:55:24.075093+00:00"
}

View File

@@ -0,0 +1,35 @@
{
"strategies": [
{
"goal_uuid": "cb9afa5e-aec7-4a8c-9261-c15c33f2262b",
"name": "vm_workload_consolidation",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/strategies/6382b2d7-259e-487d-88db-78c852ffea54"
},
{
"rel": "bookmark",
"href": "http://controller:9322/strategies/6382b2d7-259e-487d-88db-78c852ffea54"
}
],
"parameters_spec": {
"properties": {
"granularity": {
"default": 300,
"type": "number",
"description": "The time between two measures in an aggregated timeseries of a metric."
},
"period": {
"default": 3600,
"type": "number",
"description": "The time interval in seconds for getting statistic aggregation"
}
}
},
"uuid": "6382b2d7-259e-487d-88db-78c852ffea54",
"goal_name": "server_consolidation",
"display_name": "VM Workload Consolidation Strategy"
}
]
}

View File

@@ -0,0 +1,21 @@
{
"strategies": [
{
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "dummy",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/strategies/e311727b-b9b3-43ef-a5f7-8bd7ea80df25"
},
{
"rel": "bookmark",
"href": "http://controller:9322/strategies/e311727b-b9b3-43ef-a5f7-8bd7ea80df25"
}
],
"uuid": "e311727b-b9b3-43ef-a5f7-8bd7ea80df25",
"goal_name": "dummy",
"display_name": "Dummy strategy"
}
]
}

View File

@@ -0,0 +1,33 @@
{
"goal_uuid": "4690f8ba-18ff-45c1-99e9-159556d23810",
"name": "dummy",
"links": [
{
"rel": "self",
"href": "http://controller:9322/v1/strategies/e311727b-b9b3-43ef-a5f7-8bd7ea80df25"
},
{
"rel": "bookmark",
"href": "http://controller:9322/strategies/e311727b-b9b3-43ef-a5f7-8bd7ea80df25"
}
],
"parameters_spec": {
"properties": {
"para2": {
"default": "hello",
"type": "string",
"description": "string parameter example"
},
"para1": {
"maximum": 10.2,
"type": "number",
"minimum": 1.0,
"description": "number parameter example",
"default": 3.2
}
}
},
"uuid": "e311727b-b9b3-43ef-a5f7-8bd7ea80df25",
"goal_name": "dummy",
"display_name": "Dummy strategy"
}

View File

@@ -0,0 +1,49 @@
[
{
"state": "gnocchi: available",
"comment": "",
"mandatory": true,
"type": "Datasource"
},
{
"state": [
{
"compute.node.cpu.percent": "available"
},
{
"cpu_util": "available"
},
{
"memory.resident": "available"
},
{
"hardware.memory.used": "available"
}
],
"comment": "",
"mandatory": false,
"type": "Metrics"
},
{
"state": [
{
"compute_model": "available"
},
{
"storage_model": "not available"
},
{
"baremetal_model": "not available"
}
],
"comment": "",
"mandatory": true,
"type": "CDM"
},
{
"state": "workload_stabilization",
"mandatory": "",
"comment": "",
"type": "Name"
}
]

View File

@@ -0,0 +1,258 @@
.. -*- rst -*-
============
Action Plans
============
An ``Action Plan`` specifies a flow of ``Actions`` that should be executed
in order to satisfy a given ``Goal``. It also contains an estimated
``global efficacy`` alongside a set of ``efficacy indicators``.
An ``Action Plan`` is generated by Watcher when an ``Audit`` is successful
which implies that the ``Strategy`` which was used has found a ``Solution``
to achieve the ``Goal`` of this ``Audit``.
In the default implementation of Watcher, an action plan is composed of
a graph of linked ``Actions``. Each action may have parent actions, which
should be executed prior to child action.
Start Action Plan
=================
.. rest_method:: POST /v1/action_plans/{actionplan_ident}/start
Starts a created Action Plan resource.
Normal response codes: 200
Error codes: 400,404
Request
-------
.. rest_parameters:: parameters.yaml
- actionplan_ident: actionplan_ident
Response
--------
The list and example below are representative of the response as of API
version 1:
.. rest_parameters:: parameters.yaml
- uuid: uuid
- state: actionplan_state
- audit_uuid: actionplan_audit_uuid
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- efficacy_indicators: actionplan_efficacy_indicators
- global_efficacy: actionplan_global_efficacy
- links: links
- hostname: actionplan_hostname
**Example JSON representation of an Action Plan:**
.. literalinclude:: samples/actionplan-start-response.json
:language: javascript
List Action Plan
================
.. rest_method:: GET /v1/action_plans
Returns a list of Action Plan resources.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- audit_uuid: r_audit
- strategy: r_strategy
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- state: actionplan_state
- audit_uuid: actionplan_audit_uuid
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- efficacy_indicators: actionplan_efficacy_indicators
- global_efficacy: actionplan_global_efficacy
- links: links
**Example JSON representation of an Action Plan:**
.. literalinclude:: samples/actionplan-list-response.json
:language: javascript
List Action Plan detailed
=========================
.. rest_method:: GET /v1/action_plans/detail
Returns a list of Action Plan resources with complete details.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- audit_uuid: r_audit
- strategy: r_strategy
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- deleted_at: deleted_at
- updated_at: updated_at
- created_at: created_at
- uuid: uuid
- state: actionplan_state
- audit_uuid: actionplan_audit_uuid
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- efficacy_indicators: actionplan_efficacy_indicators
- global_efficacy: actionplan_global_efficacy
- links: links
- hostname: actionplan_hostname
**Example JSON representation of an Action Plan:**
.. literalinclude:: samples/actionplan-list-detailed-response.json
:language: javascript
Show Action Plan
================
.. rest_method:: GET /v1/action_plans/{actionplan_ident}
Shows details for an Action Plan.
Normal response codes: 200
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- actionplan_ident: actionplan_ident
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- state: actionplan_state
- audit_uuid: actionplan_audit_uuid
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- efficacy_indicators: actionplan_efficacy_indicators
- global_efficacy: actionplan_global_efficacy
- links: links
- hostname: actionplan_hostname
**Example JSON representation of an Audit:**
.. literalinclude:: samples/actionplan-show-response.json
:language: javascript
Cancel Action Plan
==================
.. rest_method:: PATCH /v1/action_plans/{actionplan_ident}
Cancels a created Action Plan resource.
.. note:
If Action Plan is in ONGOING state, then ``state`` attribute should be
replaced with ``CANCELLING`` value. Otherwise, ``CANCELLED`` is to be
used.
Normal response codes: 200
Error codes: 400,404
Request
-------
.. rest_parameters:: parameters.yaml
- actionplan_ident: actionplan_ident
**Example Action Plan ONGOING cancelling request:**
.. literalinclude:: samples/actionplan-cancel-request-cancelling.json
:language: javascript
**Example Action Plan PENDING cancelling request:**
.. literalinclude:: samples/actionplan-cancel-request-pending.json
:language: javascript
Response
--------
The list and example below are representative of the response as of API
version 1:
.. rest_parameters:: parameters.yaml
- uuid: uuid
- state: actionplan_state
- audit_uuid: actionplan_audit_uuid
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- efficacy_indicators: actionplan_efficacy_indicators
- global_efficacy: actionplan_global_efficacy
- links: links
- hostname: actionplan_hostname
**Example JSON representation of an Action Plan:**
.. literalinclude:: samples/actionplan-start-response.json
:language: javascript
Delete Action Plan
==================
.. rest_method:: DELETE /v1/action_plans/{actionplan_ident}
Deletes an Action Plan. Action Plan can be deleted only from SUCCEEDED, RECOMMENDED, FAILED, SUPERSEDED, CANCELLED states.
Normal response codes: 204
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- actionplan_ident: actionplan_ident

View File

@@ -0,0 +1,155 @@
.. -*- rst -*-
=======
Actions
=======
An ``Action`` is what enables Watcher to transform the current state of a
``Cluster`` after an ``Audit``.
An ``Action`` is an atomic task which changes the current state of a target
Managed resource of the OpenStack ``Cluster`` such as:
- Live migration of an instance from one compute node to another compute
node with Nova
- Changing the power level of a compute node (ACPI level, ...)
- Changing the current state of a compute node (enable or disable) with Nova
In most cases, an ``Action`` triggers some concrete commands on an existing
OpenStack module (Nova, Neutron, Cinder, Ironic, etc.).
An ``Action`` has a life-cycle and its current state may be one of the
following:
- **PENDING** : the ``Action`` has not been executed yet by the
``Watcher Applier``.
- **ONGOING** : the ``Action`` is currently being processed by the
``Watcher Applier``.
- **SUCCEEDED** : the ``Action`` has been executed successfully
- **FAILED** : an error occurred while trying to execute the ``Action``.
- **DELETED** : the ``Action`` is still stored in the ``Watcher database``
but is not returned any more through the Watcher APIs.
- **CANCELLED** : the ``Action`` was in **PENDING** or **ONGOING** state and
was cancelled by the ``Administrator``
``Actions`` are created by ``Watcher Planner`` as result of Audit's execution.
``Action`` can't be created, modified or deleted by user.
List Action
===========
.. rest_method:: GET /v1/actions
Returns a list of Action resources.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- action_plan_uuid: r_action_plan
- audit_uuid: r_audit
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- action_type: action_type
- state: action_state
- action_plan_uuid: action_action_plan_uuid
- parents: action_parents
- links: links
**Example JSON representation of an Action:**
.. literalinclude:: samples/actions-list-response.json
:language: javascript
List Action Detailed
====================
.. rest_method:: GET /v1/actions/detail
Returns a list of Action resources with complete details.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- action_plan_uuid: r_action_plan
- audit_uuid: r_audit
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- action_type: action_type
- state: action_state
- action_plan_uuid: action_action_plan_uuid
- parents: action_parents
- description: action_description
- input_parameters: action_input_parameters
- links: links
**Example JSON representation of an Action:**
.. literalinclude:: samples/actions-list-detailed-response.json
:language: javascript
Show Action
===========
.. rest_method:: GET /v1/actions/{action_ident}
Shows details for an Action.
Normal response codes: 200
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- action_ident: action_ident
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- action_type: action_type
- state: action_state
- action_plan_uuid: action_action_plan_uuid
- parents: action_parents
- description: action_description
- input_parameters: action_input_parameters
- links: links
**Example JSON representation of an Action:**
.. literalinclude:: samples/actions-show-response.json
:language: javascript

View File

@@ -0,0 +1,361 @@
.. -*- rst -*-
======
Audits
======
There are creating, listing, updating and deleting methods of Watcher Audit
resources which are implemented via the ``/v1/audits`` resource.
In the Watcher system, an ``Audit`` is a request for optimizing a ``Cluster``.
The optimization is done in order to satisfy one ``Goal`` on a given
``Cluster``.
For each ``Audit``, the Watcher system generates an ``Action Plan``.
Create Audit
============
.. rest_method:: POST /v1/audits
Creates a new Audit resource.
Mandatory attribute to be supplied: ``audit_type``.
``Audit`` can be created either based on existed ``Audit Template`` or by
itself. In the first case, there also should be supplied
``audit_template_uuid``. If ``Audit`` is created without ``Audit Template``,
``goal`` should be provided.
Normal response codes: 201
Error codes: 400,404
Request
-------
.. rest_parameters:: parameters.yaml
- audit_template_uuid: audittemplate_uuid
- audit_type: audit_type
- name: audit_name
- goal: audit_goal
- strategy: audit_strategy
- parameters: audit_parameters
- interval: audit_interval
- auto_trigger: audit_autotrigger
- start_time: audit_starttime_req
- end_time: audit_endtime_req
**Example ONESHOT Audit creation request:**
.. literalinclude:: samples/audit-create-request-oneshot.json
:language: javascript
**Example CONTINUOUS Audit creation request with a specified strategy:**
.. literalinclude:: samples/audit-create-request-continuous.json
:language: javascript
Response
--------
The list and example below are representative of the response as of API
version 1:
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audit_name
- audit_type: audit_type
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- interval: audit_interval
- next_run_time: audit_next_run_time
- parameters: audit_parameters
- auto_trigger: audit_autotrigger
- state: audit_state
- scope: audittemplate_scope
- links: links
- hostname: audit_hostname
- start_time: audit_starttime_resp
- end_time: audit_endtime_resp
**Example JSON representation of an Audit:**
.. literalinclude:: samples/audit-create-response.json
:language: javascript
List Audit
==========
.. rest_method:: GET /v1/audits
Returns a list of Audit resources.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- goal: r_goal
- strategy: r_strategy
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audit_name
- audit_type: audit_type
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- interval: audit_interval
- next_run_time: audit_next_run_time
- auto_trigger: audit_autotrigger
- state: audit_state
- scope: audittemplate_scope
- links: links
**Example JSON representation of an Audit:**
.. literalinclude:: samples/audit-list-response.json
:language: javascript
List Audit Detailed
===================
.. rest_method:: GET /v1/audits/detail
Returns a list of Audit resources with complete details.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- goal: r_goal
- strategy: r_strategy
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audit_name
- audit_type: audit_type
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- interval: audit_interval
- next_run_time: audit_next_run_time
- parameters: audit_parameters
- auto_trigger: audit_autotrigger
- state: audit_state
- scope: audittemplate_scope
- links: links
- hostname: audit_hostname
- start_time: audit_starttime_resp
- end_time: audit_endtime_resp
**Example JSON representation of an Audit:**
.. literalinclude:: samples/audit-list-detailed-response.json
:language: javascript
Show Audit
==========
.. rest_method:: GET /v1/audits/{audit_ident}
Shows details for an Audit.
Normal response codes: 200
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- audit_ident: audit_ident
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audit_name
- audit_type: audit_type
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- interval: audit_interval
- next_run_time: audit_next_run_time
- parameters: audit_parameters
- auto_trigger: audit_autotrigger
- state: audit_state
- scope: audittemplate_scope
- links: links
- hostname: audit_hostname
- start_time: audit_starttime_resp
- end_time: audit_endtime_resp
**Example JSON representation of an Audit:**
.. literalinclude:: samples/audit-show-response.json
:language: javascript
Cancel Audit
============
.. rest_method:: PATCH /v1/audits/{audit_ident}
Cancels an ONGOING Audit resource.
Normal response codes: 200
Error codes: 400,404
Request
-------
.. rest_parameters:: parameters.yaml
- audit_ident: audit_ident
**Example Audit cancelling request:**
.. literalinclude:: samples/audit-cancel-request.json
:language: javascript
Response
--------
The list and example below are representative of the response as of API
version 1:
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audit_name
- audit_type: audit_type
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- interval: audit_interval
- next_run_time: audit_next_run_time
- parameters: audit_parameters
- auto_trigger: audit_autotrigger
- state: audit_state
- scope: audittemplate_scope
- links: links
- hostname: audit_hostname
- start_time: audit_starttime_resp
- end_time: audit_endtime_resp
**Example JSON representation of an Audit:**
.. literalinclude:: samples/audit-cancel-response.json
:language: javascript
Update Audit
============
.. rest_method:: PATCH /v1/audits/{audit_ident}
Updates an Audit with the given information.
.. note:
``audit_type`` shouldn't be changed by PATCH method.
Normal response codes: 200
Error codes: 400,404
Request
-------
.. rest_parameters:: parameters.yaml
- audit_ident: audit_ident
**Example PATCH document updating Audit:**
.. literalinclude:: samples/audit-update-request.json
:language: javascript
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audit_name
- audit_type: audit_type
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- interval: audit_interval
- next_run_time: audit_next_run_time
- parameters: audit_parameters
- auto_trigger: audit_autotrigger
- state: audit_state
- scope: audittemplate_scope
- links: links
- hostname: audit_hostname
- start_time: audit_starttime_resp
- end_time: audit_endtime_resp
**Example JSON representation of an Audit:**
.. literalinclude:: samples/audit-update-response.json
:language: javascript
Delete Audit
============
.. rest_method:: DELETE /v1/audits/{audit_ident}
Deletes an Audit. Audit can be deleted only from FAILED, SUCCEEDED, CANCELLED,
SUSPENDED states.
Normal response codes: 204
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- audit_ident: audit_ident

View File

@@ -0,0 +1,257 @@
.. -*- rst -*-
===============
Audit Templates
===============
There are creating, listing, updating and deleting methods of Watcher Audit
Template resources which are implemented via the ``/v1/audit_templates``
resource.
An Audit may be launched several times with the same settings
(Goal, thresholds, ...). Therefore it makes sense to save those settings in
some sort of Audit preset object, which is known as an Audit Template.
An Audit Template contains at least the Goal of the Audit.
Create Audit Template
=====================
.. rest_method:: POST /v1/audit_templates
Creates a new Audit Template resource.
It requires ``name`` and ``goal`` attributes to be supplied in the request
body.
Normal response codes: 201
Error codes: 400,404,409
Request
-------
.. rest_parameters:: parameters.yaml
- name: audittemplate_name
- goal: audittemplate_goal
- strategy: audittemplate_strategy
- description: audittemplate_description
- scope: audittemplate_scope
**Example Audit Template creation request without a specified strategy:**
.. literalinclude:: samples/audittemplate-create-request-minimal.json
:language: javascript
**Example Audit Template creation request with a specified strategy:**
.. literalinclude:: samples/audittemplate-create-request-full.json
:language: javascript
Response
--------
The list and example below are representative of the response as of API
version 1:
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audittemplate_name
- description: audittemplate_description
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- scope: audittemplate_scope
- links: links
**Example JSON representation of an Audit Template:**
.. literalinclude:: samples/audittemplate-create-response.json
:language: javascript
List Audit Template
===================
.. rest_method:: GET /v1/audit_templates
Returns a list of Audit Template resources.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- goal: r_goal
- strategy: r_strategy
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audittemplate_name
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- scope: audittemplate_scope
- links: links
**Example JSON representation of an Audit Template:**
.. literalinclude:: samples/audittemplate-list-response.json
:language: javascript
List Audit Template Detailed
============================
.. rest_method:: GET /v1/audit_templates/detail
Returns a list of Audit Template resources with complete details.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- goal: r_goal
- strategy: r_strategy
- limit: limit
- marker: marker
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audittemplate_name
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- scope: audittemplate_scope
- links: links
- description: audittemplate_description
**Example JSON representation of an Audit Template:**
.. literalinclude:: samples/audittemplate-list-detailed-response.json
:language: javascript
Show Audit Template
===================
.. rest_method:: GET /v1/audit_templates/{audittemplate_ident}
Shows details for an Audit Template.
Normal response codes: 200
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- audittemplate_ident: audittemplate_ident
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audittemplate_name
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- scope: audittemplate_scope
- links: links
- description: audittemplate_description
**Example JSON representation of an Audit Template:**
.. literalinclude:: samples/audittemplate-show-response.json
:language: javascript
Update Audit Template
=====================
.. rest_method:: PATCH /v1/audit_templates/{audittemplate_ident}
Updates an Audit Template with the given information.
Normal response codes: 200
Error codes: 400,404
Request
-------
.. rest_parameters:: parameters.yaml
- audittemplate_ident: audittemplate_ident
**Example PATCH document updating Audit Template:**
.. literalinclude:: samples/audittemplate-update-request.json
:language: javascript
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: audittemplate_name
- strategy_uuid: strategy_uuid
- strategy_name: strategy_name
- goal_uuid: goal_uuid
- goal_name: goal_name
- scope: audittemplate_scope
- links: links
- description: audittemplate_description
**Example JSON representation of an Audit Template:**
.. literalinclude:: samples/audittemplate-update-response.json
:language: javascript
Delete Audit Template
=====================
.. rest_method:: DELETE /v1/audit_templates/{audittemplate_ident}
Deletes an Audit Template.
Normal response codes: 204
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- audittemplate_ident: audittemplate_ident

View File

@@ -0,0 +1,126 @@
.. -*- rst -*-
=====
Goals
=====
A ``Goal`` is a human readable, observable and measurable end result having
one objective to be achieved.
Here are some examples of ``Goals``:
- minimize the energy consumption
- minimize the number of compute nodes (consolidation)
- balance the workload among compute nodes
- minimize the license cost (some softwares have a licensing model which is
based on the number of sockets or cores where the software is deployed)
- find the most appropriate moment for a planned maintenance on a
given group of host (which may be an entire availability zone):
power supply replacement, cooling system replacement, hardware
modification, ...
List Goal
=========
.. rest_method:: GET /v1/goals
Returns a list of Goal resources.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- limit: limit
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- efficacy_specification: goal_efficacy_specification
- name: goal_name
- display_name: goal_display_name
- links: links
**Example JSON representation of a Goal:**
.. literalinclude:: samples/goal-list-response.json
:language: javascript
List Goal Detailed
==================
.. rest_method:: GET /v1/goals/detail
Returns a list of Goal resources with complete details.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- limit: limit
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- efficacy_specification: goal_efficacy_specification
- name: goal_name
- display_name: goal_display_name
- links: links
**Example JSON representation of a Goal:**
.. literalinclude:: samples/goal-list-response.json
:language: javascript
Show Goal
=========
.. rest_method:: GET /v1/goals/{goal_ident}
Shows details for an Goal.
Normal response codes: 200
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- goal_ident: goal_ident
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- efficacy_specification: goal_efficacy_specification
- name: goal_name
- display_name: goal_display_name
- links: links
**Example JSON representation of a Goal:**
.. literalinclude:: samples/goal-show-response.json
:language: javascript

View File

@@ -0,0 +1,120 @@
.. -*- rst -*-
===============
Scoring Engines
===============
A ``Scoring Engine`` is an executable that has a well-defined input, a
well-defined output, and performs a purely mathematical task. That is,
the calculation does not depend on the environment in which it is running - it
would produce the same result anywhere.
Because there might be multiple algorithms used to build a particular data
model (and therefore a scoring engine), the usage of scoring engine might
vary. A metainfo field is supposed to contain any information which might
be needed by the user of a given scoring engine.
List Scoring Engine
===================
.. rest_method:: GET /v1/scoring_engines
Returns a list of Scoring Engine resources.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- limit: limit
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: scoring_engine_name
- description: scoring_engine_description
- links: links
**Example JSON representation of a Scoring Engine:**
.. literalinclude:: samples/scoring_engine-list-response.json
:language: javascript
List Scoring Engine Detailed
============================
.. rest_method:: GET /v1/scoring_engines/detail
Returns a list of Scoring Engine resources with complete details.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- limit: limit
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: scoring_engine_name
- description: scoring_engine_description
- metainfo: scoring_engine_metainfo
- links: links
**Example JSON representation of a Scoring Engine:**
.. literalinclude:: samples/scoring_engine-list-detailed-response.json
:language: javascript
Show Scoring Engine
===================
.. rest_method:: GET /v1/scoring_engines/{scoring_engine_ident}
Shows details for a Scoring Engine resource.
Normal response codes: 200
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- scoring_engine_ident: scoring_engine_ident
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: scoring_engine_name
- description: scoring_engine_description
- metainfo: scoring_engine_metainfo
- links: links
**Example JSON representation of a Scoring Engine:**
.. literalinclude:: samples/scoring_engine-show-response.json
:language: javascript

View File

@@ -0,0 +1,116 @@
.. -*- rst -*-
========
Services
========
This resource represents Watcher services, their states and hosts they are
placed on.
List Service
============
.. rest_method:: GET /v1/services
Returns a list of Service resources.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- limit: limit
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- id: service_id
- name: service_name
- host: service_host
- status: service_status
- links: links
**Example JSON representation of a Service:**
.. literalinclude:: samples/service-list-response.json
:language: javascript
List Service Detailed
=====================
.. rest_method:: GET /v1/services/detail
Returns a list of Service resources with complete details.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- limit: limit
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- id: service_id
- name: service_name
- host: service_host
- status: service_status
- last_seen_up: service_last_seen_up
- links: links
**Example JSON representation of a Service:**
.. literalinclude:: samples/service-list-detailed-response.json
:language: javascript
Show Service
============
.. rest_method:: GET /v1/services/{service_ident}
Shows details for a Service resource.
Normal response codes: 200
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- service_ident: service_ident
Response
--------
.. rest_parameters:: parameters.yaml
- id: service_id
- name: service_name
- host: service_host
- status: service_status
- last_seen_up: service_last_seen_up
- links: links
**Example JSON representation of a Service:**
.. literalinclude:: samples/service-show-response.json
:language: javascript

View File

@@ -0,0 +1,164 @@
.. -*- rst -*-
==========
Strategies
==========
A ``Strategy`` is an algorithm implementation which is able to find a
``Solution`` for a given ``Goal``. To get more information about strategies
that are shipped along with Watcher, visit `strategies page`_.
There may be several potential strategies which are able to achieve the same
``Goal``. This is why it is possible to configure which specific ``Strategy``
should be used for each goal.
Some strategies may provide better optimization results but may take more time
to find an optimal ``Solution``.
.. _`strategies page`: https://docs.openstack.org/watcher/latest/strategies/index.html
List Strategy
=============
.. rest_method:: GET /v1/strategies
Returns a list of Strategy resources.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- goal: r_goal
- limit: limit
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: strategy_name
- display_name: strategy_display_name
- goal_name: goal_name
- goal_uuid: goal_uuid
- links: links
**Example JSON representation of a Strategy:**
.. literalinclude:: samples/strategy-list-response.json
:language: javascript
List Strategy Detailed
======================
.. rest_method:: GET /v1/strategies/detail
Returns a list of Strategy resources with complete details.
Normal response codes: 200
Error codes: 400,401
Request
-------
.. rest_parameters:: parameters.yaml
- goal: r_goal
- limit: limit
- sort_dir: sort_dir
- sort_key: sort_key
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: strategy_name
- display_name: strategy_display_name
- parameters_spec: strategy_parameters_spec
- goal_name: goal_name
- goal_uuid: goal_uuid
- links: links
**Example JSON representation of a Strategy:**
.. literalinclude:: samples/strategy-list-detailed-response.json
:language: javascript
Show Strategy
=============
.. rest_method:: GET /v1/strategies/{strategy_ident}
Shows details for a Strategy resource.
Normal response codes: 200
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- strategy_ident: strategy_ident
Response
--------
.. rest_parameters:: parameters.yaml
- uuid: uuid
- name: strategy_name
- display_name: strategy_display_name
- parameters_spec: strategy_parameters_spec
- goal_name: goal_name
- goal_uuid: goal_uuid
- links: links
**Example JSON representation of a Strategy:**
.. literalinclude:: samples/strategy-show-response.json
:language: javascript
Show Strategy State
===================
.. rest_method:: GET /v1/strategies/{strategy_ident}/state
Retrieve an information about strategy requirements.
Normal response codes: 200
Error codes: 404
Request
-------
.. rest_parameters:: parameters.yaml
- strategy_ident: strategy_ident
Response
--------
.. rest_parameters:: parameters.yaml
- state: strategy_check_state
- comment: strategy_check_comment
- mandatory: strategy_check_mandatory
- type: strategy_check_type
**Example JSON representation of a Strategy:**
.. literalinclude:: samples/strategy-state-response.json
:language: javascript

View File

@@ -0,0 +1,81 @@
.. -*- rst -*-
============
API versions
============
In order to bring new features to users over time, the Watcher API
supports versioning. There are two kinds of versions in Watcher.
- ''major versions'', which have dedicated URLs.
- ''microversions'', which can be requested using the
``OpenStack-API-Version`` header.
.. note:: The maximum microversion depends on release.
Please reference:
`API Microversion History
<https://docs.openstack.org/watcher/latest/contributor/api_microversion_history.html>`__
for API microversion history details.
The Version API resource works differently from other API resources as they *do not*
require authentication.
If Watcher receives a request with unsupported version, it responds with a 406 Not Acceptable,
along with the -Min- and -Max- headers that it can support.
List API versions
=================
.. rest_method:: GET /
This fetches all the information about all known major API versions in the
deployment. Links to more specific information will be provided for each major
API version, as well as information about supported min and max microversions.
Normal response codes: 200
Request
-------
Response Example
----------------
.. rest_parameters:: parameters.yaml
- description: version_description
- versions: versions
- version: version
- id: version_id
- links: links
- min_version: openstack-api-min-version
- max_version: openstack-api-max-version
.. literalinclude:: samples/api-root-response.json
:language: javascript
Show v1 API
===========
.. rest_method:: GET /v1/
Show all the resources within the Watcher v1 API.
Normal response codes: 200
Request
-------
Response Example
----------------
.. rest_parameters:: parameters.yaml
- id: version_id
- links: links
- OpenStack-API-Version: header_version
- OpenStack-API-Minimum-Version: openstack-api-min-version
- OpenStack-API-Maximum-Version: openstack-api-max-version
.. literalinclude:: samples/api-v1-root-response.json
:language: javascript

View File

@@ -47,9 +47,6 @@ WATCHER_POLICY_YAML=$WATCHER_CONF_DIR/policy.yaml.sample
WATCHER_DEVSTACK_DIR=$WATCHER_DIR/devstack
WATCHER_DEVSTACK_FILES_DIR=$WATCHER_DEVSTACK_DIR/files
NOVA_CONF_DIR=/etc/nova
NOVA_CONF=$NOVA_CONF_DIR/nova.conf
if is_ssl_enabled_service "watcher" || is_service_enabled tls-proxy; then
WATCHER_SERVICE_PROTOCOL="https"
fi
@@ -151,12 +148,17 @@ function create_watcher_accounts {
function _config_watcher_apache_wsgi {
local watcher_apache_conf
if [[ "$WATCHER_USE_MOD_WSGI" == "True" ]]; then
local service_port=$WATCHER_SERVICE_PORT
if is_service_enabled tls-proxy; then
service_port=$WATCHER_SERVICE_PORT_INT
service_protocol="http"
fi
sudo mkdir -p $WATCHER_WSGI_DIR
sudo cp $WATCHER_DIR/watcher/api/app.wsgi $WATCHER_WSGI_DIR/app.wsgi
watcher_apache_conf=$(apache_site_config_for watcher-api)
sudo cp $WATCHER_DEVSTACK_FILES_DIR/apache-watcher-api.template $watcher_apache_conf
sudo sed -e "
s|%WATCHER_SERVICE_PORT%|$WATCHER_SERVICE_PORT|g;
s|%WATCHER_SERVICE_PORT%|$service_port|g;
s|%WATCHER_WSGI_DIR%|$WATCHER_WSGI_DIR|g;
s|%USER%|$STACK_USER|g;
s|%APIWORKERS%|$API_WORKERS|g;
@@ -177,21 +179,22 @@ function create_watcher_conf {
iniset $WATCHER_CONF DEFAULT debug "$ENABLE_DEBUG_LOG_LEVEL"
iniset $WATCHER_CONF DEFAULT control_exchange watcher
iniset_rpc_backend watcher $WATCHER_CONF
iniset $WATCHER_CONF database connection $(database_connection_url watcher)
iniset $WATCHER_CONF api host "$WATCHER_SERVICE_HOST"
iniset $WATCHER_CONF api port "$WATCHER_SERVICE_PORT"
if is_service_enabled tls-proxy; then
iniset $WATCHER_CONF api port "$WATCHER_SERVICE_PORT_INT"
# iniset $WATCHER_CONF api enable_ssl_api "True"
else
iniset $WATCHER_CONF api port "$WATCHER_SERVICE_PORT"
fi
iniset $WATCHER_CONF oslo_policy policy_file $WATCHER_POLICY_YAML
iniset $WATCHER_CONF oslo_messaging_rabbit rabbit_userid $RABBIT_USERID
iniset $WATCHER_CONF oslo_messaging_rabbit rabbit_password $RABBIT_PASSWORD
iniset $WATCHER_CONF oslo_messaging_rabbit rabbit_host $RABBIT_HOST
iniset $WATCHER_CONF oslo_messaging_notifications driver "messagingv2"
iniset $NOVA_CONF oslo_messaging_notifications topics "notifications,watcher_notifications"
iniset $NOVA_CONF notifications notify_on_state_change "vm_and_task_state"
configure_auth_token_middleware $WATCHER_CONF watcher $WATCHER_AUTH_CACHE_DIR
configure_auth_token_middleware $WATCHER_CONF watcher $WATCHER_AUTH_CACHE_DIR "watcher_clients_auth"
@@ -286,20 +289,22 @@ function start_watcher_api {
service_protocol="http"
fi
if [[ "$WATCHER_USE_MOD_WSGI" == "True" ]]; then
enable_apache_site watcher-api
restart_apache_server
else
run_process watcher-api "$WATCHER_BIN_DIR/watcher-api --config-file $WATCHER_CONF"
fi
# Start proxies if enabled
if is_service_enabled tls-proxy; then
start_tls_proxy watcher '*' $WATCHER_SERVICE_PORT $WATCHER_SERVICE_HOST $WATCHER_SERVICE_PORT_INT
fi
echo "Waiting for watcher-api to start..."
if ! wait_for_service $SERVICE_TIMEOUT $service_protocol://$WATCHER_SERVICE_HOST:$service_port; then
die $LINENO "watcher-api did not start"
fi
# Start proxies if enabled
if is_service_enabled tls-proxy; then
start_tls_proxy '*' $WATCHER_SERVICE_PORT $WATCHER_SERVICE_HOST $WATCHER_SERVICE_PORT_INT &
start_tls_proxy '*' $EC2_SERVICE_PORT $WATCHER_SERVICE_HOST $WATCHER_SERVICE_PORT_INT &
fi
}
# start_watcher() - Start running processes, including screen
@@ -314,6 +319,7 @@ function start_watcher {
function stop_watcher {
if [[ "$WATCHER_USE_MOD_WSGI" == "True" ]]; then
disable_apache_site watcher-api
restart_apache_server
else
stop_process watcher-api
fi

View File

@@ -35,7 +35,7 @@ VNCSERVER_PROXYCLIENT_ADDRESS=$HOST_IP
NOVA_INSTANCES_PATH=/opt/stack/data/instances
# Enable the Ceilometer plugin for the compute agent
enable_plugin ceilometer git://git.openstack.org/openstack/ceilometer
enable_plugin ceilometer https://git.openstack.org/openstack/ceilometer
disable_service ceilometer-acentral,ceilometer-collector,ceilometer-api
LOGFILE=$DEST/logs/stack.sh.log
@@ -44,6 +44,3 @@ LOGDAYS=2
[[post-config|$NOVA_CONF]]
[DEFAULT]
compute_monitors=cpu.virt_driver
notify_on_state_change = vm_and_task_state
[notifications]
notify_on_state_change = vm_and_task_state

View File

@@ -25,13 +25,13 @@ MULTI_HOST=1
disable_service n-cpu
# Enable the Watcher Dashboard plugin
enable_plugin watcher-dashboard git://git.openstack.org/openstack/watcher-dashboard
enable_plugin watcher-dashboard https://git.openstack.org/openstack/watcher-dashboard
# Enable the Watcher plugin
enable_plugin watcher git://git.openstack.org/openstack/watcher
enable_plugin watcher https://git.openstack.org/openstack/watcher
# Enable the Ceilometer plugin
enable_plugin ceilometer git://git.openstack.org/openstack/ceilometer
enable_plugin ceilometer https://git.openstack.org/openstack/ceilometer
# This is the controller node, so disable the ceilometer compute agent
disable_service ceilometer-acompute
@@ -48,6 +48,3 @@ LOGDAYS=2
[[post-config|$NOVA_CONF]]
[DEFAULT]
compute_monitors=cpu.virt_driver
notify_on_state_change = vm_and_task_state
[notifications]
notify_on_state_change = vm_and_task_state

View File

@@ -0,0 +1,15 @@
#!/usr/bin/env bash
# ``upgrade-watcher``
function configure_watcher_upgrade {
XTRACE=$(set +o | grep xtrace)
set -o xtrace
# Copy release-specific files
sudo cp $TARGET_RELEASE_DIR/watcher/etc/watcher/watcher.conf $WATCHER_CONF_DIR/watcher.conf
sudo cp $TARGET_RELEASE_DIR/watcher/etc/watcher/policy.yaml.sample $WATCHER_CONF_DIR/policy.yaml.sample
# reset to previous state
$XTRACE
}

126
devstack/upgrade/resources.sh Executable file
View File

@@ -0,0 +1,126 @@
#!/bin/bash
set -o errexit
source $GRENADE_DIR/grenaderc
source $GRENADE_DIR/functions
source $TOP_DIR/openrc admin demo
set -o xtrace
function _wait_for_status {
while :
do
state=$("${@:2}" -f value -c State)
[[ $state == "SUCCEEDED" ]] && break
if [ $state == "ERROR" ]; then
die $LINENO "ERROR creating audit"
fi
sleep 10
done
}
function create_audit_template {
at_id=$(openstack optimize audittemplate create d1 dummy -s dummy -f value -c UUID)
resource_save watcher at_id $at_id
}
function create_audit {
audit_id=$(openstack optimize audit create -s dummy -g dummy -f value -c UUID)
resource_save watcher audit_id $audit_id
}
function create_audit_with_autotrigger {
audit_at_id=$(openstack optimize audit create -s dummy -g dummy -f value -c UUID --auto-trigger)
resource_save watcher audit_at_id $audit_at_id
}
function verify_audit_template {
local at_id=$(resource_get watcher at_id)
openstack optimize audittemplate show $at_id
}
function verify_audit_with_autotrigger {
local audit_at_id=$(resource_get watcher audit_at_id)
_wait_for_status "SUCCEEDED" openstack optimize audit show $audit_at_id
local actionplan_at_id=$(openstack optimize actionplan list --audit $audit_at_id -c UUID -f value)
resource_save watcher actionplan_at $actionplan_at_id
actionplan_at_state=$(openstack optimize actionplan show $actionplan_at_id -c State -f value)
if [ $actionplan_at_state != "SUCCEEDED" ]; then
die $LINENO "ERROR executing actionplan"
fi
}
function verify_audit {
local audit_id=$(resource_get watcher audit_id)
_wait_for_status "SUCCEEDED" openstack optimize audit show $audit_id
local actionplan_id=$(openstack optimize actionplan list --audit $audit_id -c UUID -f value)
resource_save watcher actionplan $actionplan_id
actionplan_state=$(openstack optimize actionplan show $actionplan_id -c State -f value)
if [ $actionplan_state != "RECOMMENDED" ]; then
die $LINENO "ERROR creating actionplan"
fi
}
function verify_noapi {
# currently no good way
:
}
function delete_audit {
local audit_id=$(resource_get watcher audit_id)
local actionplan_id=$(resource_get watcher actionplan)
watcher actionplan delete $actionplan_id
openstack optimize audit delete $audit_id
}
function delete_audit_with_autotrigger {
local audit_at_id=$(resource_get watcher audit_at_id)
local actionplan_id=$(resource_get watcher actionplan_at)
watcher actionplan delete $actionplan_id
openstack optimize audit delete $audit_at_id
}
function delete_audit_template {
local at_id=$(resource_get watcher at_id)
openstack optimize audittemplate delete $at_id
}
function create {
create_audit_template
create_audit
create_audit_with_autotrigger
}
function verify {
verify_audit_template
verify_audit
verify_audit_with_autotrigger
}
function destroy {
delete_audit_template
delete_audit
delete_audit_with_autotrigger
}
# Dispatcher
case $1 in
"create")
create
;;
"verify_noapi")
verify_noapi
;;
"verify")
verify
;;
"destroy")
destroy
;;
"force_destroy")
set +o errexit
destroy
;;
esac

11
devstack/upgrade/settings Normal file
View File

@@ -0,0 +1,11 @@
register_project_for_upgrade watcher
register_db_to_save watcher
devstack_localrc base enable_plugin watcher https://git.openstack.org/openstack/watcher stable/rocky
devstack_localrc target enable_plugin watcher https://git.openstack.org/openstack/watcher
devstack_localrc base enable_service watcher-api watcher-decision-engine watcher-applier
devstack_localrc target enable_service watcher-api watcher-decision-engine watcher-applier
BASE_RUN_SMOKE=False
TARGET_RUN_SMOKE=False

24
devstack/upgrade/shutdown.sh Executable file
View File

@@ -0,0 +1,24 @@
#!/bin/bash
set -o errexit
source $GRENADE_DIR/grenaderc
source $GRENADE_DIR/functions
# We need base DevStack functions for this
source $BASE_DEVSTACK_DIR/functions
source $BASE_DEVSTACK_DIR/stackrc # needed for status directory
source $BASE_DEVSTACK_DIR/lib/tls
source $BASE_DEVSTACK_DIR/lib/apache
WATCHER_DEVSTACK_DIR=$(dirname $(dirname $0))
source $WATCHER_DEVSTACK_DIR/settings
source $WATCHER_DEVSTACK_DIR/plugin.sh
source $WATCHER_DEVSTACK_DIR/lib/watcher
set -o xtrace
stop_watcher
# sanity check that service is actually down
ensure_services_stopped watcher-api watcher-decision-engine watcher-applier

70
devstack/upgrade/upgrade.sh Executable file
View File

@@ -0,0 +1,70 @@
#!/usr/bin/env bash
# ``upgrade-watcher``
echo "*********************************************************************"
echo "Begin $0"
echo "*********************************************************************"
# Clean up any resources that may be in use
cleanup() {
set +o errexit
echo "********************************************************************"
echo "ERROR: Abort $0"
echo "********************************************************************"
# Kill ourselves to signal any calling process
trap 2; kill -2 $$
}
trap cleanup SIGHUP SIGINT SIGTERM
# Keep track of the grenade directory
RUN_DIR=$(cd $(dirname "$0") && pwd)
# Source params
source $GRENADE_DIR/grenaderc
# Import common functions
source $GRENADE_DIR/functions
# This script exits on an error so that errors don't compound and you see
# only the first error that occurred.
set -o errexit
# Upgrade watcher
# ============
# Get functions from current DevStack
source $TARGET_DEVSTACK_DIR/stackrc
source $TARGET_DEVSTACK_DIR/lib/apache
source $TARGET_DEVSTACK_DIR/lib/tls
source $(dirname $(dirname $BASH_SOURCE))/settings
source $(dirname $(dirname $BASH_SOURCE))/plugin.sh
# Print the commands being run so that we can see the command that triggers
# an error. It is also useful for following allowing as the install occurs.
set -o xtrace
# Save current config files for posterity
[[ -d $SAVE_DIR/etc.watcher ]] || cp -pr $WATCHER_CONF_DIR $SAVE_DIR/etc.watcher
# Install the target watcher
install_watcher
# calls upgrade-watcher for specific release
upgrade_project watcher $RUN_DIR $BASE_DEVSTACK_BRANCH $TARGET_DEVSTACK_BRANCH
# Migrate the database
watcher-db-manage upgrade || die $LINO "DB migration error"
start_watcher
# Don't succeed unless the services come up
ensure_services_started watcher-api watcher-decision-engine watcher-applier
set +o xtrace
echo "*********************************************************************"
echo "SUCCESS: End $0"
echo "*********************************************************************"

View File

@@ -20,7 +20,7 @@ It is used via a single directive in the .rst file
"""
from sphinx.util.compat import Directive
from docutils.parsers.rst import Directive
from docutils import nodes
from watcher.notifications import base as notification

10
doc/requirements.txt Normal file
View File

@@ -0,0 +1,10 @@
# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
openstackdocstheme>=1.20.0 # Apache-2.0
sphinx>=1.6.5,!=1.6.6,!=1.6.7,<2.0.0;python_version=='2.7' # BSD
sphinx>=1.6.5,!=1.6.6,!=1.6.7;python_version>='3.4' # BSD
sphinxcontrib-pecanwsme>=0.8.0 # Apache-2.0
reno>=2.7.0 # Apache-2.0
sphinxcontrib-apidoc>=0.2.0 # BSD
os-api-ref>=1.4.0 # Apache-2.0

View File

@@ -44,6 +44,6 @@ Installing API behind mod_wsgi
Fedora/RHEL7/CentOS7:
sudo systemctl reload httpd
Debian/Ubuntu:
sudo a2ensite watcher
sudo service apache2 reload
Debian/Ubuntu:
sudo a2ensite watcher
sudo service apache2 reload

View File

@@ -131,6 +131,16 @@ The actions that may have a rule enforced on them are:
* ``GET /v1/actions/<ACTION_UUID>``
* ``service:get_all``, ``service:detail`` - List available Watcher services
* ``GET /v1/services``
* ``GET /v1/services/detail``
* ``service:get`` - Retrieve a specific Watcher service entity
* ``GET /v1/services/<SERVICE_ID>``
To limit an action to a particular role or roles, you list the roles like so ::

View File

@@ -19,7 +19,7 @@ The source install instructions specifically avoid using platform specific
packages, instead using the source for the code and the Python Package Index
(PyPi_).
.. _PyPi: https://pypi.python.org/pypi
.. _PyPi: https://pypi.org/
It's expected that your system already has python2.7_, latest version of pip_,
and git_ available.
@@ -30,7 +30,7 @@ and git_ available.
Your system shall also have some additional system libraries:
On Ubuntu (tested on 14.04LTS):
On Ubuntu (tested on 16.04LTS):
.. code-block:: bash

View File

@@ -1,8 +0,0 @@
==================================================
OpenStack Infrastructure Optimization Service APIs
==================================================
.. toctree::
:maxdepth: 1
v1

View File

@@ -1,100 +0,0 @@
..
Except where otherwise noted, this document is licensed under Creative
Commons Attribution 3.0 License. You can view the license at:
https://creativecommons.org/licenses/by/3.0/
====================
RESTful Web API (v1)
====================
Goals
=====
.. rest-controller:: watcher.api.controllers.v1.goal:GoalsController
:webprefix: /v1/goal
.. autotype:: watcher.api.controllers.v1.goal.GoalCollection
:members:
.. autotype:: watcher.api.controllers.v1.goal.Goal
:members:
Strategies
==========
.. rest-controller:: watcher.api.controllers.v1.strategy:StrategiesController
:webprefix: /v1/strategies
.. autotype:: watcher.api.controllers.v1.strategy.StrategyCollection
:members:
.. autotype:: watcher.api.controllers.v1.strategy.Strategy
:members:
Audit Templates
===============
.. rest-controller:: watcher.api.controllers.v1.audit_template:AuditTemplatesController
:webprefix: /v1/audit_templates
.. autotype:: watcher.api.controllers.v1.audit_template.AuditTemplateCollection
:members:
.. autotype:: watcher.api.controllers.v1.audit_template.AuditTemplate
:members:
Audits
======
.. rest-controller:: watcher.api.controllers.v1.audit:AuditsController
:webprefix: /v1/audits
.. autotype:: watcher.api.controllers.v1.audit.AuditCollection
:members:
.. autotype:: watcher.api.controllers.v1.audit.Audit
:members:
Links
=====
.. autotype:: watcher.api.controllers.link.Link
:members:
Action Plans
============
.. rest-controller:: watcher.api.controllers.v1.action_plan:ActionPlansController
:webprefix: /v1/action_plans
.. autotype:: watcher.api.controllers.v1.action_plan.ActionPlanCollection
:members:
.. autotype:: watcher.api.controllers.v1.action_plan.ActionPlan
:members:
Actions
=======
.. rest-controller:: watcher.api.controllers.v1.action:ActionsController
:webprefix: /v1/actions
.. autotype:: watcher.api.controllers.v1.action.ActionCollection
:members:
.. autotype:: watcher.api.controllers.v1.action.Action
:members:
Scoring Engine
==============
.. rest-controller:: watcher.api.controllers.v1.scoring_engine:ScoringEngineController
:webprefix: /v1/scoring_engine
.. autotype:: watcher.api.controllers.v1.scoring_engine.ScoringEngineCollection
:members:
.. autotype:: watcher.api.controllers.v1.scoring_engine.ScoringEngine
:members:

View File

@@ -76,6 +76,7 @@ Watcher Applier
This component is in charge of executing the
:ref:`Action Plan <action_plan_definition>` built by the
:ref:`Watcher Decision Engine <watcher_decision_engine_definition>`.
Taskflow is the default workflow engine for Watcher.
It connects to the :ref:`message bus <amqp_bus_definition>` and launches the
:ref:`Action Plan <action_plan_definition>` whenever a triggering message is
@@ -110,6 +111,23 @@ If the :ref:`Action <action_definition>` fails, the
previous state of the :ref:`Managed resource <managed_resource_definition>`
(i.e. before the command was sent to the underlying OpenStack service).
In Stein, added a new config option 'action_execution_rule' which is a
dict type. Its key field is strategy name and the value is 'ALWAYS' or 'ANY'.
'ALWAYS' means the callback function returns True as usual.
'ANY' means the return depends on the result of previous action execution.
The callback returns True if previous action gets failed, and the engine
continues to run the next action. If previous action executes success,
the callback returns False then the next action will be ignored.
For strategies that aren't in 'action_execution_rule', the callback always
returns True.
Please add the next section in the watcher.conf file
if your strategy needs this feature.
::
[watcher_workflow_engines.taskflow]
action_execution_rule = {'your strategy name': 'ANY'}
.. _archi_watcher_cli_definition:
Watcher CLI
@@ -461,4 +479,4 @@ change to a new value:
.. _Watcher API: webapi/v1.html
.. _Watcher API: https://developer.openstack.org/api-ref/resource-optimization/

View File

@@ -32,7 +32,7 @@ sys.path.insert(0, os.path.abspath('./'))
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = [
'oslo_config.sphinxext',
'sphinx.ext.autodoc',
'sphinxcontrib.apidoc',
'sphinx.ext.viewcode',
'sphinxcontrib.httpdomain',
'sphinxcontrib.pecanwsme.rest',
@@ -42,6 +42,7 @@ extensions = [
'ext.versioned_notifications',
'oslo_config.sphinxconfiggen',
'openstackdocstheme',
'sphinx.ext.napoleon',
]
wsme_protocols = ['restjson']
@@ -54,6 +55,18 @@ sample_config_basename = 'watcher'
# text edit cycles.
# execute "export SPHINX_DEBUG=1" in your terminal to disable
# sphinxcontrib.apidoc options
apidoc_module_dir = '../../watcher'
apidoc_output_dir = 'api'
apidoc_excluded_paths = [
'tests/*',
'db',
'decision_engine',
'doc',
'objects',
]
apidoc_separate_modules = True
# The suffix of source filenames.
source_suffix = '.rst'

View File

@@ -19,11 +19,17 @@ optimize your IaaS platform. The Watcher service may, depending upon
configuration, interact with several other OpenStack services. This includes:
- the OpenStack Identity service (`keystone`_) for request authentication and
to locate other OpenStack services
- the OpenStack Telemetry service (`ceilometer`_) for consuming the resources
metrics
to locate other OpenStack services.
- the OpenStack Telemetry service (`ceilometer`_) for collecting the resources
metrics.
- the time series database (`gnocchi`_) for consuming the resources
metrics.
- the OpenStack Compute service (`nova`_) works with the Watcher service and
acts as a user-facing API for instance migration.
- the OpenStack Bare Metal service (`ironic`_) works with the Watcher service
and allows to manage power state of nodes.
- the OpenStack Block Storage service (`cinder`_) works with the Watcher
service and as an API for volume node migration.
The Watcher service includes the following components:
@@ -53,6 +59,9 @@ additional functionality:
.. _`keystone`: https://github.com/openstack/keystone
.. _`ceilometer`: https://github.com/openstack/ceilometer
.. _`nova`: https://github.com/openstack/nova
.. _`gnocchi`: https://github.com/gnocchixyz/gnocchi
.. _`ironic`: https://github.com/openstack/ironic
.. _`cinder`: https://github.com/openstack/cinder
.. _`python-watcherclient`: https://github.com/openstack/python-watcherclient
.. _`watcher-dashboard`: https://github.com/openstack/watcher-dashboard
.. _`watcher metering`: https://github.com/b-com/watcher-metering
@@ -129,10 +138,14 @@ Configure the Identity service for the Watcher service
.. code-block:: bash
$ openstack endpoint create --region YOUR_REGION watcher \
--publicurl http://WATCHER_API_PUBLIC_IP:9322 \
--internalurl http://WATCHER_API_INTERNAL_IP:9322 \
--adminurl http://WATCHER_API_ADMIN_IP:9322
$ openstack endpoint create --region YOUR_REGION
watcher public http://WATCHER_API_PUBLIC_IP:9322
$ openstack endpoint create --region YOUR_REGION
watcher internal http://WATCHER_API_INTERNAL_IP:9322
$ openstack endpoint create --region YOUR_REGION
watcher admin http://WATCHER_API_ADMIN_IP:9322
.. _watcher-db_configuration:
@@ -146,7 +159,7 @@ MySQL database that is used by other OpenStack services.
``watcher`` user. Replace WATCHER_DBPASSWORD
with the actual password::
$ mysql -u root -p
# mysql
mysql> CREATE DATABASE watcher CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON watcher.* TO 'watcher'@'localhost' \
@@ -165,7 +178,7 @@ You can easily generate and update a sample configuration file
named :ref:`watcher.conf.sample <watcher_sample_configuration_files>` by using
these following commands::
$ git clone git://git.openstack.org/openstack/watcher
$ git clone https://git.openstack.org/openstack/watcher
$ cd watcher/
$ tox -e genconfig
$ vi etc/watcher/watcher.conf.sample
@@ -217,7 +230,7 @@ so that the watcher service is configured for your needs.
# The SQLAlchemy connection string used to connect to the
# database (string value)
#connection=<None>
connection = mysql://watcher:WATCHER_DBPASSWORD@DB_IP/watcher?charset=utf8
connection = mysql+pymysql://watcher:WATCHER_DBPASSWORD@DB_IP/watcher?charset=utf8
#. Configure the Watcher Service to use the RabbitMQ message broker by
setting one or more of these options. Replace RABBIT_HOST with the
@@ -226,30 +239,13 @@ so that the watcher service is configured for your needs.
[DEFAULT]
# The messaging driver to use, defaults to rabbit. Other drivers
# include qpid and zmq. (string value)
#rpc_backend = rabbit
# The default exchange under which topics are scoped. May be
# overridden by an exchange name specified in the transport_url
# option. (string value)
control_exchange = watcher
...
[oslo_messaging_rabbit]
# The username used by the message broker (string value)
rabbit_userid = RABBITMQ_USER
# The password of user used by the message broker (string value)
rabbit_password = RABBITMQ_PASSWORD
# The host where the message brokeris installed (string value)
rabbit_host = RABBIT_HOST
# The port used bythe message broker (string value)
#rabbit_port = 5672
# ...
transport_url = rabbit://RABBITMQ_USER:RABBITMQ_PASSWORD@RABBIT_HOST
#. Watcher API shall validate the token provided by every incoming request,
@@ -273,7 +269,7 @@ so that the watcher service is configured for your needs.
# Authentication URL (unknown value)
#auth_url = <None>
auth_url = http://IDENTITY_IP:35357
auth_url = http://IDENTITY_IP:5000
# Username (unknown value)
# Deprecated group/name - [DEFAULT]/username
@@ -319,7 +315,7 @@ so that the watcher service is configured for your needs.
# Authentication URL (unknown value)
#auth_url = <None>
auth_url = http://IDENTITY_IP:35357
auth_url = http://IDENTITY_IP:5000
# Username (unknown value)
# Deprecated group/name - [DEFAULT]/username
@@ -349,7 +345,7 @@ so that the watcher service is configured for your needs.
[nova_client]
# Version of Nova API to use in novaclient. (string value)
#api_version = 2.53
#api_version = 2.56
api_version = 2.1
#. Create the Watcher Service database tables::
@@ -407,26 +403,22 @@ Watcher can consume notifications generated by the Nova services, in order to
build or update, in real time, its cluster data model related to computing
resources.
Nova publishes, by default, notifications on ``notifications`` AMQP queue
(configurable) and ``versioned_notifications`` AMQP queue (not
configurable). ``notifications`` queue is mainly used by ceilometer, so we can
not use it. And some events, related to nova-compute service state, are only
sent into the ``versioned_notifications`` queue.
Nova emits unversioned(legacy) and versioned notifications on different
topics. Because legacy notifications will be deprecated, Watcher consumes
Nova versioned notifications.
By default, Watcher listens to AMQP queues named ``watcher_notifications``
and ``versioned_notifications``. So you have to update the Nova
configuration file on controller and compute nodes, in order
to Watcher receives Nova notifications in ``watcher_notifications`` as well.
* In the file ``/etc/nova/nova.conf``, update the section
``[oslo_messaging_notifications]``, by redefining the list of topics
into which Nova services will publish events ::
* In the file ``/etc/nova/nova.conf``, the value of driver in the section
``[oslo_messaging_notifications]`` can't be noop, and the value of
notification_format in the section ``[notifications]``
should be both or versioned ::
[oslo_messaging_notifications]
driver = messagingv2
topics = notifications,watcher_notifications
* Restart the Nova services.
...
[notifications]
notification_format = both
Configure Cinder Notifications

View File

@@ -1,5 +1,9 @@
===================
Configuration Guide
===================
.. toctree::
:maxdepth: 1
:maxdepth: 2
configuring
watcher

View File

@@ -0,0 +1 @@
.. include:: ../../../watcher/api/controllers/rest_api_version_history.rst

View File

@@ -39,7 +39,7 @@ notifications of important events.
* https://launchpad.net
* https://launchpad.net/watcher
* https://launchpad.net/~openstack
* https://launchpad.net/openstack
Project Hosting Details
@@ -49,7 +49,7 @@ Bug tracker
https://launchpad.net/watcher
Mailing list (prefix subjects with ``[watcher]`` for faster responses)
https://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
http://lists.openstack.org/pipermail/openstack-discuss/
Wiki
https://wiki.openstack.org/Watcher
@@ -65,7 +65,7 @@ IRC Channel
Weekly Meetings
On Wednesdays at 14:00 UTC on even weeks in the ``#openstack-meeting-4``
IRC channel, 13:00 UTC on odd weeks in the ``#openstack-meeting-alt``
IRC channel, 08:00 UTC on odd weeks in the ``#openstack-meeting-alt``
IRC channel (`meetings logs`_)
.. _changelog: http://eavesdrop.openstack.org/irclogs/%23openstack-watcher/

View File

@@ -19,7 +19,7 @@ model. To enable the Watcher plugin with DevStack, add the following to the
`[[local|localrc]]` section of your controller's `local.conf` to enable the
Watcher plugin::
enable_plugin watcher git://git.openstack.org/openstack/watcher
enable_plugin watcher https://git.openstack.org/openstack/watcher
For more detailed instructions, see `Detailed DevStack Instructions`_. Check
out the `DevStack documentation`_ for more information regarding DevStack.

View File

@@ -37,7 +37,7 @@ different version of the above, please document your configuration here!
.. _Python: https://www.python.org/
.. _git: https://git-scm.com/
.. _setuptools: https://pypi.python.org/pypi/setuptools
.. _setuptools: https://pypi.org/project/setuptools
.. _virtualenvwrapper: https://virtualenvwrapper.readthedocs.io/en/latest/install.html
Getting the latest code
@@ -69,8 +69,8 @@ itself.
These dependencies can be installed from PyPi_ using the Python tool pip_.
.. _PyPi: https://pypi.python.org/
.. _pip: https://pypi.python.org/pypi/pip
.. _PyPi: https://pypi.org/
.. _pip: https://pypi.org/project/pip
However, your system *may* need additional dependencies that `pip` (and by
extension, PyPi) cannot satisfy. These dependencies should be installed
@@ -123,9 +123,10 @@ You can re-activate this virtualenv for your current shell using:
$ workon watcher
For more information on virtual environments, see virtualenv_.
For more information on virtual environments, see virtualenv_ and
virtualenvwrapper_.
.. _virtualenv: https://www.virtualenv.org/
.. _virtualenv: https://pypi.org/project/virtualenv/
@@ -192,6 +193,8 @@ still need to configure the following sections:
:ref:`Identity service <identity-service_configuration>` i.e. Keystone
- The ``[watcher_messaging]`` section to configure the OpenStack AMQP-based
message bus
- The ``watcher_clients_auth`` section to configure Keystone client to access
related OpenStack projects
So if you need some more details on how to configure one or more of these
sections, please do have a look at :doc:`../configuration/configuring` before

View File

@@ -79,7 +79,7 @@ requirements.txt file::
.. _cookiecutter: https://github.com/audreyr/cookiecutter
.. _OpenStack cookiecutter: https://github.com/openstack-dev/cookiecutter
.. _python-watcher: https://pypi.python.org/pypi/python-watcher
.. _python-watcher: https://pypi.org/project/python-watcher
Implementing a plugin for Watcher
=================================

View File

@@ -208,7 +208,7 @@ Here below is how to register ``DummyClusterDataModelCollector`` using pbr_:
watcher_cluster_data_model_collectors =
dummy = thirdparty.dummy:DummyClusterDataModelCollector
.. _pbr: http://docs.openstack.org/pbr/latest
.. _pbr: https://docs.openstack.org/pbr/latest/
Add new notification endpoints

View File

@@ -245,15 +245,16 @@ Querying metrics
A large set of metrics, generated by OpenStack modules, can be used in your
strategy implementation. To collect these metrics, Watcher provides a
`Helper`_ for two data sources which are `Ceilometer`_ and `Monasca`_. If you
wish to query metrics from a different data source, you can implement your own
and directly use it from within your new strategy. Indeed, strategies in
Watcher have the cluster data models decoupled from the data sources which
means that you may keep the former while changing the latter.
The recommended way for you to support a new data source is to implement a new
helper that would encapsulate within separate methods the queries you need to
perform. To then use it, you would just have to instantiate it within your
strategy.
`DataSourceManager`_ for two data sources which are `Ceilometer`_
(with `Gnocchi`_ as API) and `Monasca`_. If you wish to query metrics from a
different data source, you can implement your own and use it via
DataSourceManager from within your new strategy. Indeed, strategies in Watcher
have the cluster data models decoupled from the data sources which means that
you may keep the former while changing the latter. The recommended way for you
to support a new data source is to implement a new helper that would
encapsulate within separate methods the queries you need to perform. To then
use it, you would just have to add it to appropriate watcher_strategies.*
section in config file.
If you want to use Ceilometer but with your own metrics database backend,
please refer to the `Ceilometer developer guide`_. The list of the available
@@ -263,52 +264,38 @@ requires new metrics not covered by Ceilometer, you can add them through a
`Ceilometer plugin`_.
.. _`Helper`: https://github.com/openstack/watcher/blob/master/watcher/datasource/ceilometer.py
.. _`DataSourceManager`: https://github.com/openstack/watcher/blob/master/watcher/datasource/manager.py
.. _`Ceilometer developer guide`: https://docs.openstack.org/ceilometer/latest/contributor/architecture.html#storing-accessing-the-data
.. _`Ceilometer`: https://docs.openstack.org/ceilometer/latest
.. _`Monasca`: https://github.com/openstack/monasca-api/blob/master/docs/monasca-api-spec.md
.. _`here`: https://docs.openstack.org/ceilometer/latest/contributor/install/dbreco.html#choosing-a-database-backend
.. _`Ceilometer plugin`: https://docs.openstack.org/ceilometer/latest/contributor/plugins.html
.. _`Ceilosca`: https://github.com/openstack/monasca-ceilometer/blob/master/ceilosca/ceilometer/storage/impl_monasca.py
.. _`Gnocchi`: https://gnocchi.xyz/
Read usage metrics using the Watcher Datasource Helper
------------------------------------------------------
The following code snippet shows how to invoke a Datasource Helper class:
The following code snippet shows how datasource_backend is defined:
.. code-block:: py
from watcher.datasource import ceilometer as ceil
from watcher.datasource import monasca as mon
from watcher.datasource import manager as ds_manager
@property
def ceilometer(self):
if self._ceilometer is None:
self._ceilometer = ceil.CeilometerHelper(osc=self.osc)
return self._ceilometer
@property
def monasca(self):
if self._monasca is None:
self._monasca = mon.MonascaHelper(osc=self.osc)
return self._monasca
def datasource_backend(self):
if not self._datasource_backend:
self._datasource_backend = ds_manager.DataSourceManager(
config=self.config,
osc=self.osc
).get_backend(self.DATASOURCE_METRICS)
return self._datasource_backend
Using that you can now query the values for that specific metric:
.. code-block:: py
if self.config.datasource == "ceilometer":
resource_id = "%s_%s" % (node.uuid, node.hostname)
return self.ceilometer.statistic_aggregation(
resource_id=resource_id,
meter_name='compute.node.cpu.percent',
period="7200",
aggregate='avg',
)
elif self.config.datasource == "monasca":
statistics = self.monasca.statistic_aggregation(
meter_name='compute.node.cpu.percent',
dimensions=dict(hostname=node.uuid),
period=7200,
aggregate='avg'
)
avg_meter = self.datasource_backend.statistic_aggregation(
instance.uuid, 'cpu_util', self.periods['instance'],
self.granularity,
aggregation=self.aggregation_method['instance'])

View File

@@ -13,39 +13,32 @@ Testing
Unit tests
==========
All unit tests should be run using `tox`_. To run the same unit tests that are
executing onto `Gerrit`_ which includes ``py35``, ``py27`` and ``pep8``, you
can issue the following command::
All unit tests should be run using `tox`_. Before running the unit tests, you
should download the latest `watcher`_ from the github. To run the same unit
tests that are executing onto `Gerrit`_ which includes ``py35``, ``py27`` and
``pep8``, you can issue the following command::
$ workon watcher
(watcher) $ pip install tox
(watcher) $ cd watcher
(watcher) $ tox
$ git clone https://git.openstack.org/openstack/watcher
$ cd watcher
$ pip install tox
$ tox
If you want to only run one of the aforementioned, you can then issue one of
If you only want to run one of the aforementioned, you can then issue one of
the following::
$ workon watcher
(watcher) $ tox -e py35
(watcher) $ tox -e py27
(watcher) $ tox -e pep8
$ tox -e py35
$ tox -e py27
$ tox -e pep8
.. _tox: https://tox.readthedocs.org/
.. _Gerrit: http://review.openstack.org/
.. _watcher: https://git.openstack.org/cgit/openstack/watcher
.. _Gerrit: https://review.openstack.org/
You may pass options to the test programs using positional arguments. To run a
specific unit test, you can pass extra options to `os-testr`_ after putting
the ``--`` separator. So using the ``-r`` option followed by a regex string,
you can run the desired test::
If you only want to run specific unit test code and don't like to waste time
waiting for all unit tests to execute, you can add parameters ``--`` followed
by a regex string::
$ workon watcher
(watcher) $ tox -e py27 -- -r watcher.tests.api
.. _os-testr: https://docs.openstack.org/os-testr/latest
When you're done, deactivate the virtualenv::
$ deactivate
$ tox -e py27 -- watcher.tests.api
.. _tempest_tests:
@@ -55,4 +48,4 @@ Tempest tests
Tempest tests for Watcher has been migrated to the external repo
`watcher-tempest-plugin`_.
.. _watcher-tempest-plugin: https://github.com/openstack/watcher-tempest-plugin
.. _watcher-tempest-plugin: https://git.openstack.org/cgit/openstack/watcher-tempest-plugin

View File

@@ -267,14 +267,14 @@ the same goal and same workload of the :ref:`Cluster <cluster_definition>`.
Project
=======
:ref:`Projects <project_definition>` represent the base unit of ownership
:ref:`Projects <project_definition>` represent the base unit of "ownership"
in OpenStack, in that all :ref:`resources <managed_resource_definition>` in
OpenStack should be owned by a specific :ref:`project <project_definition>`.
In OpenStack Identity, a :ref:`project <project_definition>` must be owned by a
specific domain.
Please, read `the official OpenStack definition of a Project
<http://docs.openstack.org/glossary/content/glossary.html>`_.
<https://docs.openstack.org/doc-contrib-guide/common/glossary.html>`_.
.. _scoring_engine_definition:

View File

@@ -2,7 +2,7 @@
[*] --> PENDING: Audit requested by Administrator
PENDING --> ONGOING: Audit request is received\nby the Watcher Decision Engine
ONGOING --> FAILED: Audit fails\n(no solution found, technical error, ...)
ONGOING --> FAILED: Audit fails\n(Exception occurred)
ONGOING --> SUCCEEDED: The Watcher Decision Engine\ncould find at least one Solution
ONGOING --> SUSPENDED: Administrator wants to\nsuspend the Audit
SUSPENDED --> ONGOING: Administrator wants to\nresume the Audit

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -15,7 +15,7 @@ metrics receiver, complex event processor and profiler, optimization processor
and an action plan applier. This provides a robust framework to realize a wide
range of cloud optimization goals, including the reduction of data center
operating costs, increased system performance via intelligent virtual machine
migration, increased energy efficiencyand more!
migration, increased energy efficiency and more!
Watcher project consists of several source code repositories:
@@ -54,22 +54,6 @@ Getting Started
contributor/index
API References
--------------
.. toctree::
:maxdepth: 1
api/index
Plugins
-------
.. toctree::
:maxdepth: 1
contributor/plugin/index
Installation
============
.. toctree::
@@ -77,14 +61,6 @@ Installation
install/index
Watcher Configuration Options
=============================
.. toctree::
:maxdepth: 2
configuration/index
Admin Guide
===========
@@ -101,6 +77,31 @@ User Guide
user/index
API References
==============
.. toctree::
:maxdepth: 1
API Reference <https://developer.openstack.org/api-ref/resource-optimization/>
Watcher API Microversion History </contributor/api_microversion_history>
Plugins
-------
.. toctree::
:maxdepth: 1
contributor/plugin/index
Watcher Configuration Options
=============================
.. toctree::
:maxdepth: 2
configuration/index
Watcher Manual Pages
====================
@@ -117,7 +118,7 @@ Watcher Manual Pages
.. toctree::
:hidden:
api/autoindex
api/modules
Indices and tables

View File

@@ -26,8 +26,8 @@
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
@@ -47,7 +47,7 @@
[watcher_clients_auth]
...
auth_type = password
auth_url = http://controller:35357
auth_url = http://controller:5000
username = watcher
password = WATCHER_PASS
project_domain_name = default

View File

@@ -11,7 +11,7 @@ you must create a database, service credentials, and API endpoints.
.. code-block:: console
$ mysql -u root -p
# mysql
* Create the ``watcher`` database:

View File

@@ -10,7 +10,7 @@ Infrastructure Optimization service
verify.rst
next-steps.rst
The Infrastructure Optimization service (watcher) provides
The Infrastructure Optimization service (Watcher) provides
flexible and scalable resource optimization service for
multi-tenant OpenStack-based clouds.
@@ -21,17 +21,17 @@ applier. This provides a robust framework to realize a wide
range of cloud optimization goals, including the reduction
of data center operating costs, increased system performance
via intelligent virtual machine migration, increased energy
efficiencyand more!
efficiency and more!
Watcher also supports a pluggable architecture by which custom
optimization algorithms, data metrics and data profilers can be
developed and inserted into the Watcher framework.
Check the documentation for watcher optimization strategies at
https://docs.openstack.org/watcher/latest/strategies/index.html
`Strategies <https://docs.openstack.org/watcher/latest/strategies/index.html>`_.
Check watcher glossary at
https://docs.openstack.org/watcher/latest/glossary.html
Check watcher glossary at `Glossary
<https://docs.openstack.org/watcher/latest/glossary.html>`_.
This chapter assumes a working setup of OpenStack following the

View File

@@ -4,7 +4,7 @@ Install and configure for Ubuntu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This section describes how to install and configure the Infrastructure
Optimization service for Ubuntu 14.04 (LTS).
Optimization service for Ubuntu 16.04 (LTS).
.. include:: common_prerequisites.rst
@@ -25,10 +25,15 @@ Install and configure components
Finalize installation
---------------------
Restart the Infrastructure Optimization services:
Start the Infrastructure Optimization services and configure them to start when
the system boots:
.. code-block:: console
# service watcher-api restart
# service watcher-decision-engine restart
# service watcher-applier restart
# systemctl enable watcher-api.service \
watcher-decision-engine.service \
watcher-applier.service
# systemctl start watcher-api.service \
watcher-decision-engine.service \
watcher-applier.service

View File

@@ -5,4 +5,5 @@
watcher-api
watcher-applier
watcher-db-manage
watcher-decision-engine
watcher-decision-engine
watcher-status

View File

@@ -7,9 +7,7 @@ Service for the Watcher API
---------------------------
:Author: openstack@lists.launchpad.net
:Date:
:Copyright: OpenStack Foundation
:Version:
:Manual section: 1
:Manual group: cloud computing

View File

@@ -7,9 +7,7 @@ Service for the Watcher Applier
-------------------------------
:Author: openstack@lists.launchpad.net
:Date:
:Copyright: OpenStack Foundation
:Version:
:Manual section: 1
:Manual group: cloud computing

View File

@@ -241,10 +241,9 @@ purge
The maximum number of database objects we expect to be deleted. If exceeded,
this will prevent any deletion.
.. option:: -t, --audit-template
.. option:: -t, --goal
Either the UUID or name of the soft deleted audit template to purge. This
will also include any related objects with it.
Either the UUID or name of the goal to purge.
.. option:: -e, --exclude-orphans

View File

@@ -7,9 +7,7 @@ Service for the Watcher Decision Engine
---------------------------------------
:Author: openstack@lists.launchpad.net
:Date:
:Copyright: OpenStack Foundation
:Version:
:Manual section: 1
:Manual group: cloud computing

Some files were not shown because too many files have changed in this diff Show More