Compare commits

..

728 Commits

Author SHA1 Message Date
caoyuan
84fb7423f1 Update the nova api_version default value to 2.53
the api_version has been update, so the doc should change the default
value

refer to https://github.com/openstack/watcher/blob/master/watcher/conf/nova_client.py#L26

Change-Id: I9717294d43203315d0593a4fee8c2ff2caf6f0d0
2017-10-17 14:40:59 +08:00
caoyuan
ee5b01d33b Correct the instance migration link
1. Update the instance migration link
2. remove the unnecessary install-guide link

configure and install Ceilometer by
https://docs.openstack.org/ceilometer/latest is enough
remove the other link.

Change-Id: I2bf408de1023750a3d1f2c9e25293649d99ac428
2017-10-17 10:07:55 +08:00
Zuul
b35feb5432 Merge "optimize update_audit_state" 2017-10-17 01:19:31 +00:00
Jenkins
8343f4bf46 Merge "Add documentation about saving energy strategy" 2017-10-13 06:51:13 +00:00
Jenkins
cd3f792eef Merge "Invoke version_string in watcher/version.py directly" 2017-10-13 04:51:43 +00:00
Jenkins
7f7f7a9fd2 Merge "Add saving energy strategy description" 2017-10-13 04:50:00 +00:00
Jenkins
d5b778b730 Merge "Fix _build_instance_node for building Compute CDM" 2017-10-13 04:05:56 +00:00
Jenkins
62a902df7c Merge "Fix the telemetry-measurements hyperlink for strategies" 2017-10-13 02:52:06 +00:00
Jenkins
5b6f65630d Merge "Update OpenStack Installation Tutorial to pike" 2017-10-13 02:23:52 +00:00
OpenStack Proposal Bot
e5031ef04a Updated from global requirements
Change-Id: I973ef2867d95fe4f70a43c9015f7571188dc13cd
2017-10-12 22:07:21 +00:00
Jenkins
ab2408ea67 Merge "writing convention: do not use “-y” for package install" 2017-10-12 07:04:58 +00:00
Yumeng_Bao
4c0d2ab4b2 Add saving energy strategy description
Change-Id: Id99d48bd2ca2a2539366d8dc1f7627d7eb472a10
2017-10-12 11:39:02 +08:00
Yumeng_Bao
cf8d7bb2f4 Add documentation about saving energy strategy
Change-Id: I9746239c83ea7bff364ad6939e4174748be2d299
Closes-Bug: #1713402
2017-10-11 14:24:30 +08:00
Jenkins
b3d60cb13d Merge "Optimize the import format by pep8" 2017-10-10 14:33:45 +00:00
Jenkins
ffdc3b554d Merge "Remove explicitly enable neutron" 2017-10-10 13:21:35 +00:00
Jenkins
9933d61065 Merge "Fix Action 'change_node_power_state' FAILED" 2017-10-10 13:19:15 +00:00
Jenkins
b4bc1599e6 Merge "Fix TypeError in function chunkify" 2017-10-10 13:17:26 +00:00
Jenkins
280188a762 Merge "Remove installation guide for openSUSE and SLES" 2017-10-10 13:14:41 +00:00
Jenkins
3942f44e56 Merge "Notification Cancel Action Plan" 2017-10-10 13:12:02 +00:00
Jenkins
6208caba0c Merge "Fix action plan state change when action failed" 2017-10-10 12:06:07 +00:00
Jenkins
f3b3e82313 Merge "Remove the unnecessary word" 2017-10-10 11:02:37 +00:00
zhuzeyu
be69ebd8bd Invoke version_string in watcher/version.py directly
There is already define version_string in version.py
So we don't need generate version in other files, just call it.

Change-Id: I7d8294860523eedad92e213ad00569829e120c39
2017-10-10 11:00:26 +00:00
Hidekazu Nakamura
7d33bf8813 Fix _build_instance_node for building Compute CDM
As of Nova API microversion 2.47, response of GET /servers/detail has flavor
which contains a subset of the actual flavor information used to create the
server instance, represented as a nested dictionary.

Since current watcher nova default api version is 2.53(Pike), This patch
follows the API response change.

Change-Id: Ia575950f0702afa1d093f03ca8ddedd3c410b7de
Closes-Bug: #1722462
2017-10-10 17:21:05 +09:00
zhengwei6082
b3fa8a0f86 writing convention: do not use “-y” for package install
Adhering to coding conventions. Refer to ``Code conventions`` at
https://docs.openstack.org/contributor-guide/ for details.

Change-Id: Ic8b166e17ab0d1cbbf2bb6b831f5e53cae6797ba
2017-10-10 06:13:52 +00:00
caoyuan
9d3cc28d2d Update OpenStack Installation Tutorial to pike
Since the pike is release, OpenStack Installation Tutorial should
update to pike

Change-Id: I565f721cb2acbc692c790707ef6b0d167d6a7b09
2017-10-10 10:37:45 +08:00
aditi
eed2e128b0 Remove explicitly enable neutron
This patch removes, explicitly enabled neutron from local.conf
as devstack now default uses neutron

Change-Id: Icf6bd944dd2262ff23cbcceb762a9ba80f471dbb
2017-10-10 01:59:46 +00:00
caoyuan
7091fe435f Fix the telemetry-measurements hyperlink for strategies
Change-Id: Ie38950967665bdc81eb75f54bc1b3b0a4630fe65
2017-10-09 10:41:54 +08:00
licanwei
7f9b562bbd optimize update_audit_state
save state only if the state is different with audit.state

Change-Id: Ida5156f2e63be55e8dd7de452965270c007ab4ab
2017-10-07 00:59:42 -07:00
caoyuan
f445fc451e Optimize the import format by pep8
Change-Id: Ic96759df51f5572fb6047df4b38bb411ecba8e20
2017-10-05 22:34:13 +08:00
Jenkins
fa7749ac8f Merge "Use Property setters" 2017-10-05 04:21:05 +00:00
Zuul
e6c06c1bdf Merge "Add exception log when migrate action failed" 2017-10-03 17:06:20 +00:00
caoyuan
f461b8c567 Remove the unnecessary word
Change-Id: I7f76f89ae17ffdacde421509dda29b7b7d3f5a4a
2017-10-03 21:06:27 +08:00
LiXiangyu
c717be12a6 Fix TypeError in function chunkify
This patch fixes TypeError of range() in function chunkify, as
range() integer step argument expected, but got str.

Change-Id: I2acde859e014baa4c4c59caa6f4ea938c7c4c3bf
2017-10-02 12:25:20 +00:00
Hidekazu Nakamura
5814914aef Fix action plan state change when action failed
Since default workflow engine action container do_execute method
does not raise exception when action failed, workflow engine action
container execute method never raise exception and
action plan state becomes always SUCCEEDED.

This patch fixes default workflow engine action container do_execute
method to raise exception when action does not return True.

Change-Id: I7eeef69dbdfb5d40e3cf0b1004cbfe199a16bf7b
Closes-Bug: #1719793
2017-10-02 07:09:17 +00:00
Hidekazu Nakamura
fb3c2355a6 Remove installation guide for openSUSE and SLES
Since packages for openSUSE and SLES are not provided,
this patch removes installation guide for openSUSE and SLES.

Change-Id: Ic15d8c4b262e935c7acaef41e18960d0b259d5c9
Closes-Bug: #1715032
2017-10-02 13:52:29 +09:00
aditi
d4e6e82dd2 Notification Cancel Action Plan
This patch adds Notifications for cancel action plan
operation.

Change-Id: I5a89a80729349e3db43ca35ff9fbe8579e86b3b1
Implements: blueprint notifications-actionplan-cancel
2017-09-29 14:44:30 +09:00
Hidekazu Nakamura
816765374d Fix migrate action failure
disk_over_commit flag was removed in Nova API microversion 2.25(Mitaka).

Since current watcher nova default api version is 2.53(Pike),
this patch removes disk_over_commit flag.

Change-Id: Ib141505b9e8cb41997b29c1762e387b1f84f5143
Closes-Bug: #1720054
2017-09-28 14:06:07 +09:00
Hidekazu Nakamura
35e502f666 Add exception log when migrate action failed
As of now we can not know what was happend when migrate action
failed critically.
This patch adds exception log when migrate action failed critically.

Change-Id: I54d0bc54ee1df6f13754771775c58255f53f5008
2017-09-28 11:56:29 +09:00
Jenkins
ee36bb8180 Merge "[Doc] Fix host option" 2017-09-28 02:06:09 +00:00
Jenkins
0213bee63b Merge "Fix Watcher DB schema creation" 2017-09-27 08:36:31 +00:00
Alexander Chadin
f516a9c3b9 [Doc] Fix host option
Change-Id: I599856d2d02396f02f91ac4a607520ff60d7b033
2017-09-27 08:10:44 +00:00
aditi
8e89d5489c Use Property setters
At various places in watcher code, we are using property getters
to set property, in this way the property setters defined are
never used, this patch fixes to use property setters to set
property.

Change-Id: Idb274887f383523cea39277b166ec9b46ebcda85
2017-09-27 10:43:43 +09:00
Jenkins
773b20a05f Merge "cleanup test-requirements" 2017-09-26 00:09:48 +00:00
Jenkins
03d6580819 Merge "Update the description for controller node" 2017-09-25 11:08:48 +00:00
Jenkins
afa73238c4 Merge "Update the "IAAS" to "IaaS"" 2017-09-25 10:54:50 +00:00
caoyuan
2467780f9d Update the description for controller node
1. change the controller node description to link
2. correct the link for compute node

Change-Id: Idfdde7f01c38a26dc4962e94431a760a0ed51f82
2017-09-25 03:21:44 +00:00
OpenStack Proposal Bot
25854aabd8 Updated from global requirements
Change-Id: I86b2ed25f98f022597d58335461efc9e0ff61b26
2017-09-24 12:31:19 +00:00
melissaml
e4f4588e69 cleanup test-requirements
python-subunit is not used directly anywhere
and it is dependency of both testrepository
and os-testr
(probably was used by some tox wrapper script before)

Change-Id: I89279430554bc522817c4e2685afef0d95c641dd
2017-09-24 04:40:32 +08:00
caoyuan
1465aa0c5f Update the "IAAS" to "IaaS"
Infrastructure-as-a-Service should short for IaaS

Change-Id: I845fed0c4a1f073dbdea1e8f0e9cdc1655aa3622
2017-09-21 16:38:30 +08:00
caoyuan
e6e0b3dbaa Correct the link for watcher cli
Change-Id: Ic844804278af3abdf5bbb05ea5ef9a1c630da628
2017-09-20 22:17:18 +08:00
Jenkins
d8274e062e Merge "Update the documentation link for doc migration" 2017-09-19 00:06:20 +00:00
lingyongxu
28b9766693 Update the documentation link for doc migration
This patch is proposed according to the Direction 10 of doc
migration(https://etherpad.openstack.org/p/doc-migration-tracking).

Change-Id: I4eb594115e350e28f9136f7003692a1ec0abfcf6
2017-09-18 09:19:33 +00:00
OpenStack Proposal Bot
998e86f6c7 Updated from global requirements
Change-Id: I464b3573c2dbab3d97efbec0280298b0331a3cef
2017-09-16 23:26:49 +00:00
Alexander Chadin
a5e7fd90c2 Fix Watcher DB schema creation
This patch set replaces create_schema with upgrade to fix
apscheduler creation issue. It also fixes pep8 warnings to
d09a5945e4a0_add_action_description_table.py

Change-Id: Ica842d585ee3a9cd67e45eb1d7bb1916573d7c9c
2017-09-15 15:30:38 +03:00
Jenkins
a99a9ae69e Merge "Utils: fix usage of strtime" 2017-09-14 07:28:24 +00:00
licanwei
6e6e5907ee Fix Action 'change_node_power_state' FAILED
The return value of ironic_client.node.set_power_state is None, so it's
useless to return the result.
We should check the node state until it's changed or timeout.

Change-Id: I31f75a2c4a721ce4481e6ae7fb83d154a443dad9
Closes-Bug: #1713655
2017-09-13 23:59:35 -07:00
Jenkins
c887499b4d Merge "Fix incorrect config section name of configure doc" 2017-09-14 02:47:17 +00:00
Jenkins
58e4bf2727 Merge "Remove redundant right parenthesis" 2017-09-14 02:44:43 +00:00
OpenStack Proposal Bot
1df395d31d Updated from global requirements
Change-Id: I52665af336d0a0c765d034368a554005505cf30a
2017-09-14 00:11:17 +00:00
Jenkins
f811c8af48 Merge "Remove the unused rootwrap config" 2017-09-13 15:50:59 +00:00
Jenkins
e447393f18 Merge "iso8601.is8601.Utc No Longer Exists" 2017-09-13 13:13:59 +00:00
gaozx
a25be6498c Fix incorrect config section name of configure doc
Change-Id: I3d1e602f3a4beace516c56979b3b21b5683c1b0a
2017-09-13 16:38:50 +08:00
Jenkins
8e372ee153 Merge "Update the documentation link for doc migration" 2017-09-13 07:41:06 +00:00
aditi
7bc984b84a Fix Gate Failure
This Patch fixes gate failure, encountered in recent version
of oslo_messaging.

Change-Id: I6d8ab882a7c157dcf4f78c805a4ce2d9b1fa3f14
Closes-Bug: #1716476
2017-09-12 16:30:22 +09:00
gaozx
eeee32ad36 Remove redundant right parenthesis
Change-Id: Ibdb295d8d5ff8e49b0bebdb71c9c856f49c3881e
2017-09-11 09:48:42 +08:00
chenghuiyu
3a7fc7a8e5 Utils: fix usage of strtime
As oslo_utils.timeutils.strtime() is deprecated in
version '1.6', and will be removed in a future version.

For more informations:
https://docs.openstack.org/oslo.utils/latest/reference/timeutils.html

Change-Id: I1aca257fbe8b08c3478c5da9639835033b19144a
Partial-Bug: #1715325
2017-09-07 16:56:01 +08:00
zhengwei6082
63697d5a6e Update the documentation link for doc migration
This patch is proposed according to the direction 10 of doc
migration(https://etherpad.openstack.org/p/doc-migration-tracking).

Change-Id: Idf2f369fb68c19efa54a06731bb33dc6fa949790
2017-09-07 09:56:40 +08:00
Sampath Priyankara
887fa746ae iso8601.is8601.Utc No Longer Exists
iso8601.UTC is correct datetime UTC field object.
iso8601 >= 0.1.12 includes only iso8601.UTC for python3
while both UTC and Utc() for python2. Less then 0.1.12
included both UTC and Utc() for both python2/3.

Change-Id: I0f8796fba6725eea013b3f8d9ad33c10a402c524
Closes-Bug: #1715486
2017-09-07 10:42:05 +09:00
Jenkins
e74095da1f Merge "Remove unused efficacy indicators" 2017-09-06 09:50:55 +00:00
zhurong
65c7cd0e02 Remove the unused rootwrap config
Watcher doesn't use rootwrap, but have the rootwrap config.
So remove the unused rootwrap config.

Change-Id: Icc32fc958ca8deb08d7b0e5404cbbe19b3ae98c7
2017-09-06 14:46:09 +08:00
Hidekazu Nakamura
5df54ea3fb Remove unused efficacy indicators
AverageCpuLoad and MigrationEfficacy efficacy indicators are not used.
This patch removes unused indicators.

Change-Id: I2b21defd442c135d26f8fd45f6faf9f67c770bde
2017-09-06 12:05:25 +09:00
Yaguo Zhou
51dba60e01 Replace DbMigrationError with DBMigrationError
because DbMigrationError is deprecated

Change-Id: I75ef338d2e22924997804632d26ae3588c4f719b
2017-09-05 23:31:05 +08:00
Jenkins
a9f33467fb Merge "Replace default gnocchi endpoint type" 2017-09-05 10:48:43 +00:00
Jenkins
4640d88adf Merge "Fix DEFAULT_SCHEMA to validate host_aggreates" 2017-09-05 08:45:35 +00:00
zhengwei6082
154aca3948 Replace default gnocchi endpoint type
The default gnocchi endpoint type is publicURL in gnocchiclient.
This patch replaces default gnocchi endpoint type from
internalURL to publicURL
see https://github.com/openstack/keystoneauth/blob/master/keystoneauth1/adapter.py#L347-L351

Change-Id: I0ba2bde46de3025964affe23ef16cce9e5b4670f
2017-09-05 02:11:42 +00:00
Jenkins
fa7afc89ab Merge "Updated from global requirements" 2017-09-04 08:30:54 +00:00
Jenkins
790548fff0 Merge "Modify display_name in strategy documentation" 2017-09-04 08:28:21 +00:00
Hidekazu Nakamura
a2fa13c8ff Fix gnocchiclient creation
Gnocchiclient uses keystoneauth1.adapter so that adapter_options
need to be given.
This patch fixes gnocchiclient creation.

Change-Id: I6b5d8ee775929f4b3fd30be3321b378d19085547
Closes-Bug: #1714871
2017-09-04 14:52:11 +09:00
Hidekazu Nakamura
4c3c84dee9 Fix DEFAULT_SCHEMA to validate host_aggreates
Audit scope JSON schema should restrict key of host_aggregates
to "id" or "name", but that is not working now.
This patch fixes DEFAULT_SCHEMA to validate host_aggregates.

Change-Id: Iea42da41d61435780e247736599a56c026f47914
Closes-Bug: #1714448
2017-09-04 09:50:49 +09:00
OpenStack Proposal Bot
8f585c3def Updated from global requirements
Change-Id: If2d709b80f1783a5b14c9eda4d15da13c9ba5234
2017-09-02 12:15:38 +00:00
Jenkins
c9a43d8da4 Merge "Update default Nova API version to 2.53(Pike)" 2017-09-02 09:00:07 +00:00
Jenkins
2ea7d61ac8 Merge "Restrict existing strategies to their default scope" 2017-09-02 09:00:02 +00:00
Yumeng_Bao
bbfd6711fc Modify display_name in strategy documentation
Display_name in documentation of each strategy should be like[1].
[1]:https://github.com/openstack/watcher/blob/master/watcher/decision_engine/strategy/strategies/workload_balance.py#L143

Change-Id: I31b16dbb81d824e0189fcf96ea7f6e57a289e59a
2017-09-01 14:48:23 +08:00
shangxiaobj
162aaa75ee [Trivialfix]Fix typos in watcher
Fix the typos in watcher.

Change-Id: I3ab77e2a1f862d3790065de4a6ff6c3ef42f226d
2017-08-31 20:47:57 -07:00
suzhengwei
4cb2b45e3a Restrict existing strategies to their default scope
Diffrent stratege has diffrent default scope, restrict them to their
default scope will avoid usage problems.
1)workload_balancing/thermal_optimization/airflow_optimization goals
  react on enabled nodes, so restrict default scope to compute nodes
  with up state and enabled status.
2)server_consolidation goal react on enabled or disabled nodes, So
  restrict default scope to compute nodes with up state and
  enabled/disabled status.

Change-Id: I7437dee699ee2d3dd227a047196d4d8db811b81e
Closes-Bug: #1714002
2017-09-01 11:21:35 +08:00
Jenkins
50935af15f Merge "Fix to use . to source script files" 2017-09-01 01:31:39 +00:00
Hidekazu Nakamura
cf92ece936 Update default Nova API version to 2.53(Pike)
Services are now identified by uuid instead of database id to ensure
uniqueness across cells.
GET /os-services returns a uuid in the id field of the response
from API microversion 2.53(maximum in Pike)

This patch set updates default Nova API version to 2.53.

Change-Id: Ib9fefb794eda3c9e75c6a2f5cfdb0e682b8955f3
Closes-Bug: #1709544
2017-08-30 14:39:31 +09:00
zhengwei6082
b7c4a0467c Fix to use . to source script files
Adhering to coding conventions. Refer to ``Code conventions`` at
https://docs.openstack.org/contributor-guide/ for details.

Change-Id: I54b93214c0e718465a0ea4ebe063061ef7d6e4b2
2017-08-29 18:01:09 +08:00
Jenkins
c12f132699 Merge "Remove unnecessary dict.keys() method calls (api)" 2017-08-29 06:30:49 +00:00
melissaml
0329dafec9 Fix to use "." to source script files
Adhering to coding conventions. Refer to ``Code conventions`` at
https://docs.openstack.org/contributor-guide/ for details.

Change-Id: I23ff70c9caefc870b3cc9d61cd8c18b534f2ffaf
2017-08-29 02:32:28 +08:00
zhengwei6082
e73ead4807 Update the documentation link for doc migration
Change-Id: If429e5023a252d9b86b227488f73cac863b3c658
2017-08-25 16:58:31 +08:00
Jenkins
cb90f60cc1 Merge "Updated from global requirements" 2017-08-25 06:23:39 +00:00
Jenkins
d7994a2466 Merge "Fix KeyError exception" 2017-08-24 12:40:32 +00:00
OpenStack Proposal Bot
62822fa933 Updated from global requirements
Change-Id: I31aaf37bf1ea73c26d9578abe167b43a24bb6c96
2017-08-24 11:51:24 +00:00
Jenkins
3f0ff1ed7e Merge "Updated from global requirements" 2017-08-24 10:09:43 +00:00
Jenkins
8e3b5c90a6 Merge "Remove watcher_tempest_plugin" 2017-08-24 10:09:24 +00:00
OpenStack Proposal Bot
1c5e254124 Updated from global requirements
Change-Id: I48a42877f8157873f4ea376c72d170d978d5e090
2017-08-24 06:03:14 +00:00
Viktor Varga
39e200e5eb Remove unnecessary dict.keys() method calls (api)
Since iter(dict) is equivalent to iter(dict.keys()), it is unnecessary
to call the keys() method of a dict, the dictionary itself is enough
to be referenced. The shorter form is also considered to be more
Pythonic.

This patch removes the unnecessary dict.keys() method calls in api.
This is a part of a larger patch series that removes dict.keys()
method calls.

TrivialFix

Change-Id: I29000f1f05b90d70109fa01393e97e1ebf450c63
2017-08-23 12:51:54 +02:00
Jenkins
2650b89fe5 Merge "Update the documention for doc migration" 2017-08-22 10:10:33 +00:00
zhengwei6082
d5bcd37478 Update the documention for doc migration
Change-Id: I22dc18e6f2f7471f5c804d4d19c631f81a6e196b
2017-08-22 09:06:06 +00:00
Alexander Chadin
0c4b439c5e Remove watcher_tempest_plugin
In accordance with Queens global goal[1], this patch set
removes watcher tempest plugin from watcher repository since
it is stored as independent repository[2]. Jenkins job
gate-watcher-dsvm-multinode-ubuntu-xenial-nv has been modified,
it uses watcher-tempest-plugin repo now.

[1]: https://governance.openstack.org/tc/goals/queens/split-tempest-plugins.html
[2]: http://git.openstack.org/cgit/openstack/watcher-tempest-plugin/

Change-Id: I4d1207fbd73ee2519a6d40342f5fd3c5d3ee8bc7
2017-08-21 17:41:56 +03:00
OpenStack Proposal Bot
0e43504e44 Updated from global requirements
Change-Id: Idd00808c17ecbca5925f91ea2f1257d097af7892
2017-08-18 11:45:04 +00:00
licanwei
322843b21c Fix KeyError exception
During the strategy sync process,
if goal_id can't be found in the goals table,
will throw a KeyError exception.

Change-Id: I62800ac5c69f4f5c7820908f2e777094a51a5541
Closes-Bug: #1711086
2017-08-17 04:25:53 -07:00
Jenkins
1b413f5536 Merge "Remove pbr warnerrors" 2017-08-17 03:07:46 +00:00
Alexander Chadin
f76a628d1f Remove pbr warnerrors
This change removes the now unused "warnerrors" setting,
which is replaced by "warning-is-error" in sphinx
releases >= 1.5 [1].

[1] http://lists.openstack.org/pipermail/openstack-dev/2017-March/113085.html

Change-Id: I32f078169668be08737e47cd15edbdfba42904dc
2017-08-16 11:54:24 +03:00
Jenkins
3e6ea71cbc Merge "Adjust the action state judgment logic" 2017-08-15 09:10:53 +00:00
Jenkins
e5c3df0c2f Merge "workload balance base on cpu or ram util" 2017-08-15 08:37:58 +00:00
Jenkins
6005d6ebdd Merge "Fix gnocchi repository URL in local.conf.controller" 2017-08-14 09:14:54 +00:00
licanwei
965af1b6fd Adjust the action state judgment logic
Only when True is returned, the action state is set to SUCCEEDED
some actions(such as migrate) will return None if exception raised

Change-Id: I52e7a1ffb68f54594f2b00d9843e8e0a4c985667
2017-08-14 02:12:35 -07:00
Jenkins
daf428ad69 Merge "Removed unnecessary setUp calls in tests" 2017-08-11 09:15:01 +00:00
OpenStack Release Bot
ab64dab646 Update reno for stable/pike
Change-Id: I1c1c855b80ad10e343d1c34e17ed11d8255e9fea
2017-08-11 01:09:58 +00:00
Jenkins
eaa09a4cfc Merge "Fix failure to load storage plugin" 2017-08-10 12:41:52 +00:00
suzhengwei
5c86a54d20 workload balance base on cpu or ram util
By the input parameter "metrics", it makes decision to migrate a VM
base on cpu or memory utilization.

Change-Id: I35cce3495c8dacad64ea6c6ee71082a85e9e0a83
2017-08-09 07:04:10 +00:00
Jenkins
e78f2d073f Merge "[Doc] Fix db creation" 2017-08-09 06:26:57 +00:00
Jenkins
47004b7c67 Merge "change ram util metric" 2017-08-09 06:26:48 +00:00
Jenkins
9ecd22f4c8 Merge "Fix exception.ComputeNodeNotFound" 2017-08-08 08:03:28 +00:00
Jenkins
daee2336a4 Merge "get_config_opts method was overwritten" 2017-08-08 01:05:56 +00:00
Jenkins
893b730a44 Merge "Replace map/filter lambda with comprehensions" 2017-08-08 00:39:51 +00:00
Alexander Chadin
d5b6e0a54f [Doc] Fix db creation
This patch set fixes command to create db schema.

Closes-Bug: #1709048
Change-Id: I1214313307fe0375d42e1a22562cd16ae867795d
2017-08-07 15:02:41 +00:00
Fanis Kalimullin
13b89c8dd2 get_config_opts method was overwritten
outlet_temperature strategy relies on a datasource config parameter,
which can be either "ceilometer" or "gnocchi". This patch overrides
get_config_opts method of base class to allow specify datasource.

Change-Id: I551401039e26816568a04c7f2151d5b3c7ed269a
Closes-Bug: #1709024
2017-08-07 11:05:19 +00:00
Jenkins
7a300832b2 Merge "Fix compute CDM to include disabled compute node" 2017-08-07 10:23:46 +00:00
Viktor Varga
d218e6f107 Replace map/filter lambda with comprehensions
List comprehensions and generator expressions are considered to be more
Pythonic (and usually more readable) than map and filter with lambda.
This patch replaces four usages of [map|filter](lambda ...) with the
appropriate list comprehension or generator expression.

TrivialFix

Change-Id: Ifda9030bb8aa196cb7a5977a57ef46dfefd70fa6
2017-08-07 13:22:40 +03:00
suzhengwei
d2f70f9d6f change ram util metric
Metric 'memory.usage' depends on balloon driver,
and shows the memory usage inside guest-os,
while 'memory.resident' represents volume of RAM
used by the instance on the physical machine
So, it is more reasonable to use 'memory.resident'
when calculating node utilization
by gathering instances utilization of the node.

Change-Id: I12dff5176bcf6cb103aa44cafd54f9ecd7170864
2017-08-07 16:04:19 +08:00
Jenkins
4951854f76 Merge "Change exception class from monascaclient" 2017-08-07 08:02:22 +00:00
Jenkins
ffbd263888 Merge "[Doc] Update software version" 2017-08-07 07:41:02 +00:00
Hidekazu Nakamura
985c6c49f9 Fix failure to load storage plugin
Watcher fails to load storage plugin in case there is no installed
Cinder in OpenStack services.

This patch set adds collector_plugins parameter under collector
section in watcher.conf. If plugin name is in collector_plugins,
The plugin is loaded.

Change-Id: Ie3c3543216c925d49b772bf5fe3773ca7d5ae437
Closes-Bug: #1707603
2017-08-07 16:40:40 +09:00
Jenkins
adac2c0c16 Merge "Fix ironic client input parameter" 2017-08-07 07:39:53 +00:00
Jenkins
f700ca4e0f Merge "Fix incorrect action status in notifications" 2017-08-07 07:21:08 +00:00
licanwei
5b741b2a4d Fix exception.ComputeNodeNotFound
compute_model.get_node_by_uuid(node_uuid) will raise a exception
when the compute node isn't in the compute model.

Closes-Bug: #1709004

Change-Id: I667a9dbfcf67f9f895976aadd5300bbea2ffe6f0
2017-08-06 23:16:16 -07:00
OpenStack Proposal Bot
382f641b22 Updated from global requirements
Change-Id: Ie647221a3ab055e7b150d65ffb9287b44ef834cb
2017-08-07 00:56:18 +00:00
Tomasz Trębski
5da5db8b56 Change exception class from monascaclient
monascaclient was recently migrated to
use 'osc' library. Due to that, exception
classes has been changed. This commit adjusts
the exception class to recently released
monascaclient==1.7.0

Depends-On: Ie647221a3ab055e7b150d65ffb9287b44ef834cb
Change-Id: Icfef345c4269ac4cb682049f22a43fdab3d39845
2017-08-04 08:55:10 +00:00
Hidekazu Nakamura
5cc4716a95 Fix gnocchi repository URL in local.conf.controller
This patch set updates gnocchi repository URL in local.conf.controller
bacause it moved from under openstack to their own repository.

Change-Id: I53c6efcb40b26f83bc1867564b9067ae5f50938d
2017-08-04 09:23:02 +09:00
Jenkins
c4888fee63 Merge "Update the documention for doc migration" 2017-08-03 03:21:24 +00:00
Jenkins
76f85591ea Merge "[Doc] Add Configure Cinder Notifications" 2017-08-02 10:25:13 +00:00
Jenkins
b006cadd22 Merge "Ignore autogenerated sample config file" 2017-08-02 10:23:15 +00:00
Jenkins
1fd2053001 Merge "[Doc] Add cinder to architecture diagram" 2017-08-02 10:22:12 +00:00
Jenkins
6a920fd307 Merge "Fix show db version in README" 2017-08-02 08:20:36 +00:00
Jenkins
514eeb75ef Merge "Update State diagram of Action Plan" 2017-08-02 07:08:52 +00:00
licanwei
b43633fa6d Fix ironic client input parameter
The correct parameter is 'os_endpoint_type'

Change-Id: I80b03af8c55ec1d89ff1fbdd9894115b819ccde4
2017-08-01 22:35:01 -07:00
licanwei
d5a7d7674c Fix show db version in README
watcher-db-manage version: Print the current version

Change-Id: Ie08eb682879b2c071f724a6847094650047bde34
2017-08-01 21:54:48 -07:00
Gábor Antal
b532355232 Removed unnecessary setUp calls in tests
TrivialFix

Change-Id: I057d03466b058a42be8ec57dbc42cbd67b75cc3c
2017-08-01 10:50:34 +02:00
Jenkins
bce87b3d05 Merge "Modification of statistic_aggregation method" 2017-08-01 08:12:33 +00:00
Hidekazu Nakamura
783627626c Fix compute CDM to include disabled compute node
Currently compute CDM excludes disabled compute node.
This patch set fixes compute CDM to include disabled compute node.

Change-Id: I8236bb73e0d9bb242251c2abfb59ad5693087afa
Closes-Bug: #1685787
2017-08-01 16:48:47 +09:00
aditi
3043e57066 Update State diagram of Action Plan
This patch updates the state machine diagram for action plan, It
includes new state "cancelling" which is introduced by actionplan
cancel operation

Change-Id: I0af59f2164922c56d59fbad8018e2aecfef97098
2017-08-01 04:49:14 +00:00
Jenkins
be8b163a62 Merge "Added Actuator Strategy" 2017-08-01 00:30:05 +00:00
mergalievibragim
4f38595e4e Modification of statistic_aggregation method
In this patch feching resource_id by resource's original_id was added to
statistic_aggregation method.

Closes-Bug: #1707653 
Change-Id: I70b9346146f810e2236ccdb31de4c3fedf200568
2017-07-31 14:03:18 +00:00
aditi
30def6f35b Fix incorrect action status in notifications
This patch fixes incorrect action status in action execution
notification.

Change-Id: I1859f6183e2b4f8f380b8c9a13e3e0b7feb4b8e2
Closes-Bug: #1706860
2017-07-31 11:06:47 +00:00
Vincent Françoise
0b31828a01 Added Actuator Strategy
This strategy now allow us to create action plans with an explicit
set of actions.

Co-Authored-By: Mikhail Kizilov <kizilov.mikhail@gmail.com>
Change-Id: I7b04b9936ce5f3b5b38f319da7f8737e0f3eea88
Closes-Bug: #1659243
2017-07-31 10:52:07 +00:00
Jenkins
b5ac97bc2d Merge "Fix continuous audit fails once it fails" 2017-07-31 07:41:57 +00:00
Hidekazu Nakamura
398974a7b0 [Doc] Update software version
1. Update python version from 3.4 to 3.5
2. Update Ubuntu version from 14.04 to 16.04
3. Update Fedora version from 19+ to 24+

Change-Id: Ic5e9bbd126e10697300c6ffd51ff55d0b815d5ca
2017-07-31 15:12:41 +09:00
Hidekazu Nakamura
3a29b4e710 Fix continuous audit fails once it fails
Currently continuous audit fails once it fails
because continous audit tries to remove job
even if job is not exists.

This patch set fixes it.

Change-Id: Ic461408c97d71e14c57e368f8436b26fe355fa4e
Closes-Bug: #1706857
2017-07-31 11:01:04 +09:00
OpenStack Proposal Bot
8024dbf913 Updated from global requirements
Change-Id: If6105a3b911757ac3204e9c73e793b5cee58c1a8
2017-07-28 13:02:45 +00:00
Jenkins
529b0d34ee Merge "Fix Hardcoded availability zone in nova-helper" 2017-07-28 08:38:30 +00:00
aditi
dac0924194 Fix Hardcoded availability zone in nova-helper
This patch fixes the hardcoded value of availability zone
in nova-helper, Now nova api is used to get the availability zone
of destination node

Change-Id: I4c5a34946ed404df5bbfe34ce99873d32772dbf4
2017-07-28 03:55:13 +00:00
Jenkins
3bb66b645c Merge "Saving Energy Strategy" 2017-07-27 12:32:21 +00:00
Jenkins
63cebc0bfa Merge "dynamic action description" 2017-07-27 12:09:44 +00:00
Yumeng Bao
5a28ac772a Saving Energy Strategy
Add strategy to trigger "power on" and "power off" actions in watcher.

Change-Id: I7ebcd2a0282e3cc7b9b01cf8c744468ce16c56bb
Implements: blueprint strategy-to-trigger-power-on-and-power-off-actions
Co-Authored-By: licanwei <li.canwei2@zte.com.cn>
2017-07-27 19:04:26 +08:00
Jenkins
fe7ad9e42b Merge "Add volume migrate action" 2017-07-27 09:40:14 +00:00
Jenkins
711de94855 Merge "Add release notes for Pike" 2017-07-27 09:40:03 +00:00
licanwei
5817f6833c Fix gate-watcher-python27-ubuntu-xenial FAILURE
There is no exc.HTTPUnauthorized in monascaclient now.

Change-Id: I1942b32d4581d1770819aa083a640f394c17d25a
Closes-Bug: #1706858
2017-07-27 15:20:51 +08:00
licanwei
a24b7f0b61 dynamic action description
Add a new table to save the mapping
Add logic to update the table when action loading
Add logic to show the action description

Change-Id: Ia008a8715bcc666ab0fefe444ef612394c775e91
Implements: blueprint dynamic-action-description
2017-07-26 20:42:01 -07:00
Hidekazu Nakamura
c03668cb02 [Doc] Add cinder to architecture diagram
Cinder data model was added in Pike cycle.
This patch set adds cinder to architecture diagram.

Change-Id: Ibf590996494f4e6ebcc59b26fbd562d079cea9ef
2017-07-26 21:50:33 +09:00
Alexander Chadin
aab18245eb Add release notes for Pike
This patch set adds release notes for Pike release.

Change-Id: I4a962ed3d20ca746a470a7ee8b2de2cf703f94f5
2017-07-26 10:45:15 +03:00
Hidekazu Nakamura
c12178920b [Doc] Add Configure Cinder Notifications
Cinder data model was added in Pike cycle and that needs
configuration in cinder.conf for refreshing the model in
real time.

This patch set adds Add Configure Cinder Notifications section
for explaining the configuration.

Change-Id: I41cc870e2d47c56fd7c9fcdd6f03c95fa939c3f2
2017-07-26 16:31:29 +09:00
zhengwei6082
f733fbeecd Update the documention for doc migration
Change-ID: Ic3dc2a93caac99f1dbe3547350a87fc01d0d4181
2017-07-26 15:26:13 +08:00
Jenkins
67754102c8 Merge "Remove all sphinx warnings" 2017-07-26 01:07:44 +00:00
Jenkins
6545f9c2ad Merge "Update the documention for doc migration" 2017-07-25 13:25:42 +00:00
Jenkins
583c23b9d9 Merge "Update URLs in documents according to document migration" 2017-07-25 13:25:36 +00:00
Jenkins
ea9ab8d6e5 Merge "Update default ironic endpoint type" 2017-07-25 13:20:59 +00:00
Alexander Chadin
8fd57276be Remove all sphinx warnings
This patch set fixes all sphinx warnings and makes
https://docs.openstack.org/watcher/latest/configuration/index.html
available.

Change-Id: I76a715c10cb1d582419ff37869093fa9b8678310
2017-07-25 07:31:53 +00:00
zhengwei6082
1d197e5e8f Update the documention for doc migration
Change-Id: I003f4b0abde102b07646ef180e2506bca19162ff
2017-07-25 06:22:03 +00:00
Hidekazu Nakamura
b33337b7bd Replace voluptuous with JSONSchema in BaseAction
Now that we replaced voluptuous with JSONSchema in all actions,
this patch replaces voluptuous with JSONSchema in BaseAction
and removes validate_parameters method in each action.

Partially Implements: blueprint jsonschema-validation

Change-Id: I07c907ddfa4a568d7fff42776df02218330d56a0
2017-07-25 13:19:13 +09:00
melissaml
d0b9b6ce38 Update URLs in documents according to document migration
Change-Id: I52396f2bed4b0fde889b37cabb6a15225a63cc0d
2017-07-25 10:07:44 +08:00
OpenStack Proposal Bot
3cd847e2ab Updated from global requirements
Change-Id: I5631ff4426442335051cc55c1af2f855b08e19f7
2017-07-23 19:11:17 +00:00
Jenkins
ba907f4905 Merge "Remove testenv for install-guide" 2017-07-22 01:20:07 +00:00
Alexander Chadin
8e787d0a87 Remove testenv for install-guide
Since install-guide is placed in doc/source/
we don't need additional env to build it.

Change-Id: Idcc711a4d5f4a88e960f22795b7e101ae388551e
2017-07-21 12:54:06 +03:00
Jenkins
b45c7b678e Merge "Add title to administrator guide" 2017-07-21 09:37:52 +00:00
Jenkins
ec64e04cc5 Merge "[Doc] Add gnocchi to system architecture diagram" 2017-07-21 07:41:31 +00:00
Jenkins
f206c2d425 Merge "Enable migration to rely on nova-scheduler" 2017-07-21 02:44:31 +00:00
Hidekazu Nakamura
bff76de6f1 Add volume migrate action
This patch adds volume migrate action.

Change-Id: I9f46931d2a7edff4c727d674ec315924b9ae30c2
Implements: blueprint volume-migrate-action
2017-07-21 11:27:37 +09:00
Jenkins
1500bee1c6 Merge "Fix devstack plugin" 2017-07-20 09:27:49 +00:00
Jenkins
9f813fb90d Merge "Update weekly meetings time in docs" 2017-07-20 09:23:31 +00:00
Alexander Chadin
8167eec625 Fix devstack plugin
This patch set fixes devstack plugin by removing head
keyword from watcher-db-manage.

It is related to https://review.openstack.org/#/c/483825/

Change-Id: I3dcea6ae799c94a882e68d66920c5cd87d83d85e
2017-07-20 08:48:57 +00:00
aditi
6731851383 Enable migration to rely on nova-scheduler
This patch removes the requirement to specify destination node,
for migrate action. There can be some strategies that wants to rely
on nova-scheduler for destination node. It will not impact any current
strategy behavior.

Change-Id: Ia12b2f0b8369e632a7959b28e485d86b6cff83e9
Closes-Bug: #1691056
2017-07-20 05:25:08 +00:00
Jenkins
0ddfa278ef Merge "remove useless logging" 2017-07-19 12:42:52 +00:00
Jenkins
aae7699bc5 Merge "Fix dbmanage upgrade and downgrade" 2017-07-19 12:37:59 +00:00
licanwei
8521608e19 Update default ironic endpoint type
The default ironic endpoint type is publicURL in ironicclient.

Change-Id: Ief78c085adafb08abb09c77af7429fbe6c3d7405
2017-07-19 11:04:12 +08:00
Jenkins
2266e2baa3 Merge "New cron type for audit interval" 2017-07-19 02:46:25 +00:00
OpenStack Proposal Bot
e08a0e9af2 Updated from global requirements
Change-Id: Ib1f8d483a2286fde752a5051f8d3a14d1fee63a8
2017-07-18 01:59:22 +00:00
licanwei
844577e9cc remove useless logging
There are many uselees logging in the decision log file:
Arguments dropped when creating context: {u'global_request_id': None}

Change-Id: I7583b2ff6ea1cc15173536ca1cf08cc9f0ecb20d
Closes-Bug: #1704736
2017-07-17 16:15:23 +08:00
Alexander Chadin
0b44492da7 New cron type for audit interval
This patch set adds cron supporting for audit.

Implements: blueprint cron-based-continuous-audits
Change-Id: I8570bebb13332dfba80185e912aeda45b6b4cd70
2017-07-14 11:50:46 +03:00
licanwei
b146e29c39 Fix dbmanage upgrade and downgrade
The argument is '--revision'

Change-Id: Icf3a37ed42dd1dfe4fc9c52525dd4f0fb851417c
2017-07-14 14:12:41 +08:00
Alexander Chadin
0cabd5bd3a Update weekly meetings time in docs
Change-Id: Ic6ebbda653d5b90d6e1e3d866f4180e6d6e07452
2017-07-13 15:52:28 +03:00
Jenkins
728acc091b Merge "Abort operation for live migration" 2017-07-13 09:05:56 +00:00
Hidekazu Nakamura
7340decf73 Add title to administrator guide
As of now, Watcher administrator guide has no title[1]
This patch fix it.

[1] https://docs.openstack.org/watcher/latest/admin/

Change-Id: I995faf02f9217187b824974ee391918dfd6ed920
2017-07-13 16:01:26 +09:00
Jenkins
84e8eb4cb0 Merge "Cinder model integration" 2017-07-12 14:55:10 +00:00
aditi
5283871af5 Abort operation for live migration
This patch adds abort operation for live migration
to support abort in cancel action plan.

Change-Id: I458e93d9bd09dc4cf80cc941104129fc7600a6b1
Partially-Implements: blueprint cancel-action-plan
2017-07-12 06:09:23 +00:00
Hidekazu Nakamura
916fd73186 [Doc] Add gnocchi to system architecture diagram
This patch set adds gnocchi to system architecture diagram.

Change-Id: I8e3a53910ad9ea861f174a6f178199626ed2247f
2017-07-11 00:16:55 +09:00
Yumeng Bao
22ee0aa8f7 Ignore autogenerated sample config file
Change-Id: Ief43668feb06c136c87a2218e9d7671c7809dcbc
2017-07-10 19:16:36 +08:00
xiaoxue
63c1aabdd2 bug fix: Can't get sample through CeilometerHelper
wrong parameter passing of function "query_sample"
the default parameter will be recognized as "user_id"

Change-Id: I293b130c3f709dc93cd4b1b7382ae8895a54765d
Closes-Bug: #1703297
2017-07-10 14:37:33 +08:00
Jenkins
03569db6c3 Merge "move doc/source/webapi content to doc/source/api" 2017-07-07 08:14:07 +00:00
Jenkins
19cf05fd75 Merge "Replace voluptuous with JSONSchema to validate change_node_power_state" 2017-07-07 05:49:51 +00:00
Jenkins
251ca83ddc Merge "Update Documentation link in README" 2017-07-07 05:47:06 +00:00
akihito-inoh
5b349b4e89 Replace voluptuous with JSONSchema to validate change_node_power_state
Now in watcher,both JSONSchema and voluptuous are used to validate
JSON payloads. We want to remove voluptuous and Use
JSONSchema as our only JSON validation tool to keep consistence
and also to make it easier to expose the validation schema
through our API in future work.

In this patch, we replace voluptuous with JSONSchema to validate
the change_node_power_state action in watcher applier.

Partially Implements: blueprint jsonschema-validation

Change-Id: If9ffe5e0b107e0da5673247e4d5ec9917790827f
2017-07-06 15:58:49 +00:00
Alexander Chadin
b0d03ae6b8 move doc/source/webapi content to doc/source/api
Change-Id: I5b1023f2d7ac2760895bba8f7d0cb10260061754
2017-07-06 15:55:12 +03:00
Jenkins
78de029a57 Merge "Adapt watcher documentation for new standards" 2017-07-06 10:23:29 +00:00
Hidekazu Nakamura
489356da3a Cinder model integration
This patch adds Cinder model integration.

Change-Id: I31d5bc5e2bbed885d074d66bf7999d42cec15f10
Implements: blueprint cinder-model-integration
2017-07-05 08:55:10 +09:00
Alexander Chadin
db4339c371 Update Documentation link in README
This patch set updates documentation link in README
because of doc migrations.

Depends-On: Iecb4f60efb015a56b9b37331859848b287112842
Change-Id: I5b8a5ec8a328ae275fe6271965ea0077ae301814
2017-07-04 16:01:07 +03:00
Alexander Chadin
c7ec186576 Adapt watcher documentation for new standards
This patch set makes the following changes:

 * Add index file to each subdirectory of doc/source
 * Update doc/source/index.rst with new links
 * Move content of install-guide to the doc/source/install
 * Minor changes

Depends-On: Ifc5512c0e2373cf3387e0e0498268eab092e52bb
Change-Id: Iecb4f60efb015a56b9b37331859848b287112842
2017-07-04 15:49:24 +03:00
Hidekazu Nakamura
12bdfca0d9 Replace default neutron endpoint type
The default neutron endpoint type is publicURL in neutronclient.
This patch replaces default neutron endpoint type from
internalURL to publicURL.

Change-Id: I8162b6178051df5f086488ecfb5d0bdc569ef9cd
Related-Bug: #1686298
2017-07-01 19:51:06 +09:00
Jenkins
5f179609d0 Merge "Replace default glance endpoint type" 2017-06-30 17:21:28 +00:00
aditi
a842bc1c91 switch to openstackdocs theme.
Change-Id: I95a1f6813225134fafdc22384fb8a822ab9e013d
2017-06-29 08:50:03 +00:00
Hidekazu Nakamura
5eb1d91335 Replace default glance endpoint type
The default glance endpoint type is publicURL in glanceclient.
This patch replaces default glance endpoint type from
internalURL to publicURL.

Change-Id: I39451ba89f191693475a694bd5c9045bf3bf539a
Related-Bug: #1686298
2017-06-29 16:42:39 +09:00
Jenkins
264b0fe9a1 Merge "Noisy Neighbor Strategy" 2017-06-28 12:06:15 +00:00
Jenkins
a487a4efc8 Merge "Fix test_list_with_limit failed" 2017-06-28 11:39:51 +00:00
Jenkins
034f0bf68a Merge "Replace the usage of 'manager' with 'os_primary'" 2017-06-28 08:51:02 +00:00
licanwei
87b95bb639 Fix test_list_with_limit failed
There is no action plan if creating audit was cancelled.
In this case, we just return none.

Change-Id: Ia7a93dab5978d181557d7dd7499e83655aec6f40
Closes-Bug: #1700901
2017-06-28 14:40:46 +08:00
Jenkins
e081ac91b4 Merge "Updated from global requirements" 2017-06-28 06:09:56 +00:00
rajat29
3574dba9da Replace the usage of 'manager' with 'os_primary'
In tempest, alias 'manager' has been moved to 'os_primary'
in version Pike, and it will be removed in version Queens.
This patch is to replace the usage of 'manager' with 'os_primary'.

For other details, please check [1] and [2]
[1] https://review.openstack.org/#/c/468036/
[2] https://review.openstack.org/#/c/463484/

Change-Id: I582758c42f61a85a2fd4aac5f7a97cd6021ecf68
2017-06-28 10:36:43 +05:30
Jenkins
8fc9c6c1d8 Merge "avoid repeated actions in the solution" 2017-06-27 23:48:16 +00:00
OpenStack Proposal Bot
51f17f1d7d Updated from global requirements
Change-Id: I5298796b492396d0ecfccbcf601c11069c20b624
2017-06-27 12:25:18 +00:00
Jenkins
313f156394 Merge "Update .gitignore" 2017-06-27 11:36:03 +00:00
suzhengwei
129de26419 avoid repeated actions in the solution
Change-Id: If163aee969b51764d69d42655c05e0651e4f150c
2017-06-27 09:02:27 +00:00
Jenkins
d38bc4e716 Merge "node.status for vm_workload_consolidation" 2017-06-27 08:34:33 +00:00
Jenkins
6ffa5feaaf Merge "Fix get_action_plan_list filter error" 2017-06-27 08:33:50 +00:00
Jenkins
bdd3a6ab89 Merge "Pass environment variables of proxy to tox" 2017-06-27 07:37:31 +00:00
iswarya_vakati
8c5f363844 Update .gitignore
Because egg* already ignores egg-info.

Change-Id: I0afedfa82bc1c91d40e42f21fdcd90eccc0faacf
2017-06-26 17:30:19 +05:30
Jenkins
e61140edfb Merge "Enable some off-by-default checks" 2017-06-25 12:07:09 +00:00
Kien Nguyen
abc019829f Pass environment variables of proxy to tox
When a development environment is under a proxy, tox is failed even if
environment variables of the proxy are set.

This patch fix this problem. Refer patch set [1]

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

Change-Id: I6c0b896a6de1b7193dd4b77b6bc4433d0c75732d
2017-06-25 18:36:45 +07:00
Jenkins
0dd5826dd3 Merge "fix Keyerror in test_nova_cdmc" 2017-06-24 03:41:26 +00:00
zhengwei6082
227a9e9b63 Enable some off-by-default checks
Some of the available checks are disabled by default, like:
[H106] Don’t put vim configuration in source files
[H203] Use assertIs(Not)None to check for None

Change-Id: I369cff1c0f7f3cd3f5bcf3785b6904c9326c6759
2017-06-23 17:35:08 +08:00
Jenkins
5b6768140f Merge "Replace voluptuous with JSONSchema to validate sleep action" 2017-06-21 14:39:14 +00:00
Jenkins
1ac7fbec34 Merge "Updated from global requirements" 2017-06-21 10:01:02 +00:00
Jenkins
ebb8885ece Merge "Add action for compute node power on/off" 2017-06-21 09:59:13 +00:00
Jenkins
3fb4cadd76 Merge "Replace voluptuous with JSONSchema to validate resize action" 2017-06-21 09:45:39 +00:00
OpenStack Proposal Bot
c1d3f8094b Updated from global requirements
Change-Id: I1a5694edcdeefad2ee93b0c893f79c1ddf792692
2017-06-19 21:15:54 +00:00
licanwei
59649f6a81 Fix get_action_plan_list filter error
When using 'query.filter_by(deleted_at=None)'
Will generate the incorrect SQL 'audits.deleted_at', as below:
SELECT * FROM action_plans INNER JOIN audits ON audits.id =
action_plans.audit_id WHERE audits.uuid = '' AND
audits.deleted_at IS NULL ORDER BY action_plans.id ASC

The correct filter field is 'action_plans.deleted_at'

Change-Id: Ie05f35233f78e82bc7af2c26c9effd62ea5f86ab
Closes-Bug: #1698720
2017-06-19 16:23:05 +08:00
suzhengwei
045404095d node.status for vm_workload_consolidation
The primary usage of "node.state" is wrong, it should be 'node.status'.
So correct it and refactor the method 'get_state_str'.

Change-Id: I9004c85bfb09f9b41fc56ecb5a56122d523a661f
2017-06-16 07:04:08 +00:00
Prudhvi Rao Shedimbi
606a340b5b Noisy Neighbor Strategy
Added strategy to identify and migrate a Noisy Neighbor - a low priority VM
that negatively affects peformance of a high priority VM by over utilizing
Last Level Cache.

Partially Implements: blueprint noisy-neighbor-strategy

Change-Id: Ia13f7e91a695024410b8f3b3d3d1646a0dd687d4
2017-06-15 14:51:10 -07:00
OpenStack Proposal Bot
35fdbbe16e Updated from global requirements
Change-Id: I1fea346ba9a7f592d456101e09d00c45a91ff311
2017-06-15 16:37:35 +00:00
Yumeng_Bao
2db279e019 fix Keyerror in test_nova_cdmc
fix keyerror in watcher.tests.decision_engine.cluster.test_nova_cdmc.
TestNovaClusterDataModelCollector.test_nova_cdmc_execute

Change-Id: I44810ae539d8783173dfbb9dd462101e21025802
Closes-Bug: #1698123
2017-06-15 19:08:59 +08:00
Jenkins
986ba9872f Merge "Replace voluptuous with JSONSchema to validate migration action" 2017-06-15 06:21:05 +00:00
Jenkins
44a5a1573c Merge "Replace voluptuous with JSONSchema to validate nop action" 2017-06-14 14:59:22 +00:00
Jenkins
fe34b420a5 Merge "Remove deprecated oslo_messaging.get_transport" 2017-06-14 13:13:34 +00:00
Jenkins
43da4a6d21 Merge "Replace voluptuous with JSONSchema to validate change_nova_service_state" 2017-06-14 13:12:34 +00:00
Jenkins
7ba1bf2237 Merge "Remove log translations and hacking" 2017-06-14 07:41:50 +00:00
Jenkins
206bb413e2 Merge "fix multinode tempest test failure" 2017-06-14 02:27:25 +00:00
licanwei
1188d4263d Add action for compute node power on/off
Add action for compute node power on/off

Change-Id: I7b0c0a7500f72f49af8201547640b2322c64baff
Implements: blueprint add-power-on-off
2017-06-13 15:07:33 +08:00
Yumeng_Bao
1451d9c134 Replace voluptuous with JSONSchema to validate migration action
Now in watcher,both JSONSchema and voluptuous are used to validate
JSON payloads. We want to remove voluptuous and Use
JSONSchema as our only JSON validation tool to keep consistence
and also to make it easier to expose the validation schema
through our API in future work.

In this patch, we replace voluptuous with JSONSchema to validate
the migration action in watcher applier.

Partially Implements: blueprint jsonschema-validation

Change-Id: I02bff5db9bd06567bcc33b61a316c42c805bb20e
2017-06-12 17:40:07 +08:00
OpenStack Proposal Bot
6d739ae1d0 Updated from global requirements
Change-Id: I8efcebd4dbbaa7fd35085d6378907e5ffa0dd27b
2017-06-10 11:50:38 +00:00
Yumeng_Bao
f2751b4818 Replace voluptuous with JSONSchema to validate change_nova_service_state
Now in watcher,both JSONSchema and voluptuous are used to validate
JSON payloads. We want to remove voluptuous and Use
JSONSchema as our only JSON validation tool to keep consistence
and also to make it easier to expose the validation schema
through our API in future work.

In this patch, we replace voluptuous with JSONSchema to validate
the change_nova_service_state action in watcher applier.

Partially Implements: blueprint jsonschema-validation

Change-Id: I09a03fff96d9555024a74ba255c6951affc39de8
2017-06-10 13:51:25 +08:00
Yumeng_Bao
e2bf82607e Replace voluptuous with JSONSchema to validate resize action
Now in watcher,both JSONSchema and voluptuous are used to validate
JSON payloads. We want to remove voluptuous and Use JSONSchema
as our only JSON validation tool to keep consistence and also
to make it easier to expose the validation schema through
our API in future work.

In this patch, we replace voluptuous with JSONSchema to validate
the resize action in watcher applier.

Partially Implements: blueprint jsonschema-validation

Change-Id: I0ee4ba010a9f437658af81d5c971449aefc7f9c4
2017-06-10 13:40:29 +08:00
Yumeng_Bao
d76b5d2f7e Replace voluptuous with JSONSchema to validate sleep action
Now in watcher,both JSONSchema and voluptuous are used to validate
JSON payloads. We want to remove voluptuous and Use
JSONSchema as our only JSON validation tool to keep consistence
and also to make it easier to expose the validation schema
through our API in future work.

In this patch, we replace voluptuous with JSONSchema to validate
the sleep action in watcher applier.

Partially Implements: blueprint jsonschema-validation

Change-Id: I3032490236536a11e7045a56ad0bd40ef979407e
2017-06-10 13:22:36 +08:00
Yumeng_Bao
69730d80b2 Replace voluptuous with JSONSchema to validate nop action
Now in watcher,both JSONSchema and voluptuous are used to validate
JSON payloads. We want to remove voluptuous and Use
JSONSchema as our only JSON validation tool to keep consistence
and also to make it easier to expose the validation schema
through our API in future work.

In this patch, we replace voluptuous with JSONSchema to validate
the nop action in watcher applier.

Partially Implements: blueprint jsonschema-validation

Change-Id: Idf42b3359c36ac9480bd1f1bdd31e756214628ef
2017-06-09 13:14:29 +08:00
Ngo Quoc Cuong
17aa1122da Remove log translations and hacking
Log translation is no longer used, remove translate functions

Change-Id: Ibe205266debd6d39dab0a652a327ab19081ff27a
2017-06-08 09:48:26 +07:00
Ngo Quoc Cuong
d0f5a9fdf5 Remove deprecated oslo_messaging.get_transport
DeprecationWarning:
Using function/method 'oslo_messaging.transport.get_transport()'
is deprecated: use get_rpc_transport or get_notification_transport.

Replace get_transport with get_rpc_transport.

Change-Id: I13455842235a16463e61e5500c9e250a5cc9f86e
2017-06-08 08:34:39 +07:00
Jenkins
32dacdca8b Merge "Cancel Action Plan" 2017-06-07 14:09:32 +00:00
Jenkins
fbfb7159e3 Merge "fix clod_migrate problem" 2017-06-07 10:26:13 +00:00
aditi
d7a44739a6 Cancel Action Plan
This patch adds feature to cancel action plan in watcher.
A General flow from watcher-api to watcher-applier is implemented.

action plan cancel can cancel any [ongoing, pending, recommended]
action plan, it will update the action states also to "cancelled".
For ongoing actions in action plan, actions needs to be aborted.
Seperate patches will be added to support abort operation
in each action.

Notification part is addressed by a seperate blueprint.
https://blueprints.launchpad.net/watcher/+spec/notifications-actionplan-cancel

Change-Id: I895a5eaca5239d5657702c8d1875b9ece21682dc
Partially-Implements: blueprint cancel-action-plan
2017-06-07 05:36:18 +00:00
licanwei
65c63a9351 fix multinode tempest test failure
fix all five tempest tests:
watcher_tempest_plugin.tests.api.admin.test_service.
TestShowListService.test_show_service

watcher_tempest_plugin.tests.api.admin.test_service.
TestShowListService.test_show_service_with_links

tearDownClass (watcher_tempest_plugin.tests.api.admin.
test_action_plan.TestCreateDeleteExecuteActionPlan)

watcher_tempest_plugin.tests.scenario.test_execute_basic_optim
.TestExecuteBasicStrategy.test_execute_basic_action_plan

watcher_tempest_plugin.tests.scenario.test_execute_workload_balancing
.TestExecuteWorkloadBalancingStrategy
.test_execute_workload_stabilization

Change-Id: I4d8945cf2dedea3fa32029d6c07d24a411c1f2e4
Closes-Bug: #1695225
2017-06-07 11:56:23 +08:00
OpenStack Proposal Bot
58d86de064 Updated from global requirements
Change-Id: I65ae1ac5170cf675d8c396ef3b7166bafc19190e
2017-06-06 06:14:58 +00:00
Yumeng Bao
8d84da307b Add rm to whitelist_externals in tox.ini
Fix the following WARNING:

WARNING:test command found but not installed in testenv
  cmd: /bin/rm
  env: /home/jenkins/workspace/gate-watcher-python27-ubuntu-xenial/.tox/py27
Maybe you forgot to specify a dependency? See also the whitelist_externals envconfig setting.

Change-Id: Ie091bd64b6a87c30535ada34daf9d594aa3fdd41
2017-06-05 19:10:28 +08:00
Jenkins
01e865edbf Merge "Replace default cinder endpoint type" 2017-06-05 08:37:45 +00:00
Jenkins
b4b3856f14 Merge "Add action description" 2017-06-02 08:31:21 +00:00
Jenkins
67d065e02a Merge "Remove usage of parameter enforce_type" 2017-06-02 01:26:10 +00:00
Jenkins
891a351a04 Merge "Watcher official install-guide" 2017-06-01 04:38:16 +00:00
Feng Shengqin
f47fd9ac5e Remove usage of parameter enforce_type
Oslo.config deprecated parameter enforce_type and change
its default value to True. Remove the usage of it to avoid
DeprecationWarning: "Using the 'enforce_type' argument is
deprecated in version '4.0' and will be removed in version
'5.0': The argument enforce_type has changed its default
value to True and then will be removed completely."

Change-Id: I59621664773ee5ad264e6da9b15231f30dbb9c40
Closes-Bug: #1694616
2017-06-01 10:13:20 +08:00
Hidekazu Nakamura
7b766680b0 Replace default cinder endpoint type
The default cinder endpoint type is publicURL in cinderclient.
This patch replaces default cinder endpoint type from
internalURL to publicURL.

Change-Id: Ie6951086e4656bd83195dab151dbaaf948113a7c
Related-Bug: #1686298
2017-06-01 01:20:00 +00:00
licanwei
75a025d2d2 Add action description
Add action get_description in class BaseAction.
This information will be sent to the API side via notification.

Partially Implements: blueprint dynamic-action-description

Change-Id: I9ce1b18ad8c5eb7db62ec926d1859d0f508074b0
2017-05-31 18:03:19 +08:00
Jenkins
590bd43a1d Merge "Trivial fix typos" 2017-05-31 08:54:56 +00:00
Jenkins
d2e42a835b Merge "Deleted audit record still get by 'audit list'cmd" 2017-05-31 08:54:15 +00:00
Jenkins
a34e55e47a Merge "Replace oslo_utils.timeutils.isotime" 2017-05-31 08:49:41 +00:00
aditi
a62acbf2ab Watcher official install-guide
Currently watcher project does not have an official
install guide at [1]

This patch adds watcher install guide for rdo and debian.

install-guide is written following the document [2].

[1] https://docs.openstack.org/project-install-guide/ocata/
[2] https://docs.openstack.org/contributor-guide/project-install-guide.html

Change-Id: Idfae7286003f81222dadf91ddcaf95a42c7eb07f
2017-05-31 08:40:27 +00:00
Vu Cong Tuan
35074edaf7 Trivial fix typos
Change-Id: I4c7d3a0d815a616d1ba2c0d26135db5f2aea0c2f
2017-05-30 15:55:33 +07:00
Luong Anh Tuan
dd4aac4092 Replace oslo_utils.timeutils.isotime
Function 'oslo_utils.timeutils.isotime()' is deprecated in version '1.6'
and will be removed in a future version. We use
datetime.datetime.isoformat() instead. For more informations:
http://docs.openstack.org/developer/oslo.utils/api/timeutils.html#oslo_utils.timeutils.isotime

Change-Id: I17384c369fdc7f86b37fd62370d800ed2463adbe
Closes-Bug: #1514331
2017-05-29 23:34:03 +07:00
Jenkins
bd8151e581 Merge "Reduced the code complexity" 2017-05-29 09:15:26 +00:00
Jenkins
8585e49359 Merge "Updated from global requirements" 2017-05-27 12:23:06 +00:00
Jenkins
5d3af47b7d Merge "Versioned Notifications for service object" 2017-05-27 12:20:45 +00:00
OpenStack Proposal Bot
1001525664 Updated from global requirements
Change-Id: I1baa46eba0e7dbae816dbbeb0914f4e1efc8fa0a
2017-05-26 17:31:36 +00:00
licanwei
a33f40ec21 Deleted audit record still get by 'audit list'cmd
Audit record was deleted but the field 'state' maybe not set DELETED.
get_audit_list's filter used field 'state' will get
wrong result.
filter rule should use field 'deleted_at' instead of field 'state'.
get_action_list and get_action_plan_list have the same filter rule.

Change-Id: I08b2a005ca5fb7c2741ac5ed97c6e6b4279758ed
Closes-Bug: #1693666
2017-05-26 14:53:32 +08:00
Vladimir Ostroverkhov
d2a8454043 Versioned Notifications for service object
Implements: blueprint service-versioned-notifications-api

Change-Id: I9d601edb265ee230104f6c63a5f044869aeb3a02
2017-05-25 12:52:01 +03:00
suzhengwei
27c56a19e4 fix clod_migrate problem
1.TypeError: watcher_non_live_migrate_instance() got an unexpected keyword
  argument 'dest_hostname'
2.Conflict: Cannot 'stop' instance ****** while it is in vm_state stopped
  (HTTP 409)

Closes-Bug: #1693434

Change-Id: I7293dd5d08e33c2e534d072da8592172bc438c9e
2017-05-25 07:27:26 +00:00
Jenkins
9bb1e653d8 Merge "Change cinder api_version to '3' in default" 2017-05-25 06:51:58 +00:00
Akihito INOH
bb536ee40d Change cinder api_version to '3' in default
Block Storage API v2 is deprecated now. Instead of it, we should use v3
in default (api_version).

This patch replace cinder default api_version from '2' to '3' in
conf/cinder_client.py

Change-Id: I53ffa74cdac7ac31c74937bf18da8ed2fec92223
Closes-Bug: #1691104
2017-05-25 09:26:33 +09:00
OpenStack Proposal Bot
a0bf1b7d70 Updated from global requirements
Change-Id: Id71f841aa19c8cc07205a59450ea376d4a7ffce4
2017-05-24 03:47:55 +00:00
Jenkins
40f6eea637 Merge "Remove the deprecated tempest.test.attr" 2017-05-22 09:38:12 +00:00
suzhengwei
6c5a3910a7 doc error for WeightPlanner
Change-Id: I6c51a919baa32e9b46bfadfcf8e6afac27890b17
2017-05-22 16:08:53 +08:00
Ngo Quoc Cuong
a4fac69d85 Remove the deprecated tempest.test.attr
[1] moves the attr decorator from test.py to tempest/lib. So, all the
references to tempest.test has to be moved to tempest.lib.decorator.

[2] https://review.openstack.org/#/c/456236/

Change-Id: If977e559d9f3b982baf2974efef3c5b375f263b9
2017-05-22 10:11:18 +07:00
Luong Anh Tuan
21994297cf Replace assertRaisesRegexp with assertRaisesRegex
This replaces the deprecated (in python 3.2) unittest.TestCase
method assertRaisesRegexp() with assertRaisesRegex().

Change-Id: I38c3055288034aba51c11bb1bccd3655f760cecc
Closes-Bug: #1436957
2017-05-19 18:06:00 +07:00
OpenStack Proposal Bot
8a818c9071 Updated from global requirements
Change-Id: Id3b644be5dccdf4abf60c6a49400f61582f0d244
2017-05-17 04:00:56 +00:00
Jenkins
041fcb4ca0 Merge "Added tempest test for workload_stabilization" 2017-05-17 01:32:13 +00:00
Jenkins
a8d765bb28 Merge "Fix a typo" 2017-05-10 18:22:08 +00:00
zhangjianfeng
2b152bf17c [bugfix]for division use accurate division
for now / just get int value ,this will lead method
filter_destination_hosts return 0 host
because self.threshold / 100 * host.vcpus is 0
so we need use accurate division to change this

close-bug: 1689269

Change-Id: I5663951ce750d6c4580a507ccfc0268baea0685f
2017-05-08 18:27:24 +08:00
chenaidong1
08e585d405 Fix a typo
'specfication' should be 'specification'

Change-Id: I845e6199c4e2152295fb02ac44a1b090a3d7561d
2017-05-08 15:43:57 +08:00
OpenStack Proposal Bot
38e4255ec0 Updated from global requirements
Change-Id: I5ab36d982f5ef09548303f1233116a7ad74e00f2
2017-05-04 13:33:41 +00:00
Jenkins
a167044cde Merge "[bugfix]retry is reached but action still success" 2017-05-04 09:17:36 +00:00
Jenkins
1366f79b63 Merge "Add Watcher JobStore for background jobs" 2017-05-03 14:50:35 +00:00
Jenkins
f55b9b127e Merge "Add 'rm -f .testrepository/times.dbm' command in testenv" 2017-05-03 12:01:49 +00:00
Jenkins
1b7b467151 Merge "replace nova endpoint" 2017-05-03 12:01:32 +00:00
Alexander Chadin
f40fcdc573 Add Watcher JobStore for background jobs
This patch set adds WatcherJobStore class that allows to link
jobs and services.

Partially-Implements: blueprint background-jobs-ha
Change-Id: I575887ca6dae60b3b7709e6d2e2b256e09a3d824
2017-05-03 12:07:01 +03:00
Jenkins
2d98d5e743 Merge "Fix devstack plugin" 2017-05-02 18:36:27 +00:00
OpenStack Proposal Bot
877230569a Updated from global requirements
Change-Id: I685b9a86764c24fb638c6a684a7b82818d8a6aac
2017-04-27 11:50:22 +00:00
Jenkins
f842c5f601 Merge "Add host_aggregates in exclude rule of audit scope" 2017-04-27 11:01:22 +00:00
Pradeep Kumar Singh
0a899a2dc2 Add host_aggregates in exclude rule of audit scope
Currently if user wants to skip some host_aggregates from audit,
it is not possible. This patch adds host_aggregates into the exclude
rule of audit scope. This patch also implements audit-tag-vm-metadata
using scopes.

TODOs:
1. Add tests
2. Remove old implementation of audit-tag-vm-metadata

Change-Id: Ie86378cb02145a660bbf446eedb29dc311fa29d7
Implements: BP audit-tag-vm-metadata
2017-04-27 08:37:16 +00:00
licanwei
426232e288 replace nova endpoint
The default is publicURL in novaclient.
This also caused the failure of
gate-watcher-dsvm-multinode-ubuntu-xenial-nv.

Change-Id: I485dd62fb7199ffeca29a9b573a624bf144484d1
Closes-Bug: #1686298
Closes-Bug: #1686281
2017-04-27 02:08:04 +00:00
Jenkins
778d4c6fe4 Merge "Set access_policy for messaging's dispatcher" 2017-04-25 14:11:17 +00:00
Jenkins
f852467d6a Merge "Add ironicclient" 2017-04-25 13:43:14 +00:00
M V P Nitesh
dcf64ed1f4 Add 'rm -f .testrepository/times.dbm' command in testenv
Running py2* post py3* tests results in error. Add
'rm -f .testrepository/times.dbm' command in testenv to
resolve this.

Change-Id: Ia43f8d10f157d988c4d2c89f16cac0ea729cabe6
2017-04-25 12:52:13 +05:30
Jenkins
03f75202c8 Merge "[Doc] fix local.conf.compute" 2017-04-25 07:01:57 +00:00
Jenkins
0173a713c1 Merge "use instance data replace exception.NoDataFound" 2017-04-25 00:14:07 +00:00
Hidekazu Nakamura
216f3bab29 [Doc] fix local.conf.compute
Compute node needs placement-client service from Ocata.

Change-Id: Ibd02a126bb4808625cede8fe04255ac014268adb
2017-04-24 20:58:37 +09:00
zhangjianfeng
077b806bf6 [bugfix]retry is reached but action still success
now when action like live-migration retry is reached
result is False but action still success
we can add check in do execute method can fix this problem.
close-bug: 1685757

Change-Id: I8390566ec8dcfa3a71b931d5be1b305802ac0b2a
2017-04-24 18:17:22 +08:00
licanwei
d892153b58 use instance data replace exception.NoDataFound
If instance_ram_util and instance_disk_util can not get data
from datasource. we can use instance data,
just like total_cpu_utilization

Change-Id: I4170b96946b07435411ada5ff4a14c978c0435b4
2017-04-24 15:35:04 +08:00
shubhendu
2efe211f36 Set access_policy for messaging's dispatcher
oslo.messaging allow dispatcher to restrict endpoint
methods with DefaultRPCAccessPolicy to fix FutureWarning

Closes-Bug:1663543

Change-Id: I0288320193b0153ee223664696abca21cbdb0349
2017-04-24 06:32:33 +00:00
Hidekazu Nakamura
f55ea7824e Fix devstack plugin
Stack.sh after unstack.sh results in error.
This patch fix it.

Change-Id: I35d74896611e56d916a9846b2f854bd060a606e4
2017-04-21 16:49:04 +09:00
Hidekazu Nakamura
e5eb4f51be [Doc] messaging -> messagingv2
Nova sends notifications using 2.0 messging format.

Change-Id: Ib0202ba5291f1666bdbf9b6830521b1a2aa20a80
2017-04-18 11:54:16 +09:00
licanwei
f637a368d7 Add ironicclient
This patch set adds ironicclient.

Change-Id: I122a26465d339ee6e36c0f234d3fd6c57cee2afa
Partially-Implements: blueprint build-baremetal-data-model-in-watcher
2017-04-17 06:48:05 +00:00
Jenkins
2e8fb5a821 Merge "exception when running 'watcher actionplan start XXX'" 2017-04-13 11:59:45 +00:00
OpenStack Proposal Bot
dbff4326e3 Updated from global requirements
Change-Id: I3df338013a22ba11e83929660e1c63d87fb30d01
2017-04-12 13:29:03 +00:00
Jenkins
13a99b4c09 Merge "Prevent the migration of VM with 'optimize' False in VM metadata" 2017-04-12 12:00:05 +00:00
Jenkins
a8994bc227 Merge "Added suspended audit state" 2017-04-12 05:24:01 +00:00
Hidekazu Nakamura
c6845c0136 Added suspended audit state
New audit state SUSPENDED is added in this patch set. If audit
state with continuous mode is changed from ONGOING to SUSPENDED,
audit's job is removed and the audit is not executed.
If audit state changed from SUSPENDED to ONGOING in reverse,
audit is executed again periodically.

Change-Id: I32257f56a40c0352a7c24f3fb80ad95ec28dc614
Implements: blueprint suspended-audit-state
2017-04-11 20:50:24 +09:00
Jenkins
02c8e7d89c Merge "Add gnocchi support in uniform_airflow strategy" 2017-04-11 10:52:30 +00:00
Jenkins
0db41f1862 Merge "Updated from global requirements" 2017-04-11 01:30:46 +00:00
Santhosh Fernandes
b02cf3bea5 Add gnocchi support in uniform_airflow strategy
This patch adds gnocchi support in uniform_airflow strategy
and adds unit tests corresponding to that change.

Change-Id: I347d0129da94a2fc88229d09297765795c5eeb1a
Partiallly-Implements: bp gnocchi-watcher
2017-04-10 19:14:37 +05:30
XieYingYun
4eeaa0ab6b Add Apache License Content in index.rst
Add Apache License 2.0 Content which is necessary
for ./releasenotes/source/index.rst.

Change-Id: Ieda2bda1eadc26a1e3420aecd3bee1b64ae3e23f
2017-04-10 18:45:36 +08:00
Jenkins
84d6d4aadd Merge "Optimize the link address" 2017-04-10 08:28:17 +00:00
Jenkins
4511b36496 Merge "Optimize the link address" 2017-04-10 08:22:14 +00:00
Jenkins
9a5c017a9a Merge "correct syntax error" 2017-04-10 08:21:24 +00:00
Jenkins
4690e402ce Merge "Add gnocchi support in workload_balance strategy" 2017-04-10 08:20:21 +00:00
M V P Nitesh
442e569686 Optimize the link address
Use https instead of http to ensure the safety

Change-Id: I41035ccb7b46c3f4ffc54cedb2392bfb64e2ac4c
2017-04-10 11:59:19 +05:30
Yumeng_Bao
5d948e8aa1 correct syntax error
Change-Id: Ied06d39da39b955a90e890156f8c11e329cf864e
2017-04-10 10:57:19 +08:00
OpenStack Proposal Bot
f83a92fc70 Updated from global requirements
Change-Id: I3aee3f27ef116b4cb636b090caad1806e3447744
2017-04-07 14:34:49 +00:00
Jenkins
a06c462050 Merge "Add gnocchi support in VM-Workload-Consolidation strategy" 2017-04-07 13:37:59 +00:00
Jenkins
74e9349c1f Merge "Add gnocchi support in outlet_temp_control strategy" 2017-04-07 12:49:33 +00:00
Jenkins
7c048c761e Merge "Add gnocchi support in workload_stabilization strategy" 2017-04-07 10:12:48 +00:00
Jenkins
4006b4af7a Merge "Run Watcher-API behind mod-wsgi" 2017-04-07 08:42:30 +00:00
licanwei
527423a5fa exception when running 'watcher actionplan start XXX'
In DefaultApplier.execute(), Action.list should set eager=True.
Otherwise it will trigger an exception when the notification is sent.

This also causes the FAILURE of
gate-watcher-dsvm-multinode-ubuntu-xenial-nv.

Change-Id: I27db9691727671abb582d4f22283ebda5bd51b07
Closes-Bug: #1676308
2017-04-07 16:19:21 +08:00
XieYingYun
1d05444f67 Optimize the link address
Use https instead of http to ensure the safety without containing our
account/password information

Change-Id: I1f164848f164d9694c0cfc802cc3980459bdf12f
2017-04-07 10:55:59 +08:00
Santhosh Fernandes
6de94cca2d Add gnocchi support in outlet_temp_control strategy
This patch adds gnocchi support in outlet_temp_control strategy
and adds unit tests corresponding to that change.
Partiallly-Implements: bp gnocchi-watcher

Change-Id: I2c2e9a86c470f3402adc3dbb7eb9995c643d5b37
2017-04-05 19:26:54 +05:30
Jenkins
9b5d17b412 Merge "oslo messaging notifications driver update" 2017-04-05 12:37:56 +00:00
Jenkins
719b96f2a8 Merge "fixed syntax error in json" 2017-04-05 12:33:18 +00:00
the.bling
e9f83417eb fixed syntax error in json
Change-Id: I6dc02d53291e42fb1de6811f439f5814c49af769
2017-04-05 16:37:41 +05:30
Yumeng_Bao
a139cca260 Replace py34 with py35
Change-Id: I562e53718ed269545a425cf30c59442ec72566f8
2017-04-05 11:25:01 +08:00
Jenkins
c04d3cc5e0 Merge "Use tox to generate a sample configuration file" 2017-04-05 01:52:41 +00:00
Santhosh Fernandes
e549e43e9e Add gnocchi support in workload_balance strategy
This patch adds gnocchi support in workload_balance strategy
and adds unit tests corresponding to that change.

Change-Id: I9bc56c7b91b5c3fd0cfe97d75c3bace50ab22532
Partiallly-Implements: bp gnocchi-watcher
2017-04-03 15:52:42 +05:30
Jenkins
c1a2c79514 Merge "Updated from global requirements" 2017-04-03 07:26:01 +00:00
Jenkins
f79cad99cb Merge "Add gnocchi plugin support for devstack" 2017-04-03 07:23:33 +00:00
Santhosh Fernandes
8663c3a5c5 Add gnocchi plugin support for devstack
This patch enables gnocchi plugin for devstack.

Partiallly-Implements: bp gnocchi-watcher
Closes-Bug: 1662515
Change-Id: I6614ce6999c9681bd6fafc6c85a3755b5ce8e2dd
2017-04-03 09:52:07 +05:30
OpenStack Proposal Bot
19d9b83665 Updated from global requirements
Change-Id: I4b82c80745c1cb54b66a5cb4a7fcecd7fbf964a3
2017-04-01 15:35:28 +00:00
aditi
af22899ebe Run Watcher-API behind mod-wsgi
This patch adds support to run watcher-api
with mod-wsgi. It provides
1. wsgi app script files, to run watcher-api under apache.
2. updated devstack plugin to run watcher-api default with
   mod-wsgi.
3. Document to deploy watcher-api behind wsgi.

Change-Id: I8f1026f0b09fd774376220c2d117ee66f72421b8
Closes-Bug: #1675376
2017-04-01 19:03:17 +05:30
Yumeng_Bao
fc33e181fc oslo messaging notifications driver update
Replace "messaging" with "messagingv2".

Change-Id: Iab53b5ba8cd58a0655dc35489081fb22d5834363
2017-04-01 18:34:34 +08:00
Yumeng_Bao
a3ee163480 Use tox to generate a sample configuration file
There is no sample configuration file if we don't generate one.

Change-Id: Ibe9005db4fa24b63914fa5f24fe4b144867781cd
2017-04-01 18:26:28 +08:00
Vincent Françoise
334558f17c Added tempest test for workload_stabilization
In this changeset, I added a tempest test that is in charge of
executing the workload_stabilization strategy.

Change-Id: I61bad268fc5895ddb22312baeb21da5ae3c71de9
2017-03-30 07:20:13 +00:00
Santhosh Fernandes
4642a92e78 Add gnocchi support in VM-Workload-Consolidation strategy
This patch adds gnocchi support in VM-Workload-Consolidation strategy
and adds unit tests corresponding to that change.

Change-Id: I4aab158a6b7c92cb9fe8979bb8bd6338c4686b11
Partiallly-Implements: bp gnocchi-watcher
2017-03-29 19:33:55 +05:30
OpenStack Proposal Bot
69c53da298 Updated from global requirements
Change-Id: I07bc3672692faec1dab41e98f7cf6b8fab821a2a
2017-03-29 13:44:56 +00:00
Jenkins
49924e1915 Merge "Use HostAddressOpt for opts that accept IP and hostnames" 2017-03-29 12:05:35 +00:00
Santhosh Fernandes
d53abb7af5 Fix for remove verbose option
This commit[1] has removed verbose option due to which our ut's are failing.
This patch is fixing this issue.

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

Change-Id: I784a7f855f42de462e8fc8f829f5526e1483dab4
2017-03-29 11:17:43 +05:30
jeremy.zhang
4d3727eafb Use HostAddressOpt for opts that accept IP and hostnames
Some configuration options were accepting both IP addresses
and hostnames. Since there was no specific OSLO opt type to
support this, we were using ``StrOpt``. The change [1] that
added support for ``HostAddressOpt`` type was merged in Ocata
and became available for use with oslo version 3.22.

This patch changes the opt type of configuration options to use
this more relevant opt type - HostAddressOpt.

[1] I77bdb64b7e6e56ce761d76696bc4448a9bd325eb

Change-Id: Idec43189ff8edc539027ba0b0369e54ae883cd2b
2017-03-28 15:22:25 +08:00
Jenkins
4a3c15185c Merge "stale the action plan" 2017-03-27 22:46:30 +00:00
Jenkins
2c6ab9a926 Merge "Add period input parameter to vm workload consolidation and outlet temp control strategy." 2017-03-27 22:46:07 +00:00
Santhosh Fernandes
0750b93827 Add gnocchi support in workload_stabilization strategy
This patch adds gnocchi support in workload_stabilization strategy
and adds unit tests corresponding to that change.

Change-Id: I96bd758962bbf67d60e19a99a19451fb80e447b2
Partiallly-Implements: bp gnocchi-watcher
2017-03-27 23:56:41 +05:30
Pradeep Kumar Singh
a2cb02a861 Prevent the migration of VM with 'optimize' False in VM metadata
This patch adds the functionality to filter out VMs which have
metadata field 'optimize' set to False. This patch implements the
functionality for basic_consolidation strategy.

Change-Id: Iaf7b63e09534e4a67406e7f092242558b78c0bde
Partially-Implements: BP audit-tag-vm-metadata
2017-03-27 10:17:37 +00:00
Santhosh Fernandes
377889859d Add period input parameter to vm workload consolidation and
outlet temp control strategy.

Closes-Bug: #1614021
Change-Id: Iec975e4a4a39168a65ae89ca75a5ca9445c14f9d
2017-03-27 15:06:36 +05:30
Jenkins
54f0758fc3 Merge "Remove log translations" 2017-03-27 08:36:22 +00:00
Jenkins
a644600a18 Merge "Add endpoint_type option for openstack clients." 2017-03-27 07:49:04 +00:00
Jenkins
ca3d367ac7 Merge "Updated from global requirements" 2017-03-27 00:53:08 +00:00
Margarita Shakhova
cde60d2ead Add endpoint_type option for openstack clients.
Interface type internalURL' is used as a default value.

Change-Id: Ia1acbfbfd2a1eecd85e5aa1d2e19665d411c4c58
Closes-Bug: #1671405
2017-03-24 21:12:11 +00:00
Jenkins
f106076d70 Merge "Imported Translations from Zanata" 2017-03-24 20:03:43 +00:00
OpenStack Proposal Bot
e75dbfd776 Updated from global requirements
Change-Id: I74bfd82a835c43d94be6279adbe582f2a0bfa302
2017-03-24 16:38:30 +00:00
Santhosh Fernandes
18aa50c58e Add gnocchi support in basic_consolidation strategy
This patch adds gnocchi support in basic_consolidation strategy
and adds unit tests corresponding to that change.

Change-Id: Ia1ee55fca8eadffbd244c0247577805b6856369d
Partiallly-Implements: bp gnocchi-watcher
2017-03-24 09:09:42 +00:00
Jenkins
2c2120526c Merge "Add Gnocchi datasource" 2017-03-24 09:00:33 +00:00
Jenkins
9e505d3d36 Merge "exception when running 'watcher service list'" 2017-03-24 08:17:51 +00:00
OpenStack Proposal Bot
54ce5f796f Imported Translations from Zanata
For more information about this automatic import see:
http://docs.openstack.org/developer/i18n/reviewing-translation-import.html

Change-Id: I3090e188c8506781fe7260cb99727fab02df1044
2017-03-24 07:41:20 +00:00
yanxubin
f605888e32 Remove log translations
Log messages are no longer being translated. This removes all use of
the _LE, _LI, and _LW translation markers to simplify logging and to
avoid confusion with new contributions.

See:
http://lists.openstack.org/pipermail/openstack-i18n/2016-November/002574.html
http://lists.openstack.org/pipermail/openstack-dev/2017-March/113365.html

Change-Id: I3552767976807a9851af69b1fa4f86ac25943025
2017-03-24 09:46:19 +08:00
Alexander Chadin
0b213a8734 Add Gnocchi datasource
This patch set adds Gnocchi datasource support

Implements: blueprint gnocchi-watcher

Change-Id: I41653149435fd355548071de855586004371c4fc
2017-03-23 13:54:03 +03:00
licanwei
38a3cbc84a exception when running 'watcher service list'
We have two controllers as HA in our OpenStack environment.
There are watcher-applier and watcher-decision-engine in each
controller. So there are two same name in the services table.
In this case, the objects.Service.get_by_name(context, name)
will trigger exception of MultipleResultsFound.
We should use objects.Service.get(context, id) replace of
objects.Service.get_by_name(context, name).

Change-Id: Ic3ce784590d6c2a648cb3b28299744deed281332
Closes-Bug: #1674196
2017-03-22 12:12:31 +08:00
Jenkins
eb038e4af0 Merge "set eager=True for actionplan.list" 2017-03-21 10:19:41 +00:00
Jenkins
b5eccceaed Merge "Remove old oslo.messaging transport aliases" 2017-03-21 09:24:23 +00:00
Jenkins
f7b655b712 Merge "Local copy of scenario test base class" 2017-03-20 13:10:33 +00:00
ChangBo Guo(gcb)
1386ce690f Remove old oslo.messaging transport aliases
Those are remnants from the oslo-incubator times. Also, oslo.messaging
deprecated [1] transport aliases since 5.2.0+ that is the minimal
version supported for stable/newton. The patch that bumped the minimal
version for Watcher landed 3 months+ ago, so we can proceed ripping
those aliases from the code base.

[1] I314cefa5fb1803fa7e21e3e34300e5ced31bba89

Change-Id: Ie3008cc54b0eb3d1d02f55f388bd1c3b109d126d
Closes-Bug: #1424728
2017-03-20 13:23:45 +08:00
licanwei
38e4b48d70 stale the action plan
Check the creation time of the actionplan,
and set the state to SUPERSEDED if it has expired.

Change-Id: I900e8dc5011dec4cffd58913b9c5083a6131d70d
Implements: blueprint stale-action-plan
2017-03-18 13:46:34 +08:00
Andrea Frittoli
56ca542bef Local copy of scenario test base class
The scenario tests base class from Tempest is not a stable interface
and it's going to be refactored on Tempest side, as notified in

http://lists.openstack.org/pipermail/openstack-dev/2017-February/112938.html

Maintain a local copy of the base class, taken from Tempest with head of
master at c5f1064759fe6c75a4bc5dc251ed1661845936cb.

Change-Id: Idfa5ebe18c794c51e406156fb120d128478d4f1e
2017-03-17 17:31:46 +00:00
Jenkins
dafe2ad04b Merge "Use https instead of http" 2017-03-17 09:04:48 +00:00
licanwei
6044b04d33 set eager=True for actionplan.list
actionplan.save() will send a send_update notification.
This notification need eagerly loaded,
so we should set eager=True for actionplan.list.

Change-Id: Iafe35b9782fb0cc52ba5121c155f62c61ef70e1f
Closes-Bug: #1673679
2017-03-17 16:16:26 +08:00
Yumeng_Bao
6d81ac15b8 Use https instead of http
Currently http is used to access git, however http is not safe enough
since the access information contains our account/password information.
Use https instead of http to ensure the safety.

And for others services such as pypi or python, it's still nice to use
https.

Change-Id: I706a4a1873c6bbc05385057757fc5962344f9371
2017-03-17 07:44:27 +00:00
OpenStack Proposal Bot
db077e872e Updated from global requirements
Change-Id: Id1f3bee0c6cfb5621a7c23d7865247d6ef4217d1
2017-03-16 18:24:19 +00:00
Béla Vancsics
fd55d28d42 Reduced the code complexity
I extracted some of the functionalities into helper functions
to reduce the length and complexity of build_query (in
watcher/datasource/ceilometer.py).
Additionally it became more readable as well, without
changing its functionality.

Change-Id: I9e5c524754cf0f9d718a216465ba1b7536add80e
2017-03-16 07:45:44 +01:00
OpenStack Proposal Bot
51bf7fedb6 Updated from global requirements
Change-Id: Id125d2e27aba257fb026491fc505245f4d7555ba
2017-03-15 12:54:16 +00:00
OpenStack Proposal Bot
bf0fd48659 Updated from global requirements
Change-Id: Id458895286cdaffe66676b68a4f4fd7169c24347
2017-03-15 05:21:56 +00:00
Jenkins
ba98c88303 Merge "Add Action Notification" 2017-03-08 09:58:46 +00:00
OpenStack Proposal Bot
77b406748c Updated from global requirements
Change-Id: I35c23139feb449af69470f8f9e90f82dda516585
2017-03-07 02:08:03 +00:00
Jenkins
d21198da8f Merge "[Fix gate]Update test requirement" 2017-03-06 03:30:47 +00:00
Jenkins
12a7b7171b Merge "Add Apache License content in conf.py file" 2017-03-04 23:16:39 +00:00
Jenkins
d45ab13619 Merge "Adding instance metadata into cluster data model" 2017-03-04 01:54:03 +00:00
Prudhvi Rao Shedimbi
e2d2fc6227 Adding instance metadata into cluster data model
This patch adds instance metadata in the cluster data model. This
is needed for Noisy Neighbor strategy.

Change-Id: Ia92a9f97ba1457ba844cc37a4d443ca4354069e3
2017-03-03 14:52:42 +00:00
yuhui_inspur
3c564ee3d8 Add Apache License content in conf.py file
Change-Id: I84478f02bc7f04ef57334a738fa0b1f3ca0cac45
2017-03-02 23:27:32 -08:00
ricolin
f9ce21a9a9 [Fix gate]Update test requirement
Since pbr already landed and the old version of hacking seems not
work very well with pbr>=2, we should update it to match global
requirement.
Partial-Bug: #1668848

Change-Id: I5de155e6ff255f4ae65deff991cff754f5777a8d
2017-03-03 11:43:53 +08:00
Jenkins
03a2c0142a Merge "Optimize audit process" 2017-03-02 23:25:39 +00:00
Hidekazu Nakamura
5afcf7a7f4 Remove unused PNG files in image_src directory
This patch removes unused PNG files in image_src directory.

Change-Id: Ia65ae07932d238277731a26fddb798b92d06e958
2017-03-01 10:26:14 +09:00
Jenkins
63faf4695e Merge "Fix no endpoints of ceilometer in devstack environment setup." 2017-02-28 01:55:53 +00:00
Jenkins
97800d1553 Merge "Switch to use test_utils.call_until_true" 2017-02-27 23:40:58 +00:00
OpenStack Proposal Bot
8f85169c15 Updated from global requirements
Change-Id: I693764145996f4c941de4b129a73c36e0db839d6
2017-02-27 01:21:44 +00:00
ericxiett
68e4bc4d87 Fix no endpoints of ceilometer in devstack environment setup.
There are not any endpoints for `ceilometer` with devstack/
local.conf.controller. The service `ceilometer-api` should
be enabled explicitly.

Change-Id: I2218a98182001bef65fbc17ae305cfadf341930e
Closes-Bug: #1667678
2017-02-24 21:40:19 +08:00
ericxiett
9e7f7f54f3 Fix some typos in vm_workload_consolidation.py.
Change-Id: I1da1ed89f3e278af05d227d5011c8984218c026f
2017-02-23 16:40:00 +08:00
licanwei
fceab5299b Optimize audit process
In the current audit process, after executing the strategy,
will check whether there are currently running actionplan,
and if so, will set the new actionplan SUPERSEDED.
We can optimize the process to perform this check in pre_execute(),
and if any actionplan is running, no further processing is performed.

Change-Id: I7377b53a2374b1dc177d256a0f800a86b1a2a16b
Closes-Bug: #1663150
2017-02-17 15:01:05 +08:00
Jenkins
dddbb63633 Merge "Adding additional details to notification logs" 2017-02-16 13:25:14 +00:00
Jenkins
b788dfab71 Merge "Fix spelling error in NotificationEndpoint classes." 2017-02-16 13:24:42 +00:00
Jenkins
7824b41e12 Merge "Add SUPERSEDED description" 2017-02-16 13:23:47 +00:00
Jenkins
86ded4d952 Merge "Reactivate watcher dashboard plugin in devstack/local.conf.controller" 2017-02-16 13:04:28 +00:00
Jenkins
5d6e731c42 Merge "Fix that remove 'strategy' attribute does not work." 2017-02-15 14:09:08 +00:00
Jenkins
cba6713bdc Merge "Add checking audit state" 2017-02-15 14:08:59 +00:00
Yumeng_Bao
24ab0469ec Reactivate watcher dashboard plugin in devstack/local.conf.controller
Since watcher dashboard can be sucessfully installed now by devstack,
we should enable this again. Many of us are get the local.conf from
here,so this change is necessary, we can enable watch dashboard plugin
by default.

Change-Id: Iad5081a97515b3f831d2f468dc514a942e6d3420
2017-02-15 17:32:47 +08:00
Jenkins
4d71bb112c Merge "Remove support for py34" 2017-02-14 10:28:34 +00:00
licanwei
fd374d1d30 Add SUPERSEDED description
Add SUPERSEDED description

Change-Id: I05dc12451ecde338d94f99be522a38e7fb042528
2017-02-13 12:23:32 +08:00
Alexander Chadin
25789c9c5a Add Action Notification
This patch set adds the following action notifications:

- action.create
- action.update
- action.delete
- action.execution.start
- action.execution.end
- action.execution.error

Partially Implements: blueprint action-versioned-notifications-api

Change-Id: If0bc25bfb7cb1bff3bfa2c5d5fb9ad48b0794168
2017-02-10 11:43:35 +03:00
Ken'ichi Ohmichi
a9b3534e97 Switch to use test_utils.call_until_true
test.call_until_true has been deprecated since Newton on Tempest side,
and now Tempest provides test_utils.call_until_true as the stable
library method. So this patch switches to use the stable method before
removing old test.call_until_true on Tempest side.

Change-Id: Iba2130aca93c8e6bccb4f8ed169424c791ebc127
Needed-by: Ide11a7434a4714e5d2211af1803333535f557370
2017-02-09 10:50:11 -08:00
Chris Spencer
f80c0c732a Adding additional details to notification logs
Improves tracking independent workflows.  A log adapter
was added to provide an easy means of prepending publisher
ID and event type information.

Change-Id: I5d2d8a369f99497b05c2a683989e656554d01b4f
Closes-Bug: 1642623
2017-02-09 11:26:53 -07:00
Hidekazu Nakamura
0d83354c57 Add checking audit state
This patch adds checking audit state when updating an existing audit
in accordance with audit state machine.

Closes-Bug: #1662406

Change-Id: I20610c83169b77f141974a5cebe33818a4bf0728
2017-02-09 14:23:14 +09:00
licanwei
67d44eb118 Fix the mapping between the instance and the node
The argument to the add_edge function should be instance.uuid
and node.uuid, not instance and node

Change-Id: Ida694f9158d3eb26e7f31062a18844472ea3c6fa
Closes-Bug: #1662810
2017-02-08 17:41:47 +08:00
Cao Xuan Hoang
8c1757f86d Remove support for py34
The gating on python 3.4 is restricted to <= Mitaka. This is due to
the change from Ubuntu Trusty to Xenial, where only python3.5 is
available. There is no need to continue to keep these settings.

Change-Id: I3b3f0b08f6f27322b8a9d99eb25984ccd6bfe7a6
2017-02-08 11:09:30 +07:00
ericxiett
e55c73be0e Fix that remove 'strategy' attribute does not work.
The 'strategy_id' attribute is the one that not exposes
to API. But the 'PATCH' API always update this attribute.
So this change does not work when choose 'remove' op.
This patch sets value for 'strategy_id' attribute.

Change-Id: I1597fb5d4985bb8271ad3cea7ea5f0adb7de65f4
Closes-Bug: #1662395
2017-02-08 10:57:26 +08:00
Chris Spencer
04c9e0362e Fix spelling error in NotificationEndpoint classes.
Change-Id: I47dc2d73b8e7c4adaa9622de932c0d8abcd17d87
2017-02-07 15:36:50 -07:00
Jenkins
8ceb710b59 Merge "Fix incorrect auto trigger flag" 2017-02-07 16:04:33 +00:00
Hidekazu Nakamura
58711aaaec Fix log level error to warning
When action plan is currently running, new action plan is set as
SUPERSEDED and error log reported. This patch changes log level
from error to warning.

Change-Id: I931218843d8f09340bd5363256164807d514446b
Closes-Bug: #1662450
2017-02-07 17:48:56 +09:00
licanwei
3ad5261d2a Fix incorrect auto trigger flag
'watcher audit list' returns a incorrect auto trigger flag
auto_trigger field is incorrectly unset to False

Change-Id: Iba4a0bda1acf18cbfde6f1dcdb0985a4c3f7b5bb
Closes-Bug: #1662051
2017-02-06 14:42:44 +08:00
Jenkins
26c7726c00 Merge "Using items() instead of six.iteritems()" 2017-02-03 09:33:24 +00:00
zhuzeyu
5b2cdb53a8 Using items() instead of six.iteritems()
We'd better not use six.iteritems(), read follow doc
http://lists.openstack.org/pipermail/openstack-dev/2015-June/066391.html

Change-Id: I32aff3ad0cc936c6b623db313b6f6a0790cbc7fb
2017-02-03 17:01:40 +08:00
Jenkins
4b5dce51dc Merge "Use RPC cast() to be asynchronous" 2017-02-03 08:48:56 +00:00
OpenStack Release Bot
b6a96e04aa Update reno for stable/ocata
Change-Id: I6c75072180fcbd449d9049ae1f2258a53a236ebd
2017-02-02 18:23:37 +00:00
Jenkins
62cb8a8d29 Merge "Add release note for action plan notifications" 2017-02-02 17:46:18 +00:00
Jenkins
50e5e86c75 Merge "Added action_plan.execution.* actions" 2017-02-02 17:44:52 +00:00
Jenkins
e3dd5c2a7e Merge "Added action_plan.create|update|delete notifs" 2017-02-02 17:44:08 +00:00
Jenkins
630c2cbb79 Merge "Updated graph model to use attr_dict" 2017-02-02 17:25:52 +00:00
Vincent Françoise
d49c6c16a6 Added action_plan.execution.* actions
Partially Implements: blueprint action-plan-versioned-notifications-api

Change-Id: I9bd346c19f1cafcaa720de554fd9c056c76de050
2017-02-02 18:05:26 +01:00
Vincent Françoise
e51e7e4317 Added action_plan.create|update|delete notifs
In this changeset, I added 3 notifications:

- action_plan.create
- action_plan.update
- action_plan.delete

Partially Implements: blueprint action-plan-versioned-notifications-api

Change-Id: I8821fc6f47e7486037839d81bed9e28020b02fdd
2017-02-02 18:05:24 +01:00
Antoine Cabot
244d28afa6 Add release note for action plan notifications
Change-Id: I7670e8866835b099a2f6d91b4c486e1056d52a97
2017-02-02 17:35:07 +01:00
David TARDIVEL
7ac1d0d048 Add first alembic version for db migration
Alembic provides command script to update a relational
database, using SQLAlchemy. I provide in this patchset the
initial version python script for create a Ocata db version.

Implements: blueprint db-migration

Change-Id: I7bda4286bc8141bb4fcfba3837070966ef506b5d
2017-02-01 14:40:11 +01:00
Vincent Françoise
65f9646eae Use RPC cast() to be asynchronous
Change-Id: I54814dc37a79eb06386923f946d85a67894c7646
2017-02-01 14:40:10 +01:00
Vincent Françoise
52d701a56e Updated graph model to use attr_dict
This patchset makes use of a more idiomatic structure of networkx

Change-Id: Iccc4e9f0cc14cccadb2959ff8d68cd68367c4da3
2017-01-31 12:15:45 +01:00
Vincent Françoise
ea1fd5967a Fix context error for user
In this changeset, I fixed an error in the Watcher RequestContext
that was introduced by the release of oslo.context==2.12.X which
makes user_id an alias of user (among others)
https://github.com/openstack/oslo.context/blob/2.12.1/oslo_context/context.py#L258-L269

Change-Id: I4e35c675de7ee01db90f700eece0b28413b34c47
2017-01-31 11:07:03 +01:00
Jenkins
547bf0529f Merge "Fix multinode tempest test failure" 2017-01-27 15:31:02 +00:00
Vincent Françoise
659cbf3207 Idiomatic loop for calculate_num_migrations
Change-Id: Iddcb6dfbed2d2793df9c33408858f1a8d4600d10
2017-01-27 14:59:44 +01:00
Jenkins
eb5a362287 Merge "Documentation update" 2017-01-27 09:53:02 +00:00
Vincent Françoise
198d827645 Fix multinode tempest test failure
Change-Id: Ibb5cbb93d53ff45d66ab4f0c0d4b12e908170d35
2017-01-26 17:35:55 +01:00
Jenkins
ecb0e218a9 Merge "add Ocata release notes" 2017-01-26 15:41:02 +00:00
Jenkins
4228647d15 Merge "Add period input parameter to basic strategy" 2017-01-26 15:35:11 +00:00
Antoine Cabot
4f1d758a40 add Ocata release notes
Change-Id: Iff0c7601f6ea1b35de1afb1d71b8aff08a967eab
2017-01-26 14:03:12 +00:00
Jenkins
b4433db20a Merge "Fix invalid mock on ceilometerclient" 2017-01-26 13:54:48 +00:00
Hidekazu Nakamura
e03f56e7c7 Add period input parameter to basic strategy
This patch set adds new period strategy input parameter
which allows allows to specify the time length of
statistic aggregation.

Partial-Bug: #1614021

Change-Id: I1a276206e5b2c05d8f94acdeb866c8822fa84f35
2017-01-26 16:50:07 +03:00
Vincent Françoise
d925166a25 Fix invalid mock on ceilometerclient
The mocks on _get_alarm_client() are now failing because it was renamed
as _get_redirect_client(). This fix reflects this name change.

Change-Id: Id61e74dc4adc0c939661462953b322d65104a651
2017-01-26 10:42:30 +01:00
Jenkins
4a5d8cf709 Merge "Remove obsolete Resource element" 2017-01-25 13:54:39 +00:00
Jenkins
e3c6db11c6 Merge "Graph cluster model instead of mapping one" 2017-01-25 13:54:27 +00:00
David TARDIVEL
59c5adc8ad Documentation update
Here is a new architecture diagram with some updates on the
glossary and on descriptions of architecture elements.
I also fix some warning logs.

Closes-Bug: #1657405
Change-Id: I442082d702fc8667e9397c090da51ca1ead5d86e
2017-01-25 13:10:56 +01:00
Jenkins
840d422b01 Merge "Fix building of model with a scoped exclusion rule" 2017-01-25 11:59:42 +00:00
OpenStack Proposal Bot
e9d8a2882f Updated from global requirements
Change-Id: I82bcbf318a846a94c3d61eb49e3769387738692f
2017-01-24 20:03:01 +00:00
Alexander Chadin
6e09cdb5ac New Applier Workflow Engine
This patch set allows to execute Watcher Actions in parallel.
New config option max_workers sets max number of threads
to work.

Implements: blueprint parallel-applier
Change-Id: Ie4f3ed7e75936b434d308aa875eaa49d49f0c613
2017-01-24 18:26:22 +00:00
Vincent Françoise
edd3d219d5 Remove obsolete Resource element
Partially Implements: blueprint graph-based-cluster-model

Change-Id: I2765d1c7a864d6658c847dcd988314fc8f11049c
2017-01-24 18:26:11 +00:00
Vincent Françoise
d433d6b3c8 Graph cluster model instead of mapping one
In this changeset, I use https://review.openstack.org/#/c/362730/
as an example to make the existing ModelRoot fully graph-based.

Change-Id: I3a1ec8674b885d75221035459233722c18972f67
Implements: blueprint graph-based-cluster-model
2017-01-24 18:26:06 +00:00
David TARDIVEL
c5d4f9cb40 Fix building of model with a scoped exclusion rule
If we define an audit scope with a exclusion rule composed
with compute nodes, the compute model built is empty. I fix
the algo used to built this scoped compute model.

Change-Id: I675226c58474b7ea52b3f92e7b466adae40643b8
Closes-bug: #1658995
2017-01-24 18:25:13 +00:00
Vincent Françoise
41f579d464 Fix broken gates because of wrong pip command
Change-Id: I7d8cb4bfa7962819b7298149e94f06be44f2670e
2017-01-24 18:12:15 +01:00
Jenkins
1a2fa9addf Merge "Update configuration document" 2017-01-23 13:35:27 +00:00
Jenkins
9e5ca76116 Merge "Fix test_clients_monasca failure" 2017-01-23 13:31:00 +00:00
Jenkins
fa63b2a2b3 Merge "Updated from global requirements" 2017-01-23 13:30:54 +00:00
Jenkins
22cad5651e Merge "Fix bad CDMC update on reception of service.update" 2017-01-23 13:30:33 +00:00
Jenkins
a912977336 Merge "resolve KeyError exception" 2017-01-23 13:29:27 +00:00
licanwei
2d7a375338 Fix test_clients_monasca failure
'cafile','certfile','keyfile' and 'insecure'
 need mock override.

Change-Id: I289904ed38f22d4475fe04f2005b795d07cb8d83
Closes-Bug: #1658553
2017-01-23 10:57:08 +08:00
OpenStack Proposal Bot
45b82e1898 Updated from global requirements
Change-Id: I4378e3c39766f70456ae633e49390fd8244bde88
2017-01-21 15:59:07 +00:00
Jenkins
926dbc8392 Merge "New default planner" 2017-01-19 14:08:40 +00:00
Alexander Chadin
0e440d37ee New default planner
Co-Authored-By: Vincent Francoise <Vincent.FRANCOISE@b-com.com>
Change-Id: Ide2c8fc521488e486eac8f9f89d3f808ccf4b4d7
Implements: blueprint planner-storage-action-plan
2017-01-19 13:16:57 +03:00
Jenkins
66934f29d3 Merge "Should use glanceclient to get images" 2017-01-18 10:05:54 +00:00
Jenkins
7039a9d247 Merge "Updated from global requirements" 2017-01-17 13:39:49 +00:00
Jenkins
bbbae0b105 Merge "Fix dummy strategy to use input parameters" 2017-01-17 13:39:43 +00:00
Jenkins
1d08d2eea1 Merge "Modify the field in tox.ini" 2017-01-17 10:19:56 +00:00
zhuzeyu
23442a4da6 Modify the field in tox.ini
We use 'genconfig' field to generate configuration file generally.

TrivialFix

Change-Id: I152613103594dd7bcbc8b7f53a12e223a25bb051
2017-01-17 18:01:56 +08:00
Jenkins
ed88b436af Merge "Add action plan SUPERSEDED state" 2017-01-17 09:59:09 +00:00
David TARDIVEL
a48a16596f Add action plan SUPERSEDED state
An action plan can be now go to SUPERSEDED state if another
action plan is on going for instance. It could be the case with
tempest test, because we can have several scenario tests running
at the same time.

Change-Id: I5449e545676463f0ea601e67993e9dffa67929a7
Closes-bug: #1657031
2017-01-17 09:41:19 +01:00
Hidekazu Nakamura
8f4a856bd2 Fix dummy strategy to use input parameters
Dummy strategy does not use input parameters.
This patch fixes it.

Change-Id: I9aa0414869e6f2d52dca5cea6055ff81067448ef
2017-01-17 09:01:26 +09:00
OpenStack Proposal Bot
85a46ce4d4 Updated from global requirements
Change-Id: Id0dc6c33430a3691986acf8604ff67d8b2ae9a24
2017-01-16 17:30:38 +00:00
David TARDIVEL
35066dfe60 Update Server Consolidation global efficacy
As instance migration cost is petty compared to the cost of
compute node release, I update the way to compute the global
efficacy for a server consolidation goal. The new formula is simplest
and it's only based on compute node.

Change-Id: Ibcce31a85af70429f412c96c584a761d681366a2
2017-01-16 16:56:24 +01:00
Jenkins
fc9eb6e995 Merge "Multi datasource support for Basic Consolidation" 2017-01-16 09:54:24 +00:00
Jenkins
aaf6fd7959 Merge "Added Monasca Helper" 2017-01-16 09:54:02 +00:00
Cao Xuan Hoang
5e077f37ea Fix a typo in watcher/objects/base.py
Removed redundant 'the'

Change-Id: I03cd038c7b1a5d266cb9a1264adc3902c23c971c
2017-01-16 11:18:57 +07:00
licanwei
2ec8bc10cd resolve KeyError exception
In the optimize solution stage when launching audit
based vm_workload_consolidation strategy.
The instance map in node should change when migration
action was removed. Otherwise a KeyError exception
will be thrown.

Change-Id: I054b6b12922892a02d155b4ddc001b19890d32c5
Closes-Bug: #1656157
2017-01-14 11:21:42 +08:00
Jenkins
89cea83c85 Merge "Add auto_trigger support to watcher" 2017-01-13 17:07:29 +00:00
David TARDIVEL
2dd00a2037 Enable notification for vm task state update
Add a script command to enable Nova compute.instance.update
notifications on VM and task state changes.

Change-Id: I639f003d92e184085a332f53c6783e5eca0002fe
2017-01-13 10:42:24 +01:00
Kevin_Zheng
59e13fd1f3 Should use glanceclient to get images
Getting images from Novaclient is refered as proxy API
and was deprecated to use in nova. We should use
Glanceclient to get images instead.

Closes-bug: #1655516
Change-Id: Ie7d89e857d149e11b3c9b44c980b0be5cb0cc35f
2017-01-13 02:07:04 +00:00
Vincent Françoise
4235ef7c24 Multi datasource support for Basic Consolidation
In this changeset, I added the support for both Monasca and
Ceilometer for the basic_consolidation strategy.

Partially Implements: blueprint monasca-support

Change-Id: Ide98550fbf4a29954e46650190a05be1b8800317
2017-01-12 17:51:59 +01:00
Vincent Françoise
a015af1bd2 Added Monasca Helper
In this changeset, I implemented a Helper class to deal with
Monasca requests.

Change-Id: I14cfab2c45451b8bb2ea5f1f48254b41fa5abae8
Partially-Implements: blueprint monasca-support
2017-01-12 17:51:58 +01:00
avnish
dad90b63fd Removed unnecessary utf-8 encoding
Change-Id: I967f933abd6c49f4262d39c2f406405a9ef18b16
2017-01-11 15:23:06 +05:30
Jenkins
c6e5f98008 Merge "Enable coverage report in console output" 2017-01-11 09:00:18 +00:00
OpenStack Proposal Bot
1341c0ee02 Updated from global requirements
Change-Id: I31678175f4e6cb5b55e45714b058ad548ce50ca9
2017-01-01 12:18:37 +00:00
Jeremy Liu
6e99fcffc3 Enable coverage report in console output
Change-Id: Iaba796a4126b2e106af5b4688cd6c94559a42a64
2016-12-30 16:37:24 +08:00
Jenkins
a57f54ab8f Merge "multinode devstack update for live-migration" 2016-12-28 16:51:38 +00:00
Jenkins
d1490e3fa7 Merge "Fix TypeError if no input_parameters added" 2016-12-27 16:21:12 +00:00
Jenkins
1324baf9f5 Merge "Add additional depencencies of CentOS 7" 2016-12-27 09:27:29 +00:00
Hidekazu Nakamura
0adc7d91e6 Fix TypeError if no input_parameters added
By calling solution.add_action with no input_parameters, TypeError:
'NoneType' object does not support item assignment was occurred.
This patch fix it.

Change-Id: Ia2ad0c18bc20468ca73c0ab70495fac2c90e0640
Closes-Bug: #1647927
2016-12-27 13:49:54 +09:00
Hidekazu Nakamura
0d7ded0bb3 Update configuration document
In this changeset, Adding admin role to watcher user of
admin project is removed.

Change-Id: Icc8167b12ec0669045d100f8b9ea94d2ac08837d
2016-12-27 13:01:50 +09:00
Hidekazu Nakamura
80dfbd6334 Add additional depencencies of CentOS 7
In this changeset, additional dependencies of CentOS 7 is added.

Change-Id: Ie513448ae39b9c006360792732a967d337775d8b
2016-12-27 09:35:36 +09:00
licanwei
7d40b3d4c3 Fix reference http
<http://docs.openstack.org/admin-guide-cloud/
telemetry-measurements.html> ==>
<http://docs.openstack.org/admin-guide/telemetry-measurements.html>

Change-Id: Iea22902db12b9bb05b9cd2d9a4ac95818f00f133
2016-12-26 16:07:12 +08:00
Jenkins
cedf70559e Merge "Updated from global requirements" 2016-12-20 09:33:21 +00:00
Jenkins
cc561c528f Merge "Fix variable name error" 2016-12-20 09:27:31 +00:00
鲍昱蒙00205026
87b494d52a remove incorrect inline comment
Change-Id: I4f5b48a07e146c727ebf724d1993633aa707cec8
2016-12-20 09:25:41 +08:00
Alexander Chadin
d0bca1f2ab Add auto_trigger support to watcher
This patch set adds support of auto-triggering of action plans.

Change-Id: I36b7dff8eab5f6ebb18f6f4e752cf4b263456293
Partially-Implements: blueprint automatic-triggering-audit
2016-12-19 12:37:26 +03:00
licanwei
068178f12a Fix variable name error
doc/source/dev/plugin/cdmc-plugin.rst
'collector' should be 'dummy_collector'

Change-Id: I2f8f7107faa4b1f707f424b696c9bc3c6d7e22f4
2016-12-19 11:36:41 +08:00
OpenStack Proposal Bot
99e6c4aebb Updated from global requirements
Change-Id: I2f191bc9e9316dfb2d029624a0c8773a576de004
2016-12-17 21:40:43 +00:00
Jenkins
b446f8afd2 Merge "Fix some incorrect description in doc." 2016-12-16 17:06:42 +00:00
Jenkins
7783ebfb71 Merge "Fix method name in doc/source/dev/plugin/action-plugin.rst" 2016-12-16 17:02:41 +00:00
Jenkins
22cfc495f4 Merge "Improve the instruction of vm_workload_consolidation." 2016-12-16 16:38:45 +00:00
Jenkins
360b0119d6 Merge "remove unused log" 2016-12-16 16:38:35 +00:00
OpenStack Proposal Bot
48fc90d7b6 Updated from global requirements
Change-Id: I8ffe399bda77a605f97c5128957b07d405ac5169
2016-12-16 13:49:28 +00:00
Jenkins
c5ff387ae9 Merge "Repair log parameter error" 2016-12-16 09:55:54 +00:00
David TARDIVEL
1bc6b0e605 Fix bad CDMC update on reception of service.update
When we receive a incoming 'service.update' notification
from nova, with disabled: false, we should set the related
compute node status to ENABLED.

Change-Id: Ib8075a5cf786f81ec41423805433f83ae721cbbd
Closes-bug: #1650485
2016-12-16 10:11:38 +01:00
Jenkins
345083e090 Merge "Function call pass parameter error" 2016-12-16 08:47:55 +00:00
Prudhvi Rao Shedimbi
695ddf8ae7 Implemented clients and auth config module
Implemented clients and auth config module

Implements: blueprint centralise-config-opts

Change-Id: I28ea8376aa34114331cbae61596839ebae6cf7eb
2016-12-14 20:13:23 +00:00
Jenkins
8fd5057cd0 Merge "Implemented wacther decision engine config module" 2016-12-14 18:48:14 +00:00
Jenkins
3db81564f4 Merge "Documentation for Uniform Airflow Migration Strategy Fixed issues" 2016-12-14 17:51:11 +00:00
Jenkins
10066ed8fd Merge "Documentation for Workload Balance Migration Strategy Fixed comments and added the doc primitive call" 2016-12-14 17:51:04 +00:00
Jenkins
e4c5f4f050 Merge "update strategy table when parameters_spec changes" 2016-12-14 17:48:27 +00:00
Prudhvi Rao Shedimbi
53c896dd24 Implemented wacther decision engine config module
Implemented wacther decision engine config module

Partially Implements: blueprint centralise-config-opts

Change-Id: Ie4e9dd7d902fa85044d1859974cbd75d54c8b6cc
2016-12-14 17:40:57 +00:00
Susanne Balle
40a46c6663 Documentation for Uniform Airflow Migration Strategy
Fixed issues

Closes-Bug: #1623486
Change-Id: If303283949ef39a26c91bbff7b4664e81687d169
2016-12-14 11:01:27 -05:00
Prudhvi Rao Shedimbi
ed21e452e0 Implemented applier config module
Implemented applier config module

Partially Implements: blueprint centralise-config-opts

Change-Id: I237596b06dc3bee318414346cfa58ae4cb81079b
2016-12-14 15:50:11 +00:00
Prudhvi Rao Shedimbi
80e77a5b81 Implemented planner config module
Implemented planner config module

Partially Implements: blueprint centralise-config-opts

Change-Id: I4d710c8552ef211c6a9c38dd8f5515f68a6d36c4
2016-12-14 14:52:37 +00:00
Prudhvi Rao Shedimbi
74112dd7cf Implemented db config module
Implemented db config module

Partially Implements: blueprint centralise-config-opts. Also moved
basedir_def, bindir_def and state_path_def to watcher.conf.paths

Change-Id: I73d201f6a23bbdb1c6189434b11314a66620e85c
2016-12-14 15:13:31 +01:00
Prudhvi Rao Shedimbi
9e4bf718da Implemented exception config module
Implemented exception config module

Partially Implements: blueprint centralise-config-opts

Change-Id: Ic1b94e28a960a7306f15afbf69382edc15b5999e
2016-12-14 11:05:01 +00:00
Prudhvi Rao Shedimbi
5c79074e9c Implemented paths config module
Implemented paths config module

Partially Implements: blueprint centralise-config-opts

Change-Id: I2b779fb1ce552567feac678cb5bd78aad0d53d52
2016-12-14 10:56:58 +00:00
Jenkins
ac6848dad3 Merge "Implemented utils config module" 2016-12-14 10:31:07 +00:00
Jenkins
648715eb5c Merge "Implemented api config module" 2016-12-14 10:20:48 +00:00
licanwei
1a17c4b7ac remove unused log
remove unused log

Change-Id: Iad207a708388ecf940d502ef8f5f64d5cc8ff80e
2016-12-14 15:18:02 +08:00
licanwei
c4dfbd5855 Repair log parameter error
Multi-parameters should form a dict type

Change-Id: Ia883de6a0e34cebd28ba7fb0ecd105acb6cf2830
2016-12-14 14:24:20 +08:00
Amy Fong
1981f3964e multinode devstack update for live-migration
For multinode setup, a couple of updates to /etc/nova/nova.conf was
needed for live migration.

serial_console needed to be disabled and vncserver_listen needed to
be set to any for the vncserver to accept connections from all of the
compute nodes.

Change-Id: I62ebc2a07ca525bd80da130981f337806b2b89ae
Closes-Bug: #1649638
2016-12-13 12:31:51 -05:00
Jenkins
3b5ef5d625 Merge "Specific exception for stale cluster state was added." 2016-12-13 15:35:41 +00:00
Jenkins
7fd486bd65 Merge "Unnecessary exception" 2016-12-13 12:00:23 +00:00
Jenkins
3cf4b315d3 Merge "improve statistic_aggregation" 2016-12-13 11:02:21 +00:00
licanwei
d792e3cfae Function call pass parameter error
add_migration(self, instance_uuid, source_node,
                      destination_node, model)
param source_node: node object
param destination_node: node object

but in optimize_solution(), The incoming parameters are
source_node_uuid and destination_node_uuid.
This causes an exception:
AttributeError: 'unicode' object has no attribute 'state'

Change-Id: Ia27f219caa007f2b49ff9efc2544d5b4d894fe65
Closes-Bug: #1649441
2016-12-13 16:44:30 +08:00
Susanne Balle
25d84ba662 Documentation for Workload Balance Migration Strategy
Fixed comments and added the doc primitive call

Closes-Bug: #1623486

Change-Id: I704536530c576de702434008aa30a7fbbaddff25
2016-12-12 14:17:08 -05:00
Anton Khaldin
7908af3150 Specific exception for stale cluster state was added.
Specific exception should be thrown when cluster state
is stale. Current usage is to raise this exception if
compute_model.state is True.
Bug was describeid by Jean-Emile DARTOIS.

Change-Id: Iaddb4cc8007c51bb14759c9da829751e834499d0
Closes-Bug: #1621855
2016-12-12 18:04:51 +00:00
Prudhvi Rao Shedimbi
04fdea2aa0 Implemented utils config module
Implemented utils config module

Partially Implements: blueprint centralise-config-opts

Change-Id: Ic09ecba60022b69ec4031608716e34209d3fe578
2016-12-12 16:36:04 +00:00
Jenkins
cee9cfb62c Merge "Updated from global requirements" 2016-12-12 13:31:35 +00:00
Jenkins
e1912fe03e Merge "Modify the variable assignment errors" 2016-12-12 11:57:57 +00:00
licanwei
d859f3ac1f Fix CI failures
reference to:
http://osdir.com/ml/openstack-dev/2016-12/msg00420.html
/nova/tox.ini

Change-Id: Ie566f4b7c1c3cd3c1654281c0cad028c3886d9f7
2016-12-12 18:01:25 +08:00
licanwei
7a72371df8 improve statistic_aggregation
improve statistic_aggregation

Change-Id: Ic1fb19780fa4a39c5eb74e5ed30db0e4c06d0e09
2016-12-12 17:10:38 +08:00
licanwei
82bb097e9f Unnecessary exception
If the instance state is not ACTIVE,
There is no need to throw an exception.

Change-Id: I88ba3ae9c92b75ed57fc9647e33c4a10801b2c18
Closes-Bug: #1648309
2016-12-08 15:06:26 +08:00
licanwei
a9ef9f3a94 update strategy table when parameters_spec changes
At present, In the sync function, there is no check about the
parameters_spec field in strategy table, if the parameters_spec
field content has changed, Such as increased 'periods' parameter,
strategy table will not be updated, the program will run abnormal.

exception msg:
2016-12-05 11:11:39.138 TRACE watcher.decision_engine.audit.base
raise AttributeError(name)
2016-12-05 11:11:39.138 TRACE watcher.decision_engine.audit.base
AttributeError: periods

Change-Id: I84709c246acbdf44ccac257b07a74084962bb628
Closes-Bug: #1647521
2016-12-08 13:34:03 +08:00
Prudhvi Rao Shedimbi
8e7ba3c44a Implemented api config module
Implemented api config module

Partially Implements: blueprint centralise-config-opts

Change-Id: I055618e546bb1bfa2c1764bcff1a1f94e5adea96
2016-12-07 21:46:28 +00:00
OpenStack Proposal Bot
9a2ca8c4b7 Updated from global requirements
Change-Id: Ib5668cd281665477968b5a9acadf65765b5a06a1
2016-12-07 13:41:44 +00:00
Jenkins
c08666b2fa Merge "[Doc] Fix example code of goal plugin" 2016-12-07 12:26:50 +00:00
OpenStack Proposal Bot
6638f921a3 Updated from global requirements
Change-Id: Idceb803efc01b3b2346cc15391517e4b527d43ac
2016-12-07 09:09:52 +00:00
zte-hanrong
f66eb463ca Improve the instruction of vm_workload_consolidation.
The goal of "vm_consolidation" is not existent by default.

Use the goal of "server_consolidation" instead for shell command.

Change-Id: Icef5536a337fa88a4504e23e4de6d2e96c45d7b6
2016-12-07 16:50:51 +08:00
Hidekazu Nakamura
6a323ed54f Fix method name in doc/source/dev/plugin/action-plugin.rst
precondition -> pre_condition
postcondition -> post_condition

Change-Id: Ia8edc9b428c14ea35225cbbe1a54b67a33151a64
2016-12-07 15:50:51 +09:00
licanwei
1f2a854d6a Repairing unit test failures
If fieldname is 'deleted', field.type.python_type raise
NotImplementedError.

Change-Id: I47246ce9a3b0c8d2a3ea44e825d9604f5b14ed38
Closes-Bug: #1647574
2016-12-06 17:15:19 +08:00
ericxiett
d252d47cc0 Fix some incorrect description in doc.
doc/source/deploy/configuration.rst
* 'The Watcher system is a collection of services
that provides support to optimize your IAAS plateform. '

Fix: Typo, plateform -> platform

* Additionally, the Bare Metal service has certain
external dependencies, which are very similar to
other OpenStack services:

Fix: Bare Metal -> Watcher

* Please check your hypervisor configuration to correctly
handle instance migration.

Fix: ref of ``instance migration`` is http://docs.openstack.org/
admin-guide/compute-live-migration-usage.html

Change-Id: I00ab282a0f9ffcfddf745df1dd67418a43d70b10
Closes-Bug: #1646290
2016-12-06 04:00:18 +08:00
Hidekazu Nakamura
d0e46d81fc [Doc] Fix example code of goal plugin
An example code of goal plugin does not work.
This patch fixes it.

Change-Id: I75c2ffa74a003fad9e2d512927e4cb47554783c2
2016-12-02 12:47:34 +09:00
Jenkins
4e240b945b Merge "Fix one ref that does not work." 2016-11-30 11:43:28 +00:00
Jenkins
e09188d862 Merge "Updated from global requirements" 2016-11-30 11:42:39 +00:00
Jenkins
a4b1df2fce Merge "Fix rally gate test" 2016-11-30 11:32:46 +00:00
Jenkins
22933e4d79 Merge "Show team and repo badges on README" 2016-11-30 10:39:46 +00:00
Jenkins
40a5c98382 Merge "Use uuidutils instead of uuid.uuid4()." 2016-11-30 08:43:49 +00:00
Jenkins
5b21b9a17e Merge "Fix 'ImportError' when docbuild." 2016-11-30 08:42:47 +00:00
Jenkins
02d1850be7 Merge "Add periods input parameter" 2016-11-30 08:34:19 +00:00
Jenkins
5f1f10e3d3 Merge "Documentation for Outlet Temperature Based Strategy Fixed outstanding comments" 2016-11-30 08:20:43 +00:00
zhuzeyu
e4732e1375 Use uuidutils instead of uuid.uuid4().
Change-Id: I3f734b6c4d252f8eb73a49b447fd89e5e444002f
Closes-Bug: #1082248
2016-11-29 14:15:54 +08:00
licanwei
715f6fa1cd Modify the variable assignment errors
The values of 'released_compute_nodes_count' and
'instance_migrations_count' are upside down

Change-Id: I0662bdfce575de529eb8c12363be7fa196b1a88c
2016-11-29 10:20:23 +08:00
Flavio Percoco
6daa09f489 Show team and repo badges on README
This patch adds the team's and repository's badges to the README file.
The motivation behind this is to communicate the project status and
features at first glance.

For more information about this effort, please read this email thread:

http://lists.openstack.org/pipermail/openstack-dev/2016-October/105562.html

To see an example of how this would look like check:

https://gist.github.com/fb14a4269de717e9410ba91722027512

Change-Id: If7f9b36d45c431ecb6d0eb76d907d63573de4238
2016-11-25 17:21:54 +01:00
ericxiett
7feced419c Fix 'ImportError' when docbuild.
There is not module 'messaging.utils' in 'watcher.common'
but module 'synchronization' instead.

Change-Id: If2d585a4f416614cbe91e4ef61fc7473508d38af
Closes-Bug: #1643862
2016-11-24 01:34:51 +08:00
ericxiett
3319748367 Fix one ref that does not work.
One space was missed between 'the' and ':ref' in
'the:ref:Watcher Database <watcher_database_definition>'.

Change-Id: I3e46121dc7c30f73df4ca455e2c629929cdbd2ec
Closes-Bug: #1644388
2016-11-24 01:15:56 +08:00
OpenStack Proposal Bot
a84f52dfe3 Updated from global requirements
Change-Id: Id8935a3139541edb1dae894358f20c3cfc0ddd21
2016-11-23 11:05:56 +00:00
Jenkins
3f8e4451f5 Merge "Fix some typos in action.py & action_plan.py & audit.py" 2016-11-23 09:41:59 +00:00
Jenkins
d082c9ac41 Merge "Fix the wrong ref for 'Compute node'" 2016-11-23 09:41:09 +00:00
Jenkins
9080180309 Merge "Fix inconsistent descriptions in docstring in action_plan.py" 2016-11-23 08:59:25 +00:00
Jenkins
55893043df Merge "Solve some spelling mistakes." 2016-11-23 08:58:58 +00:00
Jenkins
19074f615a Merge "Remove redundan lines." 2016-11-23 08:58:49 +00:00
Alexander Chadin
295c8d914c Add periods input parameter
This patch set adds new periods strategy input
parameter that allows to specify the time length of
statistic aggregation.

Change-Id: Id6c7900e7b909b0b325281c4038e07dc695847a1
2016-11-23 11:55:14 +03:00
zte-hanrong
99735fa39a Solve some spelling mistakes.
Change-Id: Id7e8c4efbfc4203e63583b68c87be75f4a195b66
2016-11-23 11:40:51 +08:00
zte-hanrong
b80229f3d0 Remove redundan lines.
Change-Id: Iac10aea306e59eb91b192ec6e89f42851d9548a5
2016-11-23 11:31:26 +08:00
Susanne Balle
5e9ba463ee Documentation for Outlet Temperature Based Strategy
Fixed outstanding comments

Closes-Bug: #1623486

Change-Id: I2d327f472749c0e5a8b184eb426abebd757cc4f7
2016-11-21 11:15:01 -05:00
Jenkins
120c116655 Merge "[Doc] Fix default value in workload_stabilization" 2016-11-21 13:45:41 +00:00
Jenkins
c9cfd3bfbd Merge "Replaces uuid.uuid4 with uuidutils.generate_uuid()" 2016-11-21 13:36:21 +00:00
Jenkins
31f2b4172e Merge "Change hardware.cpu_util in workload_stabilization" 2016-11-21 13:32:23 +00:00
Hidekazu Nakamura
5151b666fd Change hardware.cpu_util in workload_stabilization
In this change set, hardware.cpu_util is changed to
compute.node.cpu.percent in workload_stabilization.
By doing so, one can run this strategy on a simple devstack
without having to setup the SNMP plugin.

Change-Id: I8df8921337ea3f4e751c0c822d823e64e3ca7e1c
2016-11-21 09:58:38 +09:00
YumengBao
578138e432 Fix inconsistent descriptions in docstring in action_plan.py
Change-Id: I4e74ac0ce7bdd17f1809ac1fbb8bf8110bfa290e
2016-11-19 17:58:46 +08:00
Jenkins
7e2fd7ed9a Merge "Removed nullable flag from audit_id in ActionPlan" 2016-11-18 14:40:53 +00:00
Vincent Françoise
74cb93fca8 Removed nullable flag from audit_id in ActionPlan
Partially Implements: blueprint watcher-versioned-objects

Change-Id: I0bf572e0756ef5d9bb73711a28225526dd044995
2016-11-18 14:16:32 +01:00
qinchunhua
876f3adb22 Replaces uuid.uuid4 with uuidutils.generate_uuid()
Change-Id: I38740842402841ae446603faacbbe969854f2396
Closes-Bug: #1082248
2016-11-18 00:55:39 +00:00
Vincent Françoise
06682fe7c3 Fixed update of WatcherObject fields on update
I this changeset, I fixed the issue whereby object auto fields are not
being updated within the WatcherObject after an update.

Change-Id: I7e65341b386a5c0c58c2109348e39e463cf2f668
Closes-Bug: #1641955
2016-11-17 17:41:13 +01:00
zhangyanxian
eaaa2b1b69 Fix some typos in action.py & action_plan.py & audit.py
Change-Id: I64909a6319a709dd8cb6a0e6b28bca714f5b4f6e
TrivialFix: "occured" should be "occurred"
2016-11-17 11:20:58 +00:00
Hidekazu Nakamura
88187a8ba9 [Doc] Fix default value in workload_stabilization
In this change set, Default value 'hardware.cpu_util' of instance_metrics
was changed to 'compute.node.cpu.percent'.

Change-Id: I02f87e5fea663e2e04c61cc36b7d55ff250bf8cc
2016-11-17 10:39:10 +09:00
ericxiett
0b6979b71c Fix the wrong ref for 'Compute node'
The refo of 'Compute node' in glossary.rst is wrong.
And modify it.

Change-Id: I3be61c95df2d538c5e49f169c428a605816d66e0
Closes-Bug: #1641405
2016-11-17 09:13:42 +08:00
Jenkins
3ebe8ab70f Merge "Added Tempest API tests for /scoring_engines" 2016-11-16 21:16:25 +00:00
Jenkins
240f849758 Merge "Implemented base + moved plugins & service conf" 2016-11-16 17:24:45 +00:00
Jenkins
46f23fac57 Merge "Add audit.planner events" 2016-11-16 16:52:13 +00:00
Jenkins
83ea0bff45 Merge "Add audit.strategy events" 2016-11-16 16:50:13 +00:00
Vincent Françoise
46f511a8c8 Implemented base + moved plugins & service conf
In this changeset, I implemented the main logic although this is
mainly a shameful copy/paste of Nova's blueprint
https://blueprints.launchpad.net/nova/+spec/centralize-config-options

Partially Implements: blueprint centralise-config-opts

Change-Id: Ib645ad5da5c706336bb6ac37e85b027d05665c32
2016-11-16 17:45:07 +01:00
Jenkins
2c5be7c974 Merge "Implemented audit.delete notification" 2016-11-16 16:43:43 +00:00
Jenkins
081ec077ad Merge "Implemented audit.create notification" 2016-11-16 16:43:37 +00:00
Jenkins
f32206d845 Merge "Implemented audit.update notification" 2016-11-16 16:43:31 +00:00
Jenkins
e476384425 Merge "Update devstack plugin to add notification param" 2016-11-16 16:42:36 +00:00
Jenkins
822fe78675 Merge "Added notification_level config option" 2016-11-16 16:30:18 +00:00
Jenkins
6fabfe2af1 Merge "Removed status_topic config parameter" 2016-11-16 16:30:13 +00:00
Jenkins
982a49b952 Merge "Remove stale notification code" 2016-11-16 16:27:09 +00:00
Jenkins
19da978a1c Merge "Added notifications documentation page" 2016-11-16 15:35:27 +00:00
Jenkins
f4bced5a79 Merge "Added support for versioned notifications" 2016-11-16 15:31:45 +00:00
Jenkins
168537a754 Merge "Added Model base class + related doc" 2016-11-16 13:55:06 +00:00
Vincent Françoise
25da1636b1 Add audit.planner events
In this changeset, I implemented the following notifications:

- audit.planner.start
- audit.planner.end
- audit.planner.error

Partially Implements: blueprint audit-versioned-notifications-api

Change-Id: I29d371f8cb3fd7948c87bec97186e24a88e8fdb6
2016-11-16 13:59:00 +01:00
Vincent Françoise
19fe0a0c56 Add audit.strategy events
In this changeset, I implemented the following notifications:

- audit.strategy.start
- audit.strategy.end
- audit.strategy.error

Partially Implements: blueprint audit-versioned-notifications-api

Change-Id: I6ae8468caf8d215bc8bc694813beb4dc94f53fdb
2016-11-16 13:59:00 +01:00
Vincent Françoise
6f9f67cacc Implemented audit.delete notification
In this changeset, I implemented the audit.delete notification.

Partially Implements: blueprint audit-versioned-notifications-api

Change-Id: I8aeb73f4b8d3273d6de7dc9c44674e3041b005ea
2016-11-16 13:59:00 +01:00
Vincent Françoise
0c0a9c84d6 Implemented audit.create notification
In this changeset, I implemented the audit.create notification.

Change-Id: Ia092ca3a3dc951e3313a07f15a98aec5818e9ab0
Partially-Implements: blueprint audit-versioned-notifications-api
2016-11-16 13:59:00 +01:00
Vincent Françoise
9405eb0806 Implemented audit.update notification
In this changeset, I implemented the sending of update notifications
whenever an audit is modified.

Change-Id: I5ccc2516ce896ae7d4ef542b133e8f052eaed602
Partially-Implements: blueprint audit-versioned-notifications-api
2016-11-16 13:59:00 +01:00
Vincent Françoise
54c45a2738 Update devstack plugin to add notification param
In this changeset, I updated the devstack plugin so it has the
necessary configuration options for it to emit the Watcher
notifications straight out of the box.

Partially Implements: blueprint watcher-notifications-ovo

Change-Id: I048e0b82cde40bd3699c90429bdf55ee235fff3b
2016-11-16 13:57:25 +01:00
Vincent Françoise
4bebf882d9 Added notification_level config option
In this changeset, I implemented the notification_level parameter
that allows you to set the level minimum level of notification to
be emitted by Watcher.

Partially Implements: blueprint watcher-notifications-ovo

Change-Id: I78b30ceb3ee7606078a87beb3a4ce5d9568af1e0
2016-11-16 13:57:25 +01:00
Vincent Françoise
cdda06c08c Removed status_topic config parameter
In this changeset, I removed the now obsolete status_topic config
option.

DocImpact
Partially Implements: blueprint watcher-notifications-ovo

Change-Id: Icfc03abd875b77fc456bfa286ac2b5774651e8fa
2016-11-16 13:57:25 +01:00
Vincent Françoise
395ccbd94c Remove stale notification code
In this changeset, I cleaned up the Watcher codebase to remove
the old notification mechanism that is actually unused.

Partially Implements: blueprint watcher-notifications-ovo

Change-Id: I1901e65f031441b98a7d6f6c9c1c0364eaaaf481
2016-11-16 13:57:25 +01:00
Vincent Françoise
cdee2719f7 Added notifications documentation page
In this changeset, I added a new Sphinx directive (from Nova) that
allows us to automatically display notification samples for of
all the upcoming notifications in Watcher.

Partially Implements: blueprint watcher-notifications-ovo

Change-Id: Id7d819ee21db6dc616c78faea483b883f77e3bd6
2016-11-16 13:57:25 +01:00
Vincent Françoise
b27e5b91b9 Added support for versioned notifications
In this changeset, I added all the required modification in order
for Watcher to enable the implementation of versioned notifications.

Change-Id: I600ecbc767583824555b016fb9fc7faf69c53b39
Partially-Implements: blueprint watcher-notifications-ovo
2016-11-16 13:57:25 +01:00
Jenkins
9dc3fce3e5 Merge "Add doc for vm_workload_consolidation strategy" 2016-11-16 09:34:06 +00:00
Bruno Grazioli
5c793894ab Add doc for vm_workload_consolidation strategy
This patch adds documentation on requirements for
vm_workload_consolidation strategy.

Change-Id: I304644138b34658b09f7cd8f29eb089757807b61
Closes-bug: #1640820
2016-11-16 09:26:31 +01:00
Alexander Chadin
8eb99ef76e Fix rally gate test
This patch set removes extra field from rally tasks
since Watcher team has removed extra field from
watcher and python-watcherclient projects.

Change-Id: Ib1640cbe8668f56f3a3a54e9f73bb1e3e6747d79
2016-11-16 11:26:27 +03:00
OpenStack Proposal Bot
3532c74001 Updated from global requirements
Change-Id: If8e1f5591d026572e8fdd187ab737801a58b9a88
2016-11-15 19:39:39 +00:00
Jenkins
c0b17105af Merge "Add doc for workload-stabilization spec" 2016-11-15 10:53:58 +00:00
Jenkins
22c424cecb Merge "optimized 'find_instance()'" 2016-11-15 10:08:21 +00:00
Jenkins
01118b72c7 Merge "Remove unused SUBMITTED audit state" 2016-11-14 15:09:57 +00:00
Alexander Chadin
9761207d8a Add doc for workload-stabilization spec
This patch set adds how-to-use documentation for
Watcher Overload standard deviation algorithm.

Change-Id: I75d7cd0ff8507ca70efb6d9668ae9fbf651a7f97
2016-11-14 18:07:11 +03:00
Jenkins
abd93a298e Merge "Fix the typo in efficacy_indicator module" 2016-11-14 14:00:30 +00:00
Jenkins
71c21c3e41 Merge "Use oslo_log instead of logging" 2016-11-14 13:53:19 +00:00
Jenkins
a487718fdc Merge "Added action_plan ObjectField for Action" 2016-11-14 10:10:10 +00:00
Jenkins
b8dddfcf67 Merge "Added audit & strategy ObjectField for ActionPlan" 2016-11-14 10:10:04 +00:00
Jenkins
2a6a96640a Merge "Added goal & strategy ObjectField for Audit" 2016-11-14 10:09:58 +00:00
Jenkins
e7d70cd279 Merge "Added goal+strategy ObjectField for AuditTemplate" 2016-11-14 10:09:02 +00:00
ericxiett
72c9d86094 Fix the typo in efficacy_indicator module
Modify typo 'gobal' to 'global'.

Change-Id: Ib8b4c65d64d767666ea1a32bc72b66559a035c5f
Closes-Bug: #1641408
2016-11-13 22:49:15 +08:00
Alexander Chadin
5e9a2f6fa6 Fix NoMetricValuesForInstance error
This patch set allows in case of NoMetricValuesForInstance exception
to continue the flow of Workload Stabilization strategy
instead of interrupting.

Closes-Bug: #1640096
Change-Id: I2de22bb97defb9c34e409102d06846275793b80d
2016-11-11 12:01:28 +03:00
howardlee
b6e17a8bc8 Use oslo_log instead of logging
1. the use of the log in the module should be unified.
2. oslo_log wrapped logging.

Change-Id: Iac48fcbcd2fc9a7002fed6a328dc74242ad770de
2016-11-10 19:22:25 +08:00
licanwei
3e392b07bf optimized 'find_instance()'
The function nova.servers.list() will return a huge context in the
large infrastructure. We can use nova.servers.get() instead of it.

Change-Id: If922c31e8aff27bfbc475c63083ee561ee7f1f67
2016-11-10 19:17:46 +08:00
Jenkins
21abbb4cd1 Merge "Added 'goal' ObjectField for Strategy object" 2016-11-10 09:38:04 +00:00
Jenkins
a539ef8c58 Merge "Refactored Watcher objects to use OVO" 2016-11-10 09:37:58 +00:00
Jenkins
0c29946590 Merge "Removed deadline, version, extra & host_aggregate" 2016-11-10 09:37:52 +00:00
Jenkins
be0a889327 Merge "Eager loading on One-to-X foreign keys" 2016-11-10 09:26:41 +00:00
Hidekazu Nakamura
ea7e6a7c94 Fix workload stabilization strategy to ignore disabled hosts
Change-Id: Ib5244da196111fac03b1ac4b756a59ad15deb778
Closes-Bug: #1640102
2016-11-10 15:55:55 +09:00
Vincent Françoise
090d5d1f1e Added Tempest API tests for /scoring_engines
In this changeset, I added tempest tests for the scoring engine
endpoint.

Change-Id: I7f36250eb9df437b518d20fd4f2e1feb223f3c82
2016-11-09 16:35:31 +05:30
Jaewoo Park
4973dd6bf6 Remove unused SUBMITTED audit state
Submitted state is not referenced nor used in the Watcher codebase,
and hence removed the references to the state from the codebase.

Change-Id: Ibb0cf5125e2d93683739abf35030b7cf5cb1b056
Closes-Bug: 1634150
2016-11-07 13:16:31 -08:00
Jenkins
ad7ae3e676 Merge "[Doc] Fix strategy list optional argument" 2016-11-07 16:11:58 +00:00
Jenkins
7ed7aade91 Merge "Added missing test on GMR plugin" 2016-11-07 14:50:13 +00:00
Jenkins
1fbc8b57bf Merge "Transform KB into MB and normalize CPU" 2016-11-07 14:24:44 +00:00
Vincent Françoise
b4b17ba395 Added action_plan ObjectField for Action
In this changeset, I added the "action_plan" ObjectField which can
either be loaded by setting the new "eager" parameter as True
or not loaded (as before) by setting it to False. The advantage of
introducing this eager parameter is that this way,
we can reduce to a minimum the overhead of DB queries whenever the
related object fields is not actually needed.

Change-Id: Iae255d9a0a919e2b6db710be24dbf9033b72166e
Partially-Implements: blueprint watcher-versioned-objects
2016-11-07 10:40:07 +01:00
Vincent Françoise
060c369838 Added audit & strategy ObjectField for ActionPlan
In this changeset, I added the "audit" and the "strategy "ObjectField
which can either be loaded by setting the new "eager" parameter as True
or not loaded (as before) by setting it to False.
The advantage of introducing this eager parameter is that this way,
we can reduce to a minimum the overhead of DB queries whenever the
related object fields is not actually needed.

Change-Id: Ieca6fa438cbf2267f5ae2ea0d059b2953e65076b
Partially-Implements: blueprint watcher-versioned-objects
2016-11-07 10:40:07 +01:00
Vincent Françoise
f9df54c555 Added goal & strategy ObjectField for Audit
In this changeset, I added the "goal" and the "strategy "ObjectField
which can either be loaded by setting the new "eager" parameter as True
or not loaded (as before) by setting it to False.
The advantage of introducing this eager parameter is that this way,
we can reduce to a minimum the overhead of DB queries whenever the
related goal is not actually needed.

Change-Id: I5a1b25e395e3d904dae954952f8e0862c3556210
Partially-Implements: blueprint watcher-versioned-objects
2016-11-07 10:39:20 +01:00
Vincent Françoise
54cf10b41c Added goal+strategy ObjectField for AuditTemplate
In this changeset, I added the "goal" and the "strategy "ObjectField
which can either be loaded by setting the new "eager" parameter as True
or not loaded (as before) by setting it to False.
The advantage of introducing this eager parameter is that this way,
we can reduce to a minimum the overhead of DB queries whenever the
related goal is not actually needed.

Change-Id: I97418163f68aea2f1cda80be94e4035f0b3700ae
Partially-Implements: blueprint watcher-versioned-objects
2016-11-07 10:39:20 +01:00
Vincent Françoise
f54aca70cc Added 'goal' ObjectField for Strategy object
In this changeset, I added the "goal" ObjectField which can
either be loaded by setting the new "eager" parameter as True or
not loaded (as before) by setting it to False.
The advantage of introducing this eager parameter is that this way,
we can reduce to a minimum the overhead of DB queries whenever the
related goal is not actually needed.

Partially-Implements: blueprint watcher-versioned-objects
Change-Id: I103c9ed161d2cedf7b43c55f9e095ef66bf44dea
2016-11-07 10:39:20 +01:00
Vincent Françoise
fc31dae7f2 Refactored Watcher objects to use OVO
In this changeset, I modified all existing Watcher objects to now
rely on oslo.versionedobjects as a base.

Change-Id: I3c9b1ca6da529d128743b99020350f28926ea1a2
Partially-Implements: blueprint watcher-versioned-objects
2016-11-07 10:39:19 +01:00
Vincent Françoise
ed95d621f4 Removed deadline, version, extra & host_aggregate
As we are about to version the Watcher objects, we need to make sure
that upcoming model/object modifications are additive in order to
avoid having to bump the major version of the API. Therefore,
this changeset removes 4 unused DB fields that were exposed in their
associated Watcher objects (i.e. AuditTemplate and Audit).

Change-Id: Ifb0783f21cd66db16b31e3c8e376fc9d6c07dea3
Partially-Implements: blueprint watcher-versioned-objects
2016-11-07 10:39:19 +01:00
Vincent Françoise
750e6bf213 Eager loading on One-to-X foreign keys
In this changeset, I added ORM relationships to the DB models
concerning the already-declared foreign keys.
I also modified the DB query building to now handle a new 'eager'
parameter that, if True, is responsible to also fetch the data
relative to these 'parent' DB entities (no cascading).

Change-Id: Ieea181af9a4b173c54621dcc6c549161f5a35aeb
Partially-Implements: blueprint watcher-versioned-objects
2016-11-07 10:37:14 +01:00
Hidekazu Nakamura
afdfd8161f [Doc] Fix strategy list optional argument
Optional argument --goal-uuid changed to --goal.
This patch fixes it.

Change-Id: I79dedc94d6437eda0363da91b5065724e22bc1c8
2016-11-04 16:29:34 +09:00
Atul Pandey
aae3f79fef Use Enum value instead of String Value
Fixing Gating Issue.

Change-Id: I64a0df9e27e09172119a3a8f5395204b7476f23d
2016-11-02 10:32:57 +00:00
Jenkins
86f4f6a979 Merge "Change "Openstack" to "OpenStack"" 2016-10-26 08:50:14 +00:00
liyanhang
b48b881c20 Change "Openstack" to "OpenStack"
According to the word choice convention in
http://docs.openstack.org/contributor-guide/writing-style/word-choice.html
We should use OpenStack instead of Openstack.

Change-Id: I4300305eabc8d7cfe0072e5ac345dab63303558c
2016-10-25 13:07:26 +00:00
qinchunhua
e681645a54 Avoid use xx=[] for parameter to initialize it's value
This patch is deprecated use xx = [] for the parameter initial value,
this parameter will only be initialized at the first call,this is not
what we expected.
Better choice is to set the initial value to None,
then initialize xx with xx= xx or [] in method body.

More details:http://effbot.org/zone/default-values.htm

Change-Id: Iee0648fd500422f48c3f7f35b5066fdc644ae308
2016-10-25 12:47:36 +00:00
Jenkins
111e04d5c3 Merge "Updated from global requirements" 2016-10-18 10:04:46 +00:00
Jenkins
26424ee670 Merge "Remove duplicate unittest" 2016-10-18 09:46:42 +00:00
Jenkins
a95b73f3bb Merge "Fix typo in docstring" 2016-10-18 09:46:34 +00:00
Alexander Chadin
ef0d133ba8 Transform KB into MB and normalize CPU
This patch set normalizes CPU for hardware.cpu.util meter and
transform KB into MB fetched from hardware.memory.used meter.

Change-Id: I6dd1d053e81f06c3adb6fb256ac77bbf55a07f3e
2016-10-18 11:21:18 +03:00
OpenStack Proposal Bot
40f98bfd07 Updated from global requirements
Change-Id: Ib8ad24fbf57fbbabc7224d2e2c203cf4aeee0bfb
2016-10-17 15:52:45 +00:00
Jenkins
10bf74041b Merge "Add strategy template doc" 2016-10-17 13:47:56 +00:00
Jenkins
b9969d4854 Merge "Fix typo in hooks.py" 2016-10-17 08:50:04 +00:00
Jenkins
989d9807e8 Merge "Test code tidy up" 2016-10-17 08:49:59 +00:00
Jenkins
751d5a00d0 Merge "Delete python bytecode file" 2016-10-17 08:49:49 +00:00
Jenkins
cc44e2a0c0 Merge "Drop MANIFEST.in - it's not needed by pbr" 2016-10-17 08:49:43 +00:00
Jenkins
0139d8537c Merge "Add service object to the watcher_db_schema" 2016-10-17 08:49:35 +00:00
qinchunhua
35e6565183 Delete python bytecode file
This patch delete python bytecode including
pyo before every test run.

Change-Id: Ie6406337072bebaaa94a2b5437a2c1cece107b56
2016-10-15 00:57:02 -04:00
Jenkins
ebc70a46db Merge "Add Audit Scope Handler" 2016-10-14 15:01:20 +00:00
David TARDIVEL
3de2d368c0 Add strategy template doc
Developer should provide a detailled documentation about his strategy
algorithm to make it even easier to use by a Watcher end user.
I propose in this changeset a template for strategy documentation.
you will find also a example with basic consolidation strategy.

Change-Id: I66da1a33b87a94b508dd23ac7dce4cae6f4e068b
2016-10-13 15:30:11 +00:00
Iswarya_Vakati
6331274708 Drop MANIFEST.in - it's not needed by pbr
watcher already uses PBR:-
setuptools.setup(
    setup_requires=['pbr>=1.8'],
    pbr=True)

This patch removes `MANIFEST.in` file as pbr generates a
sensible manifest from git files and some standard files
and it removes the need for an explicit `MANIFEST.in` file.

Change-Id: If1b80738e28d71fd9e9bb4939f94adfd721a041a
Closes-Bug:#1608980
2016-10-13 18:16:44 +05:30
Jenkins
ff81f237a7 Merge "Moved Watcher doc plugin outside main package" 2016-10-13 08:42:09 +00:00
Alexander Chadin
48cc6b2718 Add Audit Scope Handler
This patch set adds audit scope mechanism.
It also removes host_aggregate field.

Change-Id: Ia98ed180a93fc8c19599735e2b41471d322bae9a
Partially-Implements: blueprint define-the-audit-scope
2016-10-13 10:50:58 +03:00
Alexander Chadin
c34a1acbea Add service object to the watcher_db_schema
This patch set adds service object to the watcher_db_schema_diagram.txt
New watcher_db_schema_diagram.png is compiled and attached.

Partially-Implements: blueprint watcher-service-list
Change-Id: Ibaac9020b0cb9fb147259a8685a7a072216ff95d
2016-10-12 12:53:11 +00:00
Alexander Chadin
e7a1e148ca Add service supervisor
This patch set adds supervisor mechanism for Watcher services
to get ability to track states.

Partially-Implements: blueprint watcher-service-list
Change-Id: Iab1cefb971c79ed27b22b6a5d1bed8698e35f9a4
2016-10-12 15:52:06 +03:00
Jenkins
6cf796ca87 Merge "Added composite unique name constraints" 2016-10-12 12:45:53 +00:00
Jenkins
4f6d42e26a Merge "Updated from global requirements" 2016-10-12 12:13:06 +00:00
Jenkins
c3aac66add Merge "Stop adding ServiceAvailable group option" 2016-10-12 12:12:55 +00:00
OpenStack Proposal Bot
0a7a9e9ab4 Updated from global requirements
Change-Id: Ib9ba6bcb305584db7675db73850dee844e2e2c66
2016-10-11 19:17:31 +00:00
Vincent Françoise
3129f31208 Added Model base class + related doc
In this changeset I added a Model abtract base class for models
and updated the plugin docs to reference it. I also added the
CDM and CDMC acronyms to the glossary.

Change-Id: Ie7d76a9f84d545715fa6e5bf350b9d2321bab9e1
2016-10-11 17:48:14 +02:00
licanwei
cd2cd184eb Add RECOMMENDED state
The state of RECOMMENDED also can change to CANCELLED
state by Adminstrator.

Change-Id: Ia6a117367451e6fb35a55acfcbf0fb788063ea4b
2016-10-09 15:43:10 +08:00
Andreas Jaeger
f1a2de4138 Enable release notes translation
Releasenote translation publishing is being prepared. 'locale_dirs'
needs to be defined in conf.py to generate translated version of the
release notes.

Note that this repository might not get translated release notes - or
no translations at all - but we add the entry here nevertheless to
prepare for it.

Change-Id: I67b2202570e23d3f20f7d132b7d7dbb460a2af3f
2016-10-06 20:56:44 +02:00
Vincent Françoise
10cbcd2432 Added composite unique name constraints
In this changeset, I added composite contraints on models that
were currently subject to an implicit uniqueness.
This composite constraint takes as an input the name and the deleted
columns.
The 'deleted' column is 0 by default and is updated with the value of
the associated 'id' column upon soft deletion.
What this means is that this composite constraint guarantees the fact
that we can hold many soft deleted records holding the exact same name.
Indeed, the value of the deleted column will be different whilst
forbidding 2 non-soft deleted records with the same name as their
associated 'deleted' value will be 0 and subsequently violates the
constraint.

Change-Id: I3ee39e23aa4ca9bc6b4ea9af8c6b7e6d67af0136
2016-10-06 16:59:41 +02:00
Jenkins
431b54fb4c Merge "Watcher utils cleanup" 2016-10-05 15:50:11 +00:00
Vincent Françoise
f2e5702657 Added missing test on GMR plugin
The show_models() function was not covered by any test so this
changeset is adding a new unit test for it.

Change-Id: Ia861f049c1f1ee0aa623404e62fb002392c9052d
2016-10-05 15:41:56 +02:00
Vincent Françoise
96357aec04 Moved Watcher doc plugin outside main package
In this changeset, I renamed watcher/doc.py file as
doc/ext/term.py which subsequently does not get scanned for coverage
anymore. Hence, we can close this bug.

Change-Id: I9d700da6569b464ce71085fe78002521555002b9
Closes-bug: #1527163
2016-10-05 15:22:50 +02:00
Jenkins
eb0da97ea6 Merge "Updated from global requirements" 2016-10-04 16:36:36 +00:00
Nishant Kumar
631e1398a1 Stop adding ServiceAvailable group option
Service available group already exists.Therefore we don't need to
register this group here again.

Change-Id: I2096ed1f69a1f70fbf248fee5fded94e3caca6c6
Closes-Bug: #1621036
2016-10-04 20:48:11 +05:30
haris tanvir
db3b5b30b2 HasLength() rewritten to assertEqual()
HasLength() based assertions are re-written to assertEqual() based
assertion to homogenize the test code base.

For example:

assertThat(.., HasLength()) becomes assertEqual(len(),...)

Change-Id: Ia3bf24e34fffe445ff4b0ee61fb7cbc0eb36a57a
Closes-Bug:#1629898
2016-10-04 12:35:38 +05:00
OpenStack Proposal Bot
74acf2a3f2 Updated from global requirements
Change-Id: I19710f88c213dd34ed2d3bf75e208d6bfe206c0c
2016-10-03 14:17:48 +00:00
Jenkins
2642627da6 Merge "Docstrings should not start with a space" 2016-10-03 06:33:58 +00:00
Jenkins
09861a0d20 Merge "Fix capital letter in doc" 2016-10-03 06:31:03 +00:00
Jenkins
dddd29b04a Merge "Doc updates" 2016-09-28 16:12:40 +00:00
Ha Van Tu
abe37390ae Fix typo in docstring
This patch replaces typo "applicatin" by "application".

Change-Id: I3c117920966fcc4400ee30c368b61180b983dd8b
2016-09-28 12:06:44 +07:00
licanwei
8b37bef12d Remove duplicate unittest
In tests/api/test_hooks.py
the 'test_hook_without_traceback_debug'
and 'test_hook_without_traceback_debug_tracebacks'
have the same function.

Change-Id: I5209bc8b1251b77b7444d51531c3902529d11453
2016-09-28 10:47:03 +08:00
Jenkins
d3d85c4801 Merge "Fixed issue on compute nodes iteration" 2016-09-27 08:20:58 +00:00
zhangyanxian
0f9361ee6c Fix typo in hooks.py
TrivialFix

Change-Id: Iff206110433b9cd76a1a2b7c6475267a9c7a568c
2016-09-27 06:33:20 +00:00
Cao Xuan Hoang
c8d605984f Docstrings should not start with a space
As per OpenStack Docstrings guide lines [1]:
[H401] Docstrings should not start with a space.

[1] http://docs.openstack.org/developer/hacking/#docstrings

trivialfix

Change-Id: Ifdff563f3ab7559e68c7201575045013db7383a5
2016-09-27 13:01:12 +07:00
Jenkins
a5b485ae29 Merge "Refactored Tests to load scenarios from file" 2016-09-26 16:31:24 +00:00
Jenkins
0e4bae9391 Merge "Add constraint target to tox.ini and remove 1 dep" 2016-09-26 09:41:29 +00:00
Ha Van Tu
e7888b2844 Fix capital letter in doc
This patch replaces 'english' by 'English' in the Watcher doc.

Change-Id: I2de7100fbbbb4de5d2d6f9575c116986aa37982a
2016-09-26 16:10:37 +07:00
Vincent Françoise
d0ea20e4bc Doc updates
Updated inconsistent docs.

Change-Id: I4be05f662fee6ebdf721ac93dd97611b5a686273
2016-09-26 09:58:44 +02:00
Vincent Françoise
55591cce43 Watcher utils cleanup
As some of our utils function are actually available in oslo.utils,
this patchset simply gets rid of our local copy and instead references
the oslo.utils one. This will help us deport the code maintenance of
these to a 3rd party library.

Change-Id: I3760ebab69d35c37bbe78500918d4e46b5bd9119
2016-09-23 11:12:26 +02:00
Jenkins
21b3ac173a Merge "Fixed GMR configuration issue" 2016-09-21 14:37:42 +00:00
Jenkins
35a1ee7670 Merge "Fix typo in docstring from "interprete" to "interpret"" 2016-09-21 14:11:28 +00:00
Vincent Françoise
5112f294c8 Fixed GMR configuration issue
GMR was ignoring the config because the conf wasn't passed when
starting any of the Watcher services. This changeset fixes this issue.

Change-Id: If386c5f0459c4278a2a56c8c3185fcdafce673a0
2016-09-21 15:43:44 +02:00
Jenkins
28970d0512 Merge "Fix a typo in watcher.po" 2016-09-21 13:05:58 +00:00
David TARDIVEL
83d06cef5f Add constraint target to tox.ini and remove 1 dep
This adds a pip install command to tox.ini that is only used when the
tox env is passed with the 'constraints' factor appended onto it.
As such this will not effect developer workflows or current unit tests.

The initial use of this will be in a non-voting job, to verify that the
constrained checks with tox are stable.  DevStack is already running
constrained jobs, as such problems are no expected.

To run a tox with pip using constraints on a developer system a
developer should run the desired tox environment with -constraints.
For example: $(tox -epy27-constraints)
Pip will pull the current version of the upper-constraints.txt file down
from the git.openstack.org, however this method can be overriden to use
a local file setting the environment variable "UPPER_CONSTRAINTS_FILE"
to the local path or a different URL, it is passed directly to pip.

This is currently not enabled in the default tox run, however it is
possible to enable it as a default by adding it to 'envlist' in tox.ini

This also removes requirements.txt from tox.ini deps
This is redundant, per lifeless email:
http://lists.openstack.org/pipermail/openstack-dev/2015-July/069663.html

Change-Id: I79c0ceb46fc980840a8baf5fa4a303bb450bfbec
2016-09-21 10:09:47 +00:00
Jenkins
f2ec9fc99a Merge "'tox -e py27' failed" 2016-09-21 09:20:10 +00:00
OpenStack Proposal Bot
0d6166760a Updated from global requirements
Change-Id: I17b916ccbb31ca6bf72579fc10327e2e91ec3cf2
2016-09-21 07:35:28 +00:00
licanwei
d8ae88dd40 'tox -e py27' failed
cfg.CONF.debug should be set False as default,
If it's True, some unittests can't pass.

Change-Id: Ib098250af3aec48aa9d9152e20c80460f3bd641e
Closes-Bug: #1625560
2016-09-21 15:28:00 +08:00
Ha Van Tu
9eeaa07188 Fix typo in docstring from "interprete" to "interpret"
Change-Id: I931aa71dcf208a33ad8f48037b1296a4339e9b76
2016-09-21 12:16:36 +07:00
zhangyanxian
88b04dba2c Fix a typo in watcher.po
TrivialFix

Change-Id: I71a5338df14c5f5b65bed93fc26dabde447c596c
2016-09-21 03:19:35 +00:00
Jenkins
adf65f9f42 Merge "Deactivate dashboard plugin until fixed" 2016-09-20 16:18:06 +00:00
Vincent Françoise
1fc59cca9f Deactivate dashboard plugin until fixed
I deactivated the watcher-dashboard plugin in the docs since it
doesn't at the moment. Will be reactivated once it gets fixed
(see https://bugs.launchpad.net/devstack/+bug/1540328).

Change-Id: I65de8ca4a08cdb294d0e48eac52927eed13ec66c
2016-09-20 17:23:27 +02:00
Jenkins
1887ae402f Merge "Fix a typo in basic_consolidation.py" 2016-09-20 10:11:56 +00:00
licanwei
7714f48520 remove redundant word
root.description = ("Watcher is an OpenStack project which aims to"
                    "to improve physical resources usage through"
Here more one 'to'

Change-Id: I3dac6cb15af43583a1360b7f2f14d4e2c9c26cf9
2016-09-20 15:54:55 +08:00
licanwei
f741434209 Fix a typo in basic_consolidation.py
LOG.info(_LI("Initializing Sercon Consolidation"))
here 'Sercon' should be 'Server'

Change-Id: I3dc341a49066a7280bebb75471c8b433c7d0c1e7
2016-09-20 14:25:36 +08:00
Jenkins
3a3ce0268b Merge "Update Watcher description" 2016-09-19 13:33:33 +00:00
Jenkins
e647c8e01d Merge "Update reno for stable/newton" 2016-09-19 13:11:54 +00:00
Antoine Cabot
8cf233ab03 Update Watcher description
This change-set update Watcher description
as it is used in the ML to announce each
new release.

Change-Id: I6318107c3e3322a3ef734e90c9e3e0176967ceaf
2016-09-19 15:00:00 +02:00
Vincent Françoise
56a9dd0f08 Test code tidy up
Removed some comments and replace some hardocded values with the
correct variable.

Change-Id: Ica897f2de25c9de04ec2d0f94e7a13e84ee97dbb
2016-09-19 10:50:04 +02:00
Thierry Carrez
f79bed060c Update reno for stable/newton
Change-Id: Ia64ef5a4c1cd135b1bf4bbc8486270a0ff067122
2016-09-16 14:51:10 +00:00
Jenkins
e32df3c5eb Merge "Updated from global requirements" 2016-09-16 13:35:32 +00:00
Vincent Françoise
55537d254e Fixed issue on compute nodes iteration
In this changeset, I fixed the issue with the basic server
consolidation strategy to now loop over all compute nodes
as expected instead of stopping after the first one.

Change-Id: If594f0df41e39dfb0ef8f0fce41822018490c4ec
Closes-bug: #1548874
2016-09-16 14:55:51 +02:00
Vincent Françoise
e621f5ddc6 Refactored Tests to load scenarios from file
In this changeset, I simplified the logic that is used to create
cluster data model scenarios.

Change-Id: Ia6e138d9897190d3207a70485dc62ccc34087686
2016-09-16 14:51:42 +02:00
Jenkins
fc36a7a698 Merge "Remove group_by statement in metric queries" 2016-09-16 08:23:51 +00:00
OpenStack Proposal Bot
b2fe413a53 Updated from global requirements
Change-Id: I1dbcf1796b49de27fa8fb6711e4610fb934ba000
2016-09-15 20:27:53 +00:00
David TARDIVEL
b6ab86c45a Remove group_by statement in metric queries
ceilosca seems to not correctly handle group_by statement.
I remove it, because we don't need it for now.

Change-Id: Ie18551ba5a6bd155f9f4ae9c29c25b379affe019
Closes-Bug: #1623983
2016-09-15 17:16:38 +02:00
515 changed files with 32580 additions and 11992 deletions

12
.gitignore vendored
View File

@@ -4,8 +4,7 @@
*.so
# Packages
*.egg
*.egg-info
*.egg*
dist
build
eggs
@@ -43,9 +42,11 @@ output/*/index.html
# Sphinx
doc/build
doc/source/api
doc/source/api/*
doc/source/samples
doc/source/watcher.conf.sample
doc/source/_static/*.sample
!doc/source/api/index.rst
!doc/source/api/v1.rst
# pbr generates these
AUTHORS
@@ -71,3 +72,6 @@ releasenotes/build
# Desktop Service Store
*.DS_Store
# Autogenerated sample config file
etc/watcher/watcher.conf.sample

View File

@@ -1,13 +1,13 @@
If you would like to contribute to the development of OpenStack,
you must follow the steps in this page:
http://docs.openstack.org/infra/manual/developers.html
https://docs.openstack.org/infra/manual/developers.html
Once those steps have been completed, changes to OpenStack
should be submitted for review via the Gerrit tool, following
the workflow documented at:
http://docs.openstack.org/infra/manual/developers.html#development-workflow
https://docs.openstack.org/infra/manual/developers.html#development-workflow
Pull requests submitted through GitHub will be ignored.

View File

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

View File

@@ -1,6 +0,0 @@
include AUTHORS
include ChangeLog
exclude .gitignore
exclude .gitreview
global-exclude *.pyc

View File

@@ -1,3 +1,12 @@
========================
Team and repository tags
========================
.. image:: https://governance.openstack.org/badges/watcher.svg
:target: https://governance.openstack.org/reference/tags/index.html
.. Change things from this point on
..
Except where otherwise noted, this document is licensed under Creative
Commons Attribution 3.0 License. You can view the license at:
@@ -10,15 +19,13 @@ Watcher
OpenStack Watcher provides a flexible and scalable resource optimization
service for multi-tenant OpenStack-based clouds.
Watcher provides a complete optimization loop-including everything from a
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
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!
* Free software: Apache license
* Wiki: http://wiki.openstack.org/wiki/Watcher
* Wiki: https://wiki.openstack.org/wiki/Watcher
* Source: https://github.com/openstack/watcher
* Bugs: http://bugs.launchpad.net/watcher
* Documentation: http://docs.openstack.org/developer/watcher/
* Bugs: https://bugs.launchpad.net/watcher
* Documentation: https://docs.openstack.org/watcher/latest/

View File

@@ -0,0 +1,42 @@
# 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.
# This is an example Apache2 configuration file for using the
# Watcher API through mod_wsgi. This version assumes you are
# running devstack to configure the software.
Listen %WATCHER_SERVICE_PORT%
<VirtualHost *:%WATCHER_SERVICE_PORT%>
WSGIDaemonProcess watcher-api user=%USER% processes=%APIWORKERS% threads=1 display-name=%{GROUP}
WSGIScriptAlias / %WATCHER_WSGI_DIR%/app.wsgi
WSGIApplicationGroup %{GLOBAL}
WSGIProcessGroup watcher-api
WSGIPassAuthorization On
ErrorLogFormat "%M"
ErrorLog /var/log/%APACHE_NAME%/watcher-api.log
CustomLog /var/log/%APACHE_NAME%/watcher-api-access.log combined
<Directory %WATCHER_WSGI_DIR%>
WSGIProcessGroup watcher-api
WSGIApplicationGroup %{GLOBAL}
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>
</VirtualHost>

View File

@@ -44,6 +44,9 @@ WATCHER_CONF_DIR=/etc/watcher
WATCHER_CONF=$WATCHER_CONF_DIR/watcher.conf
WATCHER_POLICY_JSON=$WATCHER_CONF_DIR/policy.json
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
@@ -51,6 +54,13 @@ if is_ssl_enabled_service "watcher" || is_service_enabled tls-proxy; then
WATCHER_SERVICE_PROTOCOL="https"
fi
WATCHER_USE_MOD_WSGI=$(trueorfalse True WATCHER_USE_MOD_WSGI)
if is_suse; then
WATCHER_WSGI_DIR=${WATCHER_WSGI_DIR:-/srv/www/htdocs/watcher}
else
WATCHER_WSGI_DIR=${WATCHER_WSGI_DIR:-/var/www/watcher}
fi
# Public facing bits
WATCHER_SERVICE_HOST=${WATCHER_SERVICE_HOST:-$HOST_IP}
WATCHER_SERVICE_PORT=${WATCHER_SERVICE_PORT:-9322}
@@ -74,10 +84,21 @@ function is_watcher_enabled {
return 1
}
#_cleanup_watcher_apache_wsgi - Remove wsgi files,
#disable and remove apache vhost file
function _cleanup_watcher_apache_wsgi {
sudo rm -rf $WATCHER_WSGI_DIR
sudo rm -f $(apache_site_config_for watcher-api)
restart_apache_server
}
# cleanup_watcher() - Remove residual data files, anything left over from previous
# runs that a clean run would need to clean up
function cleanup_watcher {
sudo rm -rf $WATCHER_STATE_PATH $WATCHER_AUTH_CACHE_DIR
if [[ "$WATCHER_USE_MOD_WSGI" == "True" ]]; then
_cleanup_watcher_apache_wsgi
fi
}
# configure_watcher() - Set config files, create data dirs, etc
@@ -108,6 +129,28 @@ function create_watcher_accounts {
"$WATCHER_SERVICE_PROTOCOL://$WATCHER_SERVICE_HOST:$WATCHER_SERVICE_PORT"
}
# _config_watcher_apache_wsgi() - Set WSGI config files of watcher
function _config_watcher_apache_wsgi {
local watcher_apache_conf
if [[ "$WATCHER_USE_MOD_WSGI" == "True" ]]; then
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_WSGI_DIR%|$WATCHER_WSGI_DIR|g;
s|%USER%|$STACK_USER|g;
s|%APIWORKERS%|$API_WORKERS|g;
s|%APACHE_NAME%|$APACHE_NAME|g;
" -i $watcher_apache_conf
enable_apache_site watcher-api
tail_log watcher-access /var/log/$APACHE_NAME/watcher-api-access.log
tail_log watcher-api /var/log/$APACHE_NAME/watcher-api.log
fi
}
# create_watcher_conf() - Create a new watcher.conf file
function create_watcher_conf {
# (Re)create ``watcher.conf``
@@ -126,7 +169,10 @@ function create_watcher_conf {
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"
@@ -151,9 +197,13 @@ function create_watcher_conf {
setup_colorized_logging $WATCHER_CONF DEFAULT
else
# Show user_name and project_name instead of user_id and project_id
iniset $WATCHER_CONF DEFAULT logging_context_format_string "%(asctime)s.%(msecs)03d %(levelname)s %(name)s [%(request_id)s %(user_name)s %(project_name)s] %(instance)s%(message)s"
iniset $WATCHER_CONF DEFAULT logging_context_format_string "%(asctime)s.%(msecs)03d %(levelname)s %(name)s [%(request_id)s %(project_domain)s %(user_name)s %(project_name)s] %(instance)s%(message)s"
fi
#config apache files
if [[ "$WATCHER_USE_MOD_WSGI" == "True" ]]; then
_config_watcher_apache_wsgi
fi
# Register SSL certificates if provided
if is_ssl_enabled_service watcher; then
ensure_certificates WATCHER
@@ -185,7 +235,7 @@ function init_watcher {
recreate_database watcher
# Create watcher schema
$WATCHER_BIN_DIR/watcher-db-manage --config-file $WATCHER_CONF create_schema
$WATCHER_BIN_DIR/watcher-db-manage --config-file $WATCHER_CONF upgrade
fi
create_watcher_cache_dir
}
@@ -202,19 +252,26 @@ function install_watcherclient {
function install_watcher {
git_clone $WATCHER_REPO $WATCHER_DIR $WATCHER_BRANCH
setup_develop $WATCHER_DIR
if [[ "$WATCHER_USE_MOD_WSGI" == "True" ]]; then
install_apache_wsgi
fi
}
# start_watcher_api() - Start the API process ahead of other things
function start_watcher_api {
# Get right service port for testing
local service_port=$WATCHER_SERVICE_PORT
local service_protocol=$WATCHER_SERVICE_PROTOCOL
if is_service_enabled tls-proxy; then
service_port=$WATCHER_SERVICE_PORT_INT
service_protocol="http"
fi
run_process watcher-api "$WATCHER_BIN_DIR/watcher-api --config-file $WATCHER_CONF"
if [[ "$WATCHER_USE_MOD_WSGI" == "True" ]]; then
restart_apache_server
else
run_process watcher-api "$WATCHER_BIN_DIR/watcher-api --config-file $WATCHER_CONF"
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"
@@ -237,7 +294,12 @@ function start_watcher {
# stop_watcher() - Stop running processes (non-screen)
function stop_watcher {
for serv in watcher-api watcher-decision-engine watcher-applier; do
if [[ "$WATCHER_USE_MOD_WSGI" == "True" ]]; then
disable_apache_site watcher-api
else
stop_process watcher-api
fi
for serv in watcher-decision-engine watcher-applier; do
stop_process $serv
done
}

View File

@@ -25,7 +25,7 @@ GLANCE_HOSTPORT=${SERVICE_HOST}:9292
DATABASE_TYPE=mysql
# Enable services (including neutron)
ENABLED_SERVICES=n-cpu,n-api-meta,c-vol,q-agt
ENABLED_SERVICES=n-cpu,n-api-meta,c-vol,q-agt,placement-client
NOVA_VNC_ENABLED=True
NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_auto.html"
@@ -44,3 +44,6 @@ 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

@@ -17,16 +17,13 @@ NETWORK_GATEWAY=10.254.1.1 # Change this for your network
MULTI_HOST=1
#Set this to FALSE if do not want to run watcher-api behind mod-wsgi
#WATCHER_USE_MOD_WSGI=TRUE
# This is the controller node, so disable nova-compute
disable_service n-cpu
# Disable nova-network and use neutron instead
disable_service n-net
ENABLED_SERVICES+=,q-svc,q-dhcp,q-meta,q-agt,q-l3,neutron
# Enable remote console access
enable_service n-cauth
# Enable the Watcher Dashboard plugin
enable_plugin watcher-dashboard git://git.openstack.org/openstack/watcher-dashboard
@@ -39,9 +36,18 @@ enable_plugin ceilometer git://git.openstack.org/openstack/ceilometer
# This is the controller node, so disable the ceilometer compute agent
disable_service ceilometer-acompute
# Enable the ceilometer api explicitly(bug:1667678)
enable_service ceilometer-api
# Enable the Gnocchi plugin
enable_plugin gnocchi https://github.com/gnocchixyz/gnocchi
LOGFILE=$DEST/logs/stack.sh.log
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

@@ -7,7 +7,7 @@ _XTRACE_WATCHER_PLUGIN=$(set +o | grep xtrace)
set -o xtrace
echo_summary "watcher's plugin.sh was called..."
source $DEST/watcher/devstack/lib/watcher
. $DEST/watcher/devstack/lib/watcher
# Show all of defined environment variables
(set -o posix; set)

View File

@@ -1,4 +1,3 @@
# -*- encoding: utf-8 -*-
# Copyright (c) 2015 b<>com
#
# Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,7 +22,7 @@ from docutils import nodes
from docutils.parsers import rst
from docutils import statemachine
from watcher.version import version_info
from watcher.version import version_string
class BaseWatcherDirective(rst.Directive):
@@ -75,7 +74,7 @@ class WatcherTerm(BaseWatcherDirective):
# Inside your .rst file
.. watcher-term:: import.path.to.your.DocumentedObject
This directive will then import the docstring and then interprete it.
This directive will then import the docstring and then interpret it.
"""
# You need to put an import path as an argument for this directive to work
@@ -85,7 +84,12 @@ class WatcherTerm(BaseWatcherDirective):
cls_path = self.arguments[0]
try:
cls = importlib.import_module(cls_path)
try:
cls = importlib.import_module(cls_path)
except ImportError:
module_name, cls_name = cls_path.rsplit('.', 1)
mod = importlib.import_module(module_name)
cls = getattr(mod, cls_name)
except Exception as exc:
raise self.error(exc)
@@ -97,6 +101,72 @@ class WatcherTerm(BaseWatcherDirective):
return node.children
class WatcherFunc(BaseWatcherDirective):
"""Directive to import a value returned by a func into the Watcher doc
**How to use it**
# inside your .py file
class Bar(object):
def foo(object):
return foo_string
# Inside your .rst file
.. watcher-func:: import.path.to.your.Bar.foo node_classname
node_classname is decumented here:
http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html
This directive will then import the value and then interpret it.
"""
# You need to put an import path as an argument for this directive to work
# required_arguments = 1
# optional_arguments = 1
option_spec = {'format': rst.directives.unchanged}
has_content = True
def run(self):
if not self.content:
error = self.state_machine.reporter.error(
'The "%s" directive is empty; content required.' % self.name,
nodes.literal_block(self.block_text, self.block_text),
line=self.lineno)
return [error]
func_path = self.content[0]
try:
cls_path, func_name = func_path.rsplit('.', 1)
module_name, cls_name = cls_path.rsplit('.', 1)
mod = importlib.import_module(module_name)
cls = getattr(mod, cls_name)
except Exception as exc:
raise self.error(exc)
cls_obj = cls()
func = getattr(cls_obj, func_name)
textblock = func()
if not isinstance(textblock, str):
textblock = str(textblock)
self.add_textblock(textblock)
try:
node_class = getattr(nodes,
self.options.get('format', 'paragraph'))
except Exception as exc:
raise self.error(exc)
node = node_class()
node.document = self.state.document
self.state.nested_parse(self.result, 0, node)
return [node]
def setup(app):
app.add_directive('watcher-term', WatcherTerm)
return {'version': version_info.version_string()}
app.add_directive('watcher-func', WatcherFunc)
return {'version': version_string}

View File

@@ -0,0 +1,133 @@
# 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.
"""
This provides a sphinx extension able to list the implemented versioned
notifications into the developer documentation.
It is used via a single directive in the .rst file
.. versioned_notifications::
"""
from sphinx.util.compat import Directive
from docutils import nodes
from watcher.notifications import base as notification
from watcher.objects import base
class VersionedNotificationDirective(Directive):
SAMPLE_ROOT = 'doc/notification_samples/'
TOGGLE_SCRIPT = """
<script>
jQuery(document).ready(function(){
jQuery('#%s-div').toggle('show');
jQuery('#%s-hideshow').on('click', function(event) {
jQuery('#%s-div').toggle('show');
});
});
</script>
"""
def run(self):
notifications = self._collect_notifications()
return self._build_markup(notifications)
def _collect_notifications(self):
base.WatcherObjectRegistry.register_notification_objects()
notifications = []
ovos = base.WatcherObjectRegistry.obj_classes()
for name, cls in ovos.items():
cls = cls[0]
if (issubclass(cls, notification.NotificationBase) and
cls != notification.NotificationBase):
payload_name = cls.fields['payload'].objname
payload_cls = ovos[payload_name][0]
for sample in cls.samples:
notifications.append((cls.__name__,
payload_cls.__name__,
sample))
return sorted(notifications)
def _build_markup(self, notifications):
content = []
cols = ['Event type', 'Notification class', 'Payload class', 'Sample']
table = nodes.table()
content.append(table)
group = nodes.tgroup(cols=len(cols))
table.append(group)
head = nodes.thead()
group.append(head)
for _ in cols:
group.append(nodes.colspec(colwidth=1))
body = nodes.tbody()
group.append(body)
# fill the table header
row = nodes.row()
body.append(row)
for col_name in cols:
col = nodes.entry()
row.append(col)
text = nodes.strong(text=col_name)
col.append(text)
# fill the table content, one notification per row
for name, payload, sample_file in notifications:
event_type = sample_file[0: -5].replace('-', '.')
row = nodes.row()
body.append(row)
col = nodes.entry()
row.append(col)
text = nodes.literal(text=event_type)
col.append(text)
col = nodes.entry()
row.append(col)
text = nodes.literal(text=name)
col.append(text)
col = nodes.entry()
row.append(col)
text = nodes.literal(text=payload)
col.append(text)
col = nodes.entry()
row.append(col)
with open(self.SAMPLE_ROOT + sample_file, 'r') as f:
sample_content = f.read()
event_type = sample_file[0: -5]
html_str = self.TOGGLE_SCRIPT % ((event_type, ) * 3)
html_str += ("<input type='button' id='%s-hideshow' "
"value='hide/show sample'>" % event_type)
html_str += ("<div id='%s-div'><pre>%s</pre></div>"
% (event_type, sample_content))
raw = nodes.raw('', html_str, format="html")
col.append(raw)
return content
def setup(app):
app.add_directive('versioned_notifications',
VersionedNotificationDirective)

View File

@@ -0,0 +1,41 @@
{
"priority": "INFO",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionCancelPayload",
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"input_parameters": {
"param2": 2,
"param1": 1
},
"fault": null,
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "CANCELLED",
"action_plan": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "TerseActionPlanPayload",
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "CANCELLING",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"deleted_at": null
}
},
"parents": [],
"action_type": "nop",
"deleted_at": null
}
},
"event_type": "action.cancel.end",
"publisher_id": "infra-optim:node0",
"timestamp": "2017-01-01 00:00:00.000000",
"message_id": "530b409c-9b6b-459b-8f08-f93dbfeb4d41"
}

View File

@@ -0,0 +1,51 @@
{
"priority": "ERROR",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionCancelPayload",
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"input_parameters": {
"param2": 2,
"param1": 1
},
"fault": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ExceptionPayload",
"watcher_object.data": {
"module_name": "watcher.tests.notifications.test_action_notification",
"exception": "WatcherException",
"exception_message": "TEST",
"function_name": "test_send_action_cancel_with_error"
}
},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "FAILED",
"action_plan": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "TerseActionPlanPayload",
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "CANCELLING",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"deleted_at": null
}
},
"parents": [],
"action_type": "nop",
"deleted_at": null
}
},
"event_type": "action.cancel.error",
"publisher_id": "infra-optim:node0",
"timestamp": "2017-01-01 00:00:00.000000",
"message_id": "530b409c-9b6b-459b-8f08-f93dbfeb4d41"
}

View File

@@ -0,0 +1,41 @@
{
"priority": "INFO",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionCancelPayload",
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"input_parameters": {
"param2": 2,
"param1": 1
},
"fault": null,
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "CANCELLING",
"action_plan": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "TerseActionPlanPayload",
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "CANCELLING",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"deleted_at": null
}
},
"parents": [],
"action_type": "nop",
"deleted_at": null
}
},
"event_type": "action.cancel.start",
"publisher_id": "infra-optim:node0",
"timestamp": "2017-01-01 00:00:00.000000",
"message_id": "530b409c-9b6b-459b-8f08-f93dbfeb4d41"
}

View File

@@ -0,0 +1,40 @@
{
"priority": "INFO",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionCreatePayload",
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"input_parameters": {
"param2": 2,
"param1": 1
},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "PENDING",
"action_plan": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "TerseActionPlanPayload",
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "ONGOING",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"deleted_at": null
}
},
"parents": [],
"action_type": "nop",
"deleted_at": null
}
},
"publisher_id": "infra-optim:node0",
"timestamp": "2017-01-01 00:00:00.000000",
"event_type": "action.create",
"message_id": "530b409c-9b6b-459b-8f08-f93dbfeb4d41"
}

View File

@@ -0,0 +1,40 @@
{
"priority": "INFO",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionDeletePayload",
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"input_parameters": {
"param2": 2,
"param1": 1
},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "DELETED",
"action_plan": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "TerseActionPlanPayload",
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "ONGOING",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"deleted_at": null
}
},
"parents": [],
"action_type": "nop",
"deleted_at": null
}
},
"publisher_id": "infra-optim:node0",
"timestamp": "2017-01-01 00:00:00.000000",
"event_type": "action.delete",
"message_id": "530b409c-9b6b-459b-8f08-f93dbfeb4d41"
}

View File

@@ -0,0 +1,41 @@
{
"priority": "INFO",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionExecutionPayload",
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"input_parameters": {
"param2": 2,
"param1": 1
},
"fault": null,
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "SUCCEEDED",
"action_plan": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "TerseActionPlanPayload",
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "ONGOING",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"deleted_at": null
}
},
"parents": [],
"action_type": "nop",
"deleted_at": null
}
},
"event_type": "action.execution.end",
"publisher_id": "infra-optim:node0",
"timestamp": "2017-01-01 00:00:00.000000",
"message_id": "530b409c-9b6b-459b-8f08-f93dbfeb4d41"
}

View File

@@ -0,0 +1,51 @@
{
"priority": "ERROR",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionExecutionPayload",
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"input_parameters": {
"param2": 2,
"param1": 1
},
"fault": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ExceptionPayload",
"watcher_object.data": {
"module_name": "watcher.tests.notifications.test_action_notification",
"exception": "WatcherException",
"exception_message": "TEST",
"function_name": "test_send_action_execution_with_error"
}
},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "FAILED",
"action_plan": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "TerseActionPlanPayload",
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "ONGOING",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"deleted_at": null
}
},
"parents": [],
"action_type": "nop",
"deleted_at": null
}
},
"event_type": "action.execution.error",
"publisher_id": "infra-optim:node0",
"timestamp": "2017-01-01 00:00:00.000000",
"message_id": "530b409c-9b6b-459b-8f08-f93dbfeb4d41"
}

View File

@@ -0,0 +1,41 @@
{
"priority": "INFO",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionExecutionPayload",
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"input_parameters": {
"param2": 2,
"param1": 1
},
"fault": null,
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "ONGOING",
"action_plan": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "TerseActionPlanPayload",
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "ONGOING",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"deleted_at": null
}
},
"parents": [],
"action_type": "nop",
"deleted_at": null
}
},
"event_type": "action.execution.start",
"publisher_id": "infra-optim:node0",
"timestamp": "2017-01-01 00:00:00.000000",
"message_id": "530b409c-9b6b-459b-8f08-f93dbfeb4d41"
}

View File

@@ -0,0 +1,49 @@
{
"priority": "INFO",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionUpdatePayload",
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"input_parameters": {
"param2": 2,
"param1": 1
},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state_update": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "ActionStateUpdatePayload",
"watcher_object.data": {
"old_state": "PENDING",
"state": "ONGOING"
}
},
"state": "ONGOING",
"action_plan": {
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0",
"watcher_object.name": "TerseActionPlanPayload",
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"state": "ONGOING",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"deleted_at": null
}
},
"parents": [],
"action_type": "nop",
"deleted_at": null
}
},
"event_type": "action.update",
"publisher_id": "infra-optim:node0",
"timestamp": "2017-01-01 00:00:00.000000",
"message_id": "530b409c-9b6b-459b-8f08-f93dbfeb4d41"
}

View File

@@ -0,0 +1,55 @@
{
"event_type": "action_plan.cancel.end",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "ActionPlanCancelPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"audit": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "TerseAuditPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"scope": [],
"audit_type": "ONESHOT",
"state": "SUCCEEDED",
"parameters": {},
"interval": null,
"updated_at": null
}
},
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"fault": null,
"state": "CANCELLED",
"global_efficacy": {},
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"strategy": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"name": "TEST",
"uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"parameters_spec": {},
"display_name": "test strategy",
"updated_at": null
}
},
"updated_at": null
}
},
"priority": "INFO",
"message_id": "3984dc2b-8aef-462b-a220-8ae04237a56e",
"timestamp": "2016-10-18 09:52:05.219414",
"publisher_id": "infra-optim:node0"
}

View File

@@ -0,0 +1,65 @@
{
"event_type": "action_plan.cancel.error",
"publisher_id": "infra-optim:node0",
"priority": "ERROR",
"message_id": "9a45c5ae-0e21-4300-8fa0-5555d52a66d9",
"payload": {
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher",
"watcher_object.name": "ActionPlanCancelPayload",
"watcher_object.data": {
"fault": {
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher",
"watcher_object.name": "ExceptionPayload",
"watcher_object.data": {
"exception_message": "TEST",
"module_name": "watcher.tests.notifications.test_action_plan_notification",
"function_name": "test_send_action_plan_cancel_with_error",
"exception": "WatcherException"
}
},
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"created_at": "2016-10-18T09:52:05Z",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"strategy": {
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher",
"watcher_object.name": "StrategyPayload",
"watcher_object.data": {
"uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"created_at": "2016-10-18T09:52:05Z",
"name": "TEST",
"updated_at": null,
"display_name": "test strategy",
"parameters_spec": {},
"deleted_at": null
}
},
"updated_at": null,
"deleted_at": null,
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"audit": {
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher",
"watcher_object.name": "TerseAuditPayload",
"watcher_object.data": {
"parameters": {},
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"created_at": "2016-10-18T09:52:05Z",
"scope": [],
"updated_at": null,
"audit_type": "ONESHOT",
"interval": null,
"deleted_at": null,
"state": "SUCCEEDED"
}
},
"global_efficacy": {},
"state": "CANCELLING"
}
},
"timestamp": "2016-10-18 09:52:05.219414"
}

View File

@@ -0,0 +1,55 @@
{
"event_type": "action_plan.cancel.start",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "ActionPlanCancelPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"audit": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "TerseAuditPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"scope": [],
"audit_type": "ONESHOT",
"state": "SUCCEEDED",
"parameters": {},
"interval": null,
"updated_at": null
}
},
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"fault": null,
"state": "CANCELLING",
"global_efficacy": {},
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"strategy": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"name": "TEST",
"uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"parameters_spec": {},
"display_name": "test strategy",
"updated_at": null
}
},
"updated_at": null
}
},
"priority": "INFO",
"message_id": "3984dc2b-8aef-462b-a220-8ae04237a56e",
"timestamp": "2016-10-18 09:52:05.219414",
"publisher_id": "infra-optim:node0"
}

View File

@@ -0,0 +1,54 @@
{
"publisher_id": "infra-optim:node0",
"payload": {
"watcher_object.version": "1.0",
"watcher_object.data": {
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"strategy": {
"watcher_object.version": "1.0",
"watcher_object.data": {
"uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"display_name": "test strategy",
"name": "TEST",
"updated_at": null,
"parameters_spec": {},
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null
},
"watcher_object.namespace": "watcher",
"watcher_object.name": "StrategyPayload"
},
"created_at": null,
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"audit": {
"watcher_object.version": "1.0",
"watcher_object.data": {
"audit_type": "ONESHOT",
"scope": [],
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"parameters": {},
"interval": null,
"deleted_at": null,
"state": "PENDING",
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null
},
"watcher_object.namespace": "watcher",
"watcher_object.name": "TerseAuditPayload"
},
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"global_efficacy": {},
"deleted_at": null,
"state": "RECOMMENDED",
"updated_at": null
},
"watcher_object.namespace": "watcher",
"watcher_object.name": "ActionPlanCreatePayload"
},
"priority": "INFO",
"message_id": "5148bff1-ea06-4ad6-8e4e-8c85ca5eb629",
"event_type": "action_plan.create",
"timestamp": "2016-10-18 09:52:05.219414"
}

View File

@@ -0,0 +1,54 @@
{
"publisher_id": "infra-optim:node0",
"timestamp": "2016-10-18 09:52:05.219414",
"payload": {
"watcher_object.data": {
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"created_at": "2016-10-18T09:52:05Z",
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"audit": {
"watcher_object.data": {
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"interval": null,
"audit_type": "ONESHOT",
"scope": [],
"updated_at": null,
"deleted_at": null,
"state": "PENDING",
"created_at": "2016-10-18T09:52:05Z",
"parameters": {}
},
"watcher_object.version": "1.0",
"watcher_object.name": "TerseAuditPayload",
"watcher_object.namespace": "watcher"
},
"global_efficacy": {},
"updated_at": null,
"deleted_at": null,
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"strategy": {
"watcher_object.data": {
"uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"created_at": "2016-10-18T09:52:05Z",
"name": "TEST",
"display_name": "test strategy",
"deleted_at": null,
"updated_at": null,
"parameters_spec": {}
},
"watcher_object.version": "1.0",
"watcher_object.name": "StrategyPayload",
"watcher_object.namespace": "watcher"
},
"state": "DELETED"
},
"watcher_object.version": "1.0",
"watcher_object.name": "ActionPlanDeletePayload",
"watcher_object.namespace": "watcher"
},
"event_type": "action_plan.delete",
"message_id": "3d137686-a1fd-4683-ab40-c4210aac2140",
"priority": "INFO"
}

View File

@@ -0,0 +1,55 @@
{
"event_type": "action_plan.execution.end",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "ActionPlanActionPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"audit": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "TerseAuditPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"scope": [],
"audit_type": "ONESHOT",
"state": "SUCCEEDED",
"parameters": {},
"interval": null,
"updated_at": null
}
},
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"fault": null,
"state": "ONGOING",
"global_efficacy": {},
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"strategy": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"name": "TEST",
"uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"parameters_spec": {},
"display_name": "test strategy",
"updated_at": null
}
},
"updated_at": null
}
},
"priority": "INFO",
"message_id": "3984dc2b-8aef-462b-a220-8ae04237a56e",
"timestamp": "2016-10-18 09:52:05.219414",
"publisher_id": "infra-optim:node0"
}

View File

@@ -0,0 +1,65 @@
{
"event_type": "action_plan.execution.error",
"publisher_id": "infra-optim:node0",
"priority": "ERROR",
"message_id": "9a45c5ae-0e21-4300-8fa0-5555d52a66d9",
"payload": {
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher",
"watcher_object.name": "ActionPlanActionPayload",
"watcher_object.data": {
"fault": {
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher",
"watcher_object.name": "ExceptionPayload",
"watcher_object.data": {
"exception_message": "TEST",
"module_name": "watcher.tests.notifications.test_action_plan_notification",
"function_name": "test_send_action_plan_action_with_error",
"exception": "WatcherException"
}
},
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"created_at": "2016-10-18T09:52:05Z",
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"strategy": {
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher",
"watcher_object.name": "StrategyPayload",
"watcher_object.data": {
"uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"created_at": "2016-10-18T09:52:05Z",
"name": "TEST",
"updated_at": null,
"display_name": "test strategy",
"parameters_spec": {},
"deleted_at": null
}
},
"updated_at": null,
"deleted_at": null,
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"audit": {
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher",
"watcher_object.name": "TerseAuditPayload",
"watcher_object.data": {
"parameters": {},
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"created_at": "2016-10-18T09:52:05Z",
"scope": [],
"updated_at": null,
"audit_type": "ONESHOT",
"interval": null,
"deleted_at": null,
"state": "PENDING"
}
},
"global_efficacy": {},
"state": "ONGOING"
}
},
"timestamp": "2016-10-18 09:52:05.219414"
}

View File

@@ -0,0 +1,55 @@
{
"event_type": "action_plan.execution.start",
"payload": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "ActionPlanActionPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"audit": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "TerseAuditPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"scope": [],
"audit_type": "ONESHOT",
"state": "PENDING",
"parameters": {},
"interval": null,
"updated_at": null
}
},
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"fault": null,
"state": "ONGOING",
"global_efficacy": {},
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"strategy": {
"watcher_object.namespace": "watcher",
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.data": {
"created_at": "2016-10-18T09:52:05Z",
"deleted_at": null,
"name": "TEST",
"uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"parameters_spec": {},
"display_name": "test strategy",
"updated_at": null
}
},
"updated_at": null
}
},
"priority": "INFO",
"message_id": "3984dc2b-8aef-462b-a220-8ae04237a56e",
"timestamp": "2016-10-18 09:52:05.219414",
"publisher_id": "infra-optim:node0"
}

View File

@@ -0,0 +1,63 @@
{
"payload": {
"watcher_object.version": "1.0",
"watcher_object.data": {
"audit_uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"audit": {
"watcher_object.version": "1.0",
"watcher_object.data": {
"audit_type": "ONESHOT",
"scope": [],
"created_at": "2016-10-18T09:52:05Z",
"uuid": "10a47dd1-4874-4298-91cf-eff046dbdb8d",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"interval": null,
"updated_at": null,
"state": "PENDING",
"deleted_at": null,
"parameters": {}
},
"watcher_object.namespace": "watcher",
"watcher_object.name": "TerseAuditPayload"
},
"created_at": "2016-10-18T09:52:05Z",
"uuid": "76be87bd-3422-43f9-93a0-e85a577e3061",
"updated_at": null,
"state_update": {
"watcher_object.version": "1.0",
"watcher_object.data": {
"old_state": "PENDING",
"state": "ONGOING"
},
"watcher_object.namespace": "watcher",
"watcher_object.name": "ActionPlanStateUpdatePayload"
},
"state": "ONGOING",
"deleted_at": null,
"strategy_uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"strategy": {
"watcher_object.version": "1.0",
"watcher_object.data": {
"name": "TEST",
"uuid": "cb3d0b58-4415-4d90-b75b-1e96878730e3",
"display_name": "test strategy",
"created_at": "2016-10-18T09:52:05Z",
"updated_at": null,
"deleted_at": null,
"parameters_spec": {}
},
"watcher_object.namespace": "watcher",
"watcher_object.name": "StrategyPayload"
},
"global_efficacy": {}
},
"watcher_object.namespace": "watcher",
"watcher_object.name": "ActionPlanUpdatePayload"
},
"publisher_id": "infra-optim:node0",
"priority": "INFO",
"timestamp": "2016-10-18 09:52:05.219414",
"event_type": "action_plan.update",
"message_id": "0a8a7329-fd5a-4ec6-97d7-2b776ce51a4c"
}

View File

@@ -0,0 +1,71 @@
{
"priority": "INFO",
"payload": {
"watcher_object.data": {
"audit_type": "ONESHOT",
"parameters": {
"para2": "hello",
"para1": 3.2
},
"state": "PENDING",
"updated_at": null,
"deleted_at": null,
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"goal": {
"watcher_object.data": {
"uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"name": "dummy",
"updated_at": null,
"deleted_at": null,
"efficacy_specification": [],
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy goal"
},
"watcher_object.name": "GoalPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"interval": null,
"scope": [],
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"strategy": {
"watcher_object.data": {
"parameters_spec": {
"properties": {
"para2": {
"type": "string",
"default": "hello",
"description": "string parameter example"
},
"para1": {
"description": "number parameter example",
"maximum": 10.2,
"type": "number",
"default": 3.2,
"minimum": 1.0
}
}
},
"name": "dummy",
"uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"updated_at": null,
"deleted_at": null,
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy strategy"
},
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"created_at": "2016-11-04T16:29:20Z",
"uuid": "4a97b9dd-2023-43dc-b713-815bdd94d4d6"
},
"watcher_object.name": "AuditCreatePayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:31:36.264673 ",
"event_type": "audit.create",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}

View File

@@ -0,0 +1,71 @@
{
"priority": "INFO",
"payload": {
"watcher_object.data": {
"audit_type": "ONESHOT",
"parameters": {
"para2": "hello",
"para1": 3.2
},
"state": "DELETED",
"updated_at": null,
"deleted_at": null,
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"goal": {
"watcher_object.data": {
"uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"name": "dummy",
"updated_at": null,
"deleted_at": null,
"efficacy_specification": [],
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy goal"
},
"watcher_object.name": "GoalPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"interval": null,
"scope": [],
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"strategy": {
"watcher_object.data": {
"parameters_spec": {
"properties": {
"para2": {
"type": "string",
"default": "hello",
"description": "string parameter example"
},
"para1": {
"description": "number parameter example",
"maximum": 10.2,
"type": "number",
"default": 3.2,
"minimum": 1.0
}
}
},
"name": "dummy",
"uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"updated_at": null,
"deleted_at": null,
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy strategy"
},
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"created_at": "2016-11-04T16:29:20Z",
"uuid": "4a97b9dd-2023-43dc-b713-815bdd94d4d6"
},
"watcher_object.name": "AuditDeletePayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:31:36.264673 ",
"event_type": "audit.delete",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}

View File

@@ -0,0 +1,72 @@
{
"priority": "INFO",
"payload": {
"watcher_object.data": {
"audit_type": "ONESHOT",
"parameters": {
"para2": "hello",
"para1": 3.2
},
"state": "ONGOING",
"updated_at": null,
"deleted_at": null,
"fault": null,
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"goal": {
"watcher_object.data": {
"uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"name": "dummy",
"updated_at": null,
"deleted_at": null,
"efficacy_specification": [],
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy goal"
},
"watcher_object.name": "GoalPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"interval": null,
"scope": [],
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"strategy": {
"watcher_object.data": {
"parameters_spec": {
"properties": {
"para2": {
"type": "string",
"default": "hello",
"description": "string parameter example"
},
"para1": {
"description": "number parameter example",
"maximum": 10.2,
"type": "number",
"default": 3.2,
"minimum": 1.0
}
}
},
"name": "dummy",
"uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"updated_at": null,
"deleted_at": null,
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy strategy"
},
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"created_at": "2016-11-04T16:29:20Z",
"uuid": "4a97b9dd-2023-43dc-b713-815bdd94d4d6"
},
"watcher_object.name": "AuditActionPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:31:36.264673 ",
"event_type": "audit.planner.end",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}

View File

@@ -0,0 +1,82 @@
{
"priority": "ERROR",
"payload": {
"watcher_object.data": {
"audit_type": "ONESHOT",
"parameters": {
"para2": "hello",
"para1": 3.2
},
"state": "ONGOING",
"updated_at": null,
"deleted_at": null,
"fault": {
"watcher_object.data": {
"exception": "WatcherException",
"exception_message": "TEST",
"function_name": "test_send_audit_action_with_error",
"module_name": "watcher.tests.notifications.test_audit_notification"
},
"watcher_object.name": "ExceptionPayload",
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0"
},
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"goal": {
"watcher_object.data": {
"uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"name": "dummy",
"updated_at": null,
"deleted_at": null,
"efficacy_specification": [],
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy goal"
},
"watcher_object.name": "GoalPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"interval": null,
"scope": [],
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"strategy": {
"watcher_object.data": {
"parameters_spec": {
"properties": {
"para2": {
"type": "string",
"default": "hello",
"description": "string parameter example"
},
"para1": {
"description": "number parameter example",
"maximum": 10.2,
"type": "number",
"default": 3.2,
"minimum": 1.0
}
}
},
"name": "dummy",
"uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"updated_at": null,
"deleted_at": null,
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy strategy"
},
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"created_at": "2016-11-04T16:29:20Z",
"uuid": "4a97b9dd-2023-43dc-b713-815bdd94d4d6"
},
"watcher_object.name": "AuditActionPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:31:36.264673 ",
"event_type": "audit.planner.error",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}

View File

@@ -0,0 +1,72 @@
{
"priority": "INFO",
"payload": {
"watcher_object.data": {
"audit_type": "ONESHOT",
"parameters": {
"para2": "hello",
"para1": 3.2
},
"state": "ONGOING",
"updated_at": null,
"deleted_at": null,
"fault": null,
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"goal": {
"watcher_object.data": {
"uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"name": "dummy",
"updated_at": null,
"deleted_at": null,
"efficacy_specification": [],
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy goal"
},
"watcher_object.name": "GoalPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"interval": null,
"scope": [],
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"strategy": {
"watcher_object.data": {
"parameters_spec": {
"properties": {
"para2": {
"type": "string",
"default": "hello",
"description": "string parameter example"
},
"para1": {
"description": "number parameter example",
"maximum": 10.2,
"type": "number",
"default": 3.2,
"minimum": 1.0
}
}
},
"name": "dummy",
"uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"updated_at": null,
"deleted_at": null,
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy strategy"
},
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"created_at": "2016-11-04T16:29:20Z",
"uuid": "4a97b9dd-2023-43dc-b713-815bdd94d4d6"
},
"watcher_object.name": "AuditActionPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:31:36.264673 ",
"event_type": "audit.planner.start",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}

View File

@@ -0,0 +1,72 @@
{
"priority": "INFO",
"payload": {
"watcher_object.data": {
"audit_type": "ONESHOT",
"parameters": {
"para2": "hello",
"para1": 3.2
},
"state": "ONGOING",
"updated_at": null,
"deleted_at": null,
"fault": null,
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"goal": {
"watcher_object.data": {
"uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"name": "dummy",
"updated_at": null,
"deleted_at": null,
"efficacy_specification": [],
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy goal"
},
"watcher_object.name": "GoalPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"interval": null,
"scope": [],
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"strategy": {
"watcher_object.data": {
"parameters_spec": {
"properties": {
"para2": {
"type": "string",
"default": "hello",
"description": "string parameter example"
},
"para1": {
"description": "number parameter example",
"maximum": 10.2,
"type": "number",
"default": 3.2,
"minimum": 1.0
}
}
},
"name": "dummy",
"uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"updated_at": null,
"deleted_at": null,
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy strategy"
},
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"created_at": "2016-11-04T16:29:20Z",
"uuid": "4a97b9dd-2023-43dc-b713-815bdd94d4d6"
},
"watcher_object.name": "AuditActionPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:31:36.264673 ",
"event_type": "audit.strategy.end",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}

View File

@@ -0,0 +1,82 @@
{
"priority": "ERROR",
"payload": {
"watcher_object.data": {
"audit_type": "ONESHOT",
"parameters": {
"para2": "hello",
"para1": 3.2
},
"state": "ONGOING",
"updated_at": null,
"deleted_at": null,
"fault": {
"watcher_object.data": {
"exception": "WatcherException",
"exception_message": "TEST",
"function_name": "test_send_audit_action_with_error",
"module_name": "watcher.tests.notifications.test_audit_notification"
},
"watcher_object.name": "ExceptionPayload",
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0"
},
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"goal": {
"watcher_object.data": {
"uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"name": "dummy",
"updated_at": null,
"deleted_at": null,
"efficacy_specification": [],
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy goal"
},
"watcher_object.name": "GoalPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"interval": null,
"scope": [],
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"strategy": {
"watcher_object.data": {
"parameters_spec": {
"properties": {
"para2": {
"type": "string",
"default": "hello",
"description": "string parameter example"
},
"para1": {
"description": "number parameter example",
"maximum": 10.2,
"type": "number",
"default": 3.2,
"minimum": 1.0
}
}
},
"name": "dummy",
"uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"updated_at": null,
"deleted_at": null,
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy strategy"
},
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"created_at": "2016-11-04T16:29:20Z",
"uuid": "4a97b9dd-2023-43dc-b713-815bdd94d4d6"
},
"watcher_object.name": "AuditActionPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:31:36.264673 ",
"event_type": "audit.strategy.error",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}

View File

@@ -0,0 +1,72 @@
{
"priority": "INFO",
"payload": {
"watcher_object.data": {
"audit_type": "ONESHOT",
"parameters": {
"para2": "hello",
"para1": 3.2
},
"state": "ONGOING",
"updated_at": null,
"deleted_at": null,
"fault": null,
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"goal": {
"watcher_object.data": {
"uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"name": "dummy",
"updated_at": null,
"deleted_at": null,
"efficacy_specification": [],
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy goal"
},
"watcher_object.name": "GoalPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"interval": null,
"scope": [],
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"strategy": {
"watcher_object.data": {
"parameters_spec": {
"properties": {
"para2": {
"type": "string",
"default": "hello",
"description": "string parameter example"
},
"para1": {
"description": "number parameter example",
"maximum": 10.2,
"type": "number",
"default": 3.2,
"minimum": 1.0
}
}
},
"name": "dummy",
"uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"updated_at": null,
"deleted_at": null,
"created_at": "2016-11-04T16:25:35Z",
"display_name": "Dummy strategy"
},
"watcher_object.name": "StrategyPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"created_at": "2016-11-04T16:29:20Z",
"uuid": "4a97b9dd-2023-43dc-b713-815bdd94d4d6"
},
"watcher_object.name": "AuditActionPayload",
"watcher_object.version": "1.0",
"watcher_object.namespace": "watcher"
},
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:31:36.264673 ",
"event_type": "audit.strategy.start",
"message_id": "cbcf9f2c-7c53-4b4d-91ec-db49cca024b6"
}

View File

@@ -0,0 +1,80 @@
{
"publisher_id": "infra-optim:localhost",
"timestamp": "2016-11-04 16:51:38.722986 ",
"payload": {
"watcher_object.name": "AuditUpdatePayload",
"watcher_object.data": {
"strategy_uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"strategy": {
"watcher_object.name": "StrategyPayload",
"watcher_object.data": {
"name": "dummy",
"parameters_spec": {
"properties": {
"para2": {
"default": "hello",
"type": "string",
"description": "string parameter example"
},
"para1": {
"maximum": 10.2,
"default": 3.2,
"minimum": 1.0,
"description": "number parameter example",
"type": "number"
}
}
},
"updated_at": null,
"display_name": "Dummy strategy",
"deleted_at": null,
"uuid": "75234dfe-87e3-4f11-a0e0-3c3305d86a39",
"created_at": "2016-11-04T16:25:35Z"
},
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0"
},
"scope": [],
"created_at": "2016-11-04T16:51:21Z",
"uuid": "f1e0d912-afd9-4bf2-91ef-c99cd08cc1ef",
"goal_uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"goal": {
"watcher_object.name": "GoalPayload",
"watcher_object.data": {
"efficacy_specification": [],
"updated_at": null,
"name": "dummy",
"display_name": "Dummy goal",
"deleted_at": null,
"uuid": "bc830f84-8ae3-4fc6-8bc6-e3dd15e8b49a",
"created_at": "2016-11-04T16:25:35Z"
},
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0"
},
"parameters": {
"para2": "hello",
"para1": 3.2
},
"deleted_at": null,
"state_update": {
"watcher_object.name": "AuditStateUpdatePayload",
"watcher_object.data": {
"state": "ONGOING",
"old_state": "PENDING"
},
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0"
},
"interval": null,
"updated_at": null,
"state": "ONGOING",
"audit_type": "ONESHOT"
},
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0"
},
"priority": "INFO",
"event_type": "audit.update",
"message_id": "697fdf55-7252-4b6c-a2c2-5b9e85f6342c"
}

View File

@@ -0,0 +1,16 @@
{
"event_type": "infra-optim.exception",
"payload": {
"watcher_object.data": {
"exception": "NoAvailableStrategyForGoal",
"exception_message": "No strategy could be found to achieve the server_consolidation goal.",
"function_name": "_aggregate_create_in_db",
"module_name": "watcher.objects.aggregate"
},
"watcher_object.name": "ExceptionPayload",
"watcher_object.namespace": "watcher",
"watcher_object.version": "1.0"
},
"priority": "ERROR",
"publisher_id": "watcher-api:fake-mini"
}

View File

@@ -0,0 +1,26 @@
{
"payload": {
"watcher_object.name": "ServiceUpdatePayload",
"watcher_object.namespace": "watcher",
"watcher_object.data": {
"status_update": {
"watcher_object.name": "ServiceStatusUpdatePayload",
"watcher_object.namespace": "watcher",
"watcher_object.data": {
"old_state": "ACTIVE",
"state": "FAILED"
},
"watcher_object.version": "1.0"
},
"last_seen_up": "2016-09-22T08:32:06Z",
"name": "watcher-service",
"sevice_host": "controller"
},
"watcher_object.version": "1.0"
},
"event_type": "service.update",
"priority": "INFO",
"message_id": "3984dc2b-8aef-462b-a220-8ae04237a56e",
"timestamp": "2016-10-18 09:52:05.219414",
"publisher_id": "infra-optim:node0"
}

View File

@@ -0,0 +1,49 @@
..
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/
Installing API behind mod_wsgi
==============================
#. Install the Apache Service::
Fedora 21/RHEL7/CentOS7:
sudo yum install httpd
Fedora 22 (or higher):
sudo dnf install httpd
Debian/Ubuntu:
apt-get install apache2
#. Copy ``etc/apache2/watcher.conf`` under the apache sites::
Fedora/RHEL7/CentOS7:
sudo cp etc/apache2/watcher /etc/httpd/conf.d/watcher.conf
Debian/Ubuntu:
sudo cp etc/apache2/watcher /etc/apache2/sites-available/watcher.conf
#. Edit ``<apache-configuration-dir>/watcher.conf`` according to installation
and environment.
* Modify the ``WSGIDaemonProcess`` directive to set the ``user`` and
``group`` values to appropriate user on your server.
* Modify the ``WSGIScriptAlias`` directive to point to the
watcher/api/app.wsgi script.
* Modify the ``Directory`` directive to set the path to the Watcher API
code.
* Modify the ``ErrorLog and CustomLog`` to redirect the logs to the right
directory.
#. Enable the apache watcher site and reload::
Fedora/RHEL7/CentOS7:
sudo systemctl reload httpd
Debian/Ubuntu:
sudo a2ensite watcher
sudo service apache2 reload

View File

@@ -0,0 +1,12 @@
===================
Administrator Guide
===================
.. toctree::
:maxdepth: 2
apache-mod-wsgi
gmr
policy
ways-to-install
../strategies/index

View File

@@ -4,12 +4,13 @@
https://creativecommons.org/licenses/by/3.0/
==================
Installing Watcher
==================
=======================
Ways to install Watcher
=======================
This document describes how to install Watcher in order to use it. If you are
intending to develop on or with Watcher, please read :doc:`../dev/environment`.
This document describes some ways to install Watcher in order to use it.
If you are intending to develop on or with Watcher,
please read :doc:`../contributor/environment`.
Prerequisites
-------------
@@ -18,14 +19,14 @@ The source install instructions specifically avoid using platform specific
packages, instead using the source for the code and the Python Package Index
(PyPi_).
.. _PyPi: http://pypi.python.org/pypi
.. _PyPi: https://pypi.python.org/pypi
It's expected that your system already has python2.7_, latest version of pip_,
and git_ available.
.. _python2.7: http://www.python.org
.. _pip: http://www.pip-installer.org/en/latest/installing.html
.. _git: http://git-scm.com/
.. _python2.7: https://www.python.org
.. _pip: https://pip.pypa.io/en/latest/installing/
.. _git: https://git-scm.com/
Your system shall also have some additional system libraries:
@@ -77,9 +78,10 @@ Install the Watcher modules dependencies:
# pip install -r requirements.txt
From here, refer to :doc:`configuration` to declare Watcher as a new service
into Keystone and to configure its different modules. Once configured, you
should be able to run the Watcher services by issuing these commands:
From here, refer to :doc:`../configuration/configuring` to declare Watcher
as a new service into Keystone and to configure its different modules.
Once configured, you should be able to run the Watcher services by issuing
these commands:
.. code-block:: bash
@@ -107,7 +109,7 @@ installed on your system.
Once installed, you still need to declare Watcher as a new service into
Keystone and to configure its different modules, which you can find described
in :doc:`configuration`.
in :doc:`../configuration/configuring`.
Installing from packages: Debian (experimental)
@@ -125,8 +127,8 @@ Here is single Dockerfile snippet you can use to run your Docker container:
RUN apt-get update
RUN apt-get dist-upgrade -y
RUN apt-get install -y vim net-tools
RUN apt-get install -yt experimental watcher-api
RUN apt-get install vim net-tools
RUN apt-get install experimental watcher-api
CMD ["/usr/bin/watcher-api"]

4
doc/source/api/index.rst Normal file
View File

@@ -0,0 +1,4 @@
.. toctree::
:maxdepth: 1
v1

View File

@@ -20,6 +20,17 @@ Goals
.. 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
===============

View File

@@ -21,7 +21,7 @@ Overview
Below you will find a diagram, showing the main components of Watcher:
.. image:: ./images/architecture.svg
:width: 100%
:width: 110%
.. _components_definition:
@@ -37,13 +37,12 @@ AMQP Bus
The AMQP message bus handles internal asynchronous communications between the
different Watcher components.
.. _cluster_history_db_definition:
.. _cluster_datasource_definition:
Cluster History Database
------------------------
Datasource
----------
This component stores the data related to the
:ref:`Cluster History <cluster_history_definition>`.
This component stores the metrics related to the cluster.
It can potentially rely on any appropriate storage system (InfluxDB, OpenTSDB,
MongoDB,...) but will probably be more performant when using
@@ -51,14 +50,6 @@ MongoDB,...) but will probably be more performant when using
which are optimized for handling time series data, which are arrays of numbers
indexed by time (a datetime or a datetime range).
.. _cluster_model_db_definition:
Cluster Model Database
------------------------
This component stores the data related to the
:ref:`Cluster Data Model <cluster_data_model_definition>`.
.. _archi_watcher_api_definition:
Watcher API
@@ -128,7 +119,7 @@ The watcher command-line interface (CLI) can be used to interact with the
Watcher system in order to control it or to know its current status.
Please, read `the detailed documentation about Watcher CLI
<https://factory.b-com.com/www/watcher/doc/python-watcherclient/>`_.
<https://docs.openstack.org/python-watcherclient/latest/cli/>`_.
.. _archi_watcher_dashboard_definition:
@@ -139,7 +130,7 @@ The Watcher Dashboard can be used to interact with the Watcher system through
Horizon in order to control it or to know its current status.
Please, read `the detailed documentation about Watcher Dashboard
<http://docs.openstack.org/developer/watcher-dashboard/>`_.
<https://docs.openstack.org/watcher-dashboard/latest>`_.
.. _archi_watcher_database_definition:
@@ -171,15 +162,15 @@ This component is responsible for computing a set of potential optimization
:ref:`Actions <action_definition>` in order to fulfill
the :ref:`Goal <goal_definition>` of an :ref:`Audit <audit_definition>`.
It first reads the parameters of the :ref:`Audit <audit_definition>` from the
associated :ref:`Audit Template <audit_template_definition>` and knows the
:ref:`Goal <goal_definition>` to achieve.
It first reads the parameters of the :ref:`Audit <audit_definition>` to know
the :ref:`Goal <goal_definition>` to achieve.
It then selects the most appropriate :ref:`Strategy <strategy_definition>`
from the list of available strategies achieving this goal.
Unless specified, it then selects the most appropriate :ref:`strategy
<strategy_definition>` from the list of available strategies achieving this
goal.
The :ref:`Strategy <strategy_definition>` is then dynamically loaded (via
`stevedore <http://docs.openstack.org/developer/stevedore/>`_). The
`stevedore <https://docs.openstack.org/stevedore/latest>`_). The
:ref:`Watcher Decision Engine <watcher_decision_engine_definition>` executes
the strategy.
@@ -193,8 +184,8 @@ data:
:ref:`Managed resources <managed_resource_definition>` (e.g., the data stored
in the Nova database). These models gives a strategy the ability to reason on
the current state of a given :ref:`cluster <cluster_definition>`.
- The data stored in the :ref:`Cluster History Database
<cluster_history_db_definition>` which provides information about the past of
- The data stored in the :ref:`Cluster Datasource
<cluster_datasource_definition>` which provides information about the past of
the :ref:`Cluster <cluster_definition>`.
Here below is a sequence diagram showing how the Decision Engine builds and
@@ -290,7 +281,7 @@ the Audit parameters from the
:ref:`Watcher Database <watcher_database_definition>`. It instantiates the
appropriate :ref:`strategy <strategy_definition>` (using entry points)
given both the :ref:`goal <goal_definition>` and the strategy associated to the
parent :ref:`audit template <audit_template_definition>` of the :ref:`Audit
parent :ref:`audit template <audit_template_definition>` of the :ref:`audit
<audit_definition>`. If no strategy is associated to the audit template, the
strategy is dynamically selected by the Decision Engine.
@@ -298,7 +289,7 @@ The :ref:`Watcher Decision Engine <watcher_decision_engine_definition>` also
builds the :ref:`Cluster Data Model <cluster_data_model_definition>`. This
data model is needed by the :ref:`Strategy <strategy_definition>` to know the
current state and topology of the audited
:ref:`Openstack cluster <cluster_definition>`.
:ref:`OpenStack cluster <cluster_definition>`.
The :ref:`Watcher Decision Engine <watcher_decision_engine_definition>` calls
the **execute()** method of the instantiated
@@ -316,7 +307,7 @@ This method finds an appropriate scheduling of
:ref:`Actions <action_definition>` taking into account some scheduling rules
(such as priorities between actions).
It generates a new :ref:`Action Plan <action_plan_definition>` with status
**RECOMMENDED** and saves it into the:ref:`Watcher Database
**RECOMMENDED** and saves it into the :ref:`Watcher Database
<watcher_database_definition>`. The saved action plan is now a scheduled flow
of actions to which a global efficacy is associated alongside a number of
:ref:`Efficacy Indicators <efficacy_indicator_definition>` as specified by the
@@ -416,6 +407,9 @@ be one of the following:
- **CANCELLED** : the :ref:`Audit <audit_definition>` was in **PENDING** or
**ONGOING** state and was cancelled by the
:ref:`Administrator <administrator_definition>`
- **SUSPENDED** : the :ref:`Audit <audit_definition>` was in **ONGOING**
state and was suspended by the
:ref:`Administrator <administrator_definition>`
The following diagram shows the different possible states of an
:ref:`Audit <audit_definition>` and what event makes the state change to a new
@@ -450,8 +444,12 @@ state may be one of the following:
stored in the :ref:`Watcher database <watcher_database_definition>` but is
not returned any more through the Watcher APIs.
- **CANCELLED** : the :ref:`Action Plan <action_plan_definition>` was in
**PENDING** or **ONGOING** state and was cancelled by the
**RECOMMENDED**, **PENDING** or **ONGOING** state and was cancelled by the
:ref:`Administrator <administrator_definition>`
- **SUPERSEDED** : the :ref:`Action Plan <action_plan_definition>` was in
RECOMMENDED state and was automatically superseded by Watcher, due to an
expiration delay or an update of the
:ref:`Cluster data model <cluster_data_model_definition>`
The following diagram shows the different possible states of an

View File

@@ -1,4 +1,3 @@
# -*- coding: utf-8 -*-
# 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
@@ -11,26 +10,44 @@
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
from watcher import version as watcher_version
from watcher import objects
objects.register_all()
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
sys.path.insert(0, os.path.abspath('../../'))
sys.path.insert(0, os.path.abspath('../'))
sys.path.insert(0, os.path.abspath('./'))
# -- 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.
extensions = [
'oslo_config.sphinxconfiggen',
'oslosphinx',
'oslo_config.sphinxext',
'sphinx.ext.autodoc',
'sphinx.ext.viewcode',
'sphinxcontrib.httpdomain',
'sphinxcontrib.pecanwsme.rest',
'stevedore.sphinxext',
'wsmeext.sphinxext',
'watcher.doc',
'ext.term',
'ext.versioned_notifications',
'oslo_config.sphinxconfiggen',
'openstackdocstheme',
]
wsme_protocols = ['restjson']
config_generator_config_file = '../../etc/watcher/watcher-config-generator.conf'
config_generator_config_file = [(
'../../etc/watcher/oslo-config-generator/watcher.conf',
'_static/watcher')]
sample_config_basename = 'watcher'
# autodoc generation is a bit aggressive and a nuisance when doing heavy
@@ -55,7 +72,7 @@ copyright = u'OpenStack Foundation'
# The full version, including alpha/beta/rc tags.
release = watcher_version.version_info.release_string()
# The short X.Y version.
version = watcher_version.version_info.version_string()
version = watcher_version.version_string
# A list of ignored prefixes for module index sorting.
modindex_common_prefix = ['watcher.']
@@ -67,6 +84,8 @@ exclude_patterns = [
# them when scanning for input files.
'man/footer.rst',
'man/general-options.rst',
'strategies/strategy-template.rst',
'image_src/plantuml/README.rst',
]
# If true, '()' will be appended to :func: etc. cross-reference text.
@@ -76,6 +95,8 @@ add_function_parentheses = True
# unit titles (such as .. function::).
add_module_names = True
suppress_warnings = ['app.add_directive']
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
@@ -101,12 +122,20 @@ man_pages = [
# Sphinx are currently 'default' and 'sphinxdoc'.
# html_theme_path = ["."]
# html_theme = '_theme'
html_theme = 'openstackdocs'
# html_static_path = ['static']
html_theme_options = {'incubating': True}
# html_theme_options = {}
# Output file base name for HTML help builder.
htmlhelp_basename = '%sdoc' % project
html_last_updated_fmt = '%Y-%m-%d %H:%M'
#openstackdocstheme options
repository_name = 'openstack/watcher'
bug_project = 'watcher'
bug_tag = ''
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass
# [howto/manual]).

View File

@@ -1 +0,0 @@
../../etc/watcher/watcher-config-generator.conf

View File

@@ -15,7 +15,7 @@ Service overview
================
The Watcher system is a collection of services that provides support to
optimize your IAAS plateform. The Watcher service may, depending upon
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
@@ -27,7 +27,7 @@ configuration, interact with several other OpenStack services. This includes:
The Watcher service includes the following components:
- ``watcher-decision-engine``: runs audit on part of your IAAS and return an
- ``watcher-decision-engine``: runs audit on part of your IaaS and return an
action plan in order to optimize resource placement.
- ``watcher-api``: A RESTful API that processes application requests by sending
them to the watcher-decision-engine over RPC.
@@ -37,7 +37,7 @@ The Watcher service includes the following components:
- `watcher-dashboard`_: An Horizon plugin for interacting with the Watcher
service.
Additionally, the Bare Metal service has certain external dependencies, which
Additionally, the Watcher service has certain external dependencies, which
are very similar to other OpenStack services:
- A database to store audit and action plan information and state. You can set
@@ -86,7 +86,6 @@ Configure the Identity service for the Watcher service
--tenant=KEYSTONE_SERVICE_PROJECT_NAME
$ keystone user-role-add --user=watcher \
--tenant=KEYSTONE_SERVICE_PROJECT_NAME --role=admin
$ keystone user-role-add --user=watcher --tenant=admin --role=admin
or (by using python-openstackclient 1.8.0+)
@@ -97,7 +96,6 @@ Configure the Identity service for the Watcher service
--project=KEYSTONE_SERVICE_PROJECT_NAME
$ openstack role add --project KEYSTONE_SERVICE_PROJECT_NAME \
--user watcher admin
$ openstack role add --user watcher --project admin admin
#. You must register the Watcher Service with the Identity Service so that
@@ -169,7 +167,7 @@ these following commands::
$ git clone git://git.openstack.org/openstack/watcher
$ cd watcher/
$ tox -econfig
$ tox -e genconfig
$ vi etc/watcher/watcher.conf.sample
@@ -351,7 +349,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
#api_version = 2.53
api_version = 2.1
#. Create the Watcher Service database tables::
@@ -368,15 +366,14 @@ Configure Nova compute
Please check your hypervisor configuration to correctly handle
`instance migration`_.
.. _`instance migration`: http://docs.openstack.org/admin-guide-cloud/compute-configuring-migrations.html
.. _`instance migration`: https://docs.openstack.org/nova/latest/admin/migration.html
Configure Measurements
======================
You can configure and install Ceilometer by following the documentation below :
#. http://docs.openstack.org/developer/ceilometer
#. http://docs.openstack.org/kilo/install-guide/install/apt/content/ceilometer-nova.html
#. https://docs.openstack.org/ceilometer/latest
The built-in strategy 'basic_consolidation' provided by watcher requires
"**compute.node.cpu.percent**" and "**cpu_util**" measurements to be collected
@@ -388,13 +385,13 @@ the OpenStack site.
You can use 'ceilometer meter-list' to list the available meters.
For more information:
http://docs.openstack.org/developer/ceilometer/measurements.html
https://docs.openstack.org/ceilometer/latest/admin/telemetry-measurements.html
Ceilometer is designed to collect measurements from OpenStack services and from
other external components. If you would like to add new meters to the currently
existing ones, you need to follow the documentation below:
#. http://docs.openstack.org/developer/ceilometer/new_meters.html
#. https://docs.openstack.org/ceilometer/latest/contributor/new_meters.html#meters
The Ceilometer collector uses a pluggable storage system, meaning that you can
pick any database system you prefer.
@@ -426,12 +423,32 @@ to Watcher receives Nova notifications in ``watcher_notifications`` as well.
into which Nova services will publish events ::
[oslo_messaging_notifications]
driver = messaging
driver = messagingv2
topics = notifications,watcher_notifications
* Restart the Nova services.
Configure Cinder Notifications
==============================
Watcher can also consume notifications generated by the Cinder services, in
order to build or update, in real time, its cluster data model related to
storage resources. To do so, you have to update the Cinder configuration
file on controller and volume nodes, in order to let Watcher receive Cinder
notifications in a dedicated ``watcher_notifications`` channel.
* In the file ``/etc/cinder/cinder.conf``, update the section
``[oslo_messaging_notifications]``, by redefining the list of topics
into which Cinder services will publish events ::
[oslo_messaging_notifications]
driver = messagingv2
topics = notifications,watcher_notifications
* Restart the Cinder services.
Workers
=======

View File

@@ -0,0 +1,5 @@
.. toctree::
:maxdepth: 1
configuring
watcher

View File

@@ -0,0 +1,11 @@
.. _watcher_sample_configuration_files:
------------
watcher.conf
------------
The ``watcher.conf`` file contains most of the options to configure the
Watcher services.
.. show-options::
:config-file: etc/watcher/oslo-config-generator/watcher.conf

View File

@@ -64,8 +64,9 @@ IRC Channel
``#openstack-watcher`` (changelog_)
Weekly Meetings
on Wednesdays at 14:00 UTC on even weeks, 9:00 UTC on odd weeks, in the
``#openstack-meeting-4`` IRC channel (`meetings logs`_)
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 (`meetings logs`_)
.. _changelog: http://eavesdrop.openstack.org/irclogs/%23openstack-watcher/
.. _meetings logs: http://eavesdrop.openstack.org/meetings/watcher/

View File

@@ -24,8 +24,8 @@ Watcher plugin::
For more detailed instructions, see `Detailed DevStack Instructions`_. Check
out the `DevStack documentation`_ for more information regarding DevStack.
.. _PluginModelDocs: http://docs.openstack.org/developer/devstack/plugins.html
.. _DevStack documentation: http://docs.openstack.org/developer/devstack/
.. _PluginModelDocs: https://docs.openstack.org/devstack/latest/plugins.html
.. _DevStack documentation: https://docs.openstack.org/devstack/latest
Detailed DevStack Instructions
==============================
@@ -92,6 +92,12 @@ Detailed DevStack Instructions
Note: if you want to use a specific branch, specify WATCHER_BRANCH in the
local.conf file. By default it will use the master branch.
Note: watcher-api will default run under apache/httpd, set the variable
WATCHER_USE_MOD_WSGI=FALSE if you do not wish to run under apache/httpd.
For development environment it is suggested to set WATHCER_USE_MOD_WSGI
to FALSE. For Production environment it is suggested to keep it at the
default TRUE value.
#. Start stacking from the controller node::
./devstack/stack.sh
@@ -193,6 +199,37 @@ must exist in every other compute node's stack user's authorized_keys file and
every compute node's public ECDSA key needs to be in every other compute
node's root user's known_hosts file.
Disable serial console
----------------------
Serial console needs to be disabled for live migration to work.
On both the controller and compute node, in /etc/nova/nova.conf
[serial_console]
enabled = False
Alternatively, in devstack's local.conf:
[[post-config|$NOVA_CONF]]
[serial_console]
#enabled=false
VNC server configuration
------------------------
The VNC server listening parameter needs to be set to any address so
that the server can accept connections from all of the compute nodes.
On both the controller and compute node, in /etc/nova/nova.conf
vncserver_listen = 0.0.0.0
Alternatively, in devstack's local.conf:
VNCSERVER_LISTEN=0.0.0.0
Environment final checkup
-------------------------

View File

@@ -4,7 +4,7 @@
https://creativecommons.org/licenses/by/3.0/
.. _watcher_developement_environment:
.. _watcher_development_environment:
=========================================
Set up a development environment manually
@@ -16,8 +16,8 @@ for development purposes.
To install Watcher from packaging, refer instead to Watcher `User
Documentation`_.
.. _`Git Repository`: http://git.openstack.org/cgit/openstack/watcher
.. _`User Documentation`: http://docs.openstack.org/developer/watcher/
.. _`Git Repository`: https://git.openstack.org/cgit/openstack/watcher
.. _`User Documentation`: https://docs.openstack.org/watcher/latest/
Prerequisites
=============
@@ -25,7 +25,7 @@ Prerequisites
This document assumes you are using Ubuntu or Fedora, and that you have the
following tools available on your system:
- Python_ 2.7 and 3.4
- Python_ 2.7 and 3.5
- git_
- setuptools_
- pip_
@@ -35,10 +35,10 @@ following tools available on your system:
**Reminder**: If you're successfully using a different platform, or a
different version of the above, please document your configuration here!
.. _Python: http://www.python.org/
.. _git: http://git-scm.com/
.. _setuptools: http://pypi.python.org/pypi/setuptools
.. _virtualenvwrapper: https://virtualenvwrapper.readthedocs.org/en/latest/install.html
.. _Python: https://www.python.org/
.. _git: https://git-scm.com/
.. _setuptools: https://pypi.python.org/pypi/setuptools
.. _virtualenvwrapper: https://virtualenvwrapper.readthedocs.io/en/latest/install.html
Getting the latest code
=======================
@@ -77,14 +77,17 @@ extension, PyPi) cannot satisfy. These dependencies should be installed
prior to using `pip`, and the installation method may vary depending on
your platform.
* Ubuntu 14.04::
* Ubuntu 16.04::
$ sudo apt-get install python-dev libssl-dev libmysqlclient-dev libffi-dev
* Fedora 19+::
* Fedora 24+::
$ sudo yum install openssl-devel libffi-devel mysql-devel
$ sudo dnf install redhat-rpm-config gcc python-devel libxml2-devel
* CentOS 7::
$ sudo yum install gcc python-devel libxml2-devel libxslt-devel mariadb-devel
PyPi Packages and VirtualEnv
----------------------------
@@ -172,11 +175,12 @@ The HTML files are available into ``doc/build`` directory.
Configure the Watcher services
==============================
Watcher services require a configuration file. There is a sample configuration
file that can be used to get started:
Watcher services require a configuration file. Use tox to generate
a sample configuration file that can be used to get started:
.. code-block:: bash
$ tox -e genconfig
$ cp etc/watcher.conf.sample etc/watcher.conf
Most of the default configuration should be enough to get you going, but you
@@ -190,7 +194,7 @@ still need to configure the following sections:
message bus
So if you need some more details on how to configure one or more of these
sections, please do have a look at :doc:`../deploy/configuration` before
sections, please do have a look at :doc:`../configuration/configuring` before
continuing.
@@ -236,7 +240,7 @@ To run the Watcher Applier service, use:
(watcher) $ watcher-applier
Default configuration of these services are available into ``/etc/watcher``
directory. See :doc:`../deploy/configuration` for details on how Watcher is
directory. See :doc:`../configuration/configuring` for details on how Watcher is
configured. By default, Watcher is configured with SQL backends.

View File

@@ -0,0 +1,8 @@
.. toctree::
:maxdepth: 1
environment
devstack
notifications
testing
rally_link

View File

@@ -0,0 +1,13 @@
..
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/
.. _watcher_notifications:
========================
Notifications in Watcher
========================
.. versioned_notifications::

View File

@@ -30,12 +30,12 @@ implement:
implement. This is the first function to be called by the
:ref:`applier <watcher_applier_definition>` before any further processing
and its role is to validate the input parameters that were provided to it.
- The :py:meth:`~.BaseAction.precondition` is called before the execution of
- The :py:meth:`~.BaseAction.pre_condition` is called before the execution of
an action. This method is a hook that can be used to perform some
initializations or to make some more advanced validation on its input
parameters. If you wish to block the execution based on this factor, you
simply have to ``raise`` an exception.
- The :py:meth:`~.BaseAction.postcondition` is called after the execution of
- The :py:meth:`~.BaseAction.post_condition` is called after the execution of
an action. As this function is called regardless of whether an action
succeeded or not, this can prove itself useful to perform cleanup
operations.
@@ -71,11 +71,11 @@ Here is an example showing how you can write a plugin called ``DummyAction``:
# Does nothing
pass
def precondition(self):
def pre_condition(self):
# No pre-checks are done here
pass
def postcondition(self):
def post_condition(self):
# Nothing done here
pass
@@ -178,7 +178,7 @@ Here below is how you would proceed to register ``DummyAction`` using pbr_:
watcher_actions =
dummy = thirdparty.dummy:DummyAction
.. _pbr: http://docs.openstack.org/developer/pbr/
.. _pbr: https://docs.openstack.org/pbr/latest
Using action plugins
@@ -217,3 +217,11 @@ which is only able to process the Watcher built-in actions. Therefore, you will
either have to use an existing third-party planner or :ref:`implement another
planner <implement_planner_plugin>` that will be able to take into account your
new action plugin.
Test your new action
====================
In order to test your new action via a manual test or a Tempest test, you can
use the :py:class:`~.Actuator` strategy and pass it one or more actions to
execute. This way, you can isolate your action to see if it works as expected.

View File

@@ -22,7 +22,7 @@ Pre-requisites
We assume that you have set up a working Watcher development environment. So if
this not already the case, you can check out our documentation which explains
how to set up a :ref:`development environment
<watcher_developement_environment>`.
<watcher_development_environment>`.
.. _development environment:
@@ -34,7 +34,7 @@ First off, we need to create the project structure. To do so, we can use
generate the skeleton of our project::
$ virtualenv thirdparty
$ source thirdparty/bin/activate
$ . thirdparty/bin/activate
$ pip install cookiecutter
$ cookiecutter https://github.com/openstack-dev/cookiecutter

View File

@@ -22,7 +22,7 @@ cluster data model collectors within Watcher.
Creating a new plugin
=====================
In order to create a new model, you have to:
In order to create a new cluster data model collector, you have to:
- Extend the :py:class:`~.base.BaseClusterDataModelCollector` class.
- Implement its :py:meth:`~.BaseClusterDataModelCollector.execute` abstract
@@ -65,6 +65,49 @@ This implementation is the most basic one. So in order to get a better
understanding on how to implement a more advanced cluster data model collector,
have a look at the :py:class:`~.NovaClusterDataModelCollector` class.
Define a custom model
=====================
As you may have noticed in the above example, we are reusing an existing model
provided by Watcher. However, this model can be easily customized by
implementing a new class that would implement the :py:class:`~.Model` abstract
base class. Here below is simple example on how to proceed in implementing a
custom Model:
.. code-block:: python
# Filepath = <PROJECT_DIR>/thirdparty/dummy.py
# Import path = thirdparty.dummy
from watcher.decision_engine.model import base as modelbase
from watcher.decision_engine.model.collector import base
class MyModel(modelbase.Model):
def to_string(self):
return 'MyModel'
class DummyClusterDataModelCollector(base.BaseClusterDataModelCollector):
def execute(self):
model = MyModel()
# Do something here...
return model
@property
def notification_endpoints(self):
return []
Here below is the abstract ``Model`` class that every single cluster data model
should implement:
.. autoclass:: watcher.decision_engine.model.base.Model
:members:
:special-members: __init__
:noindex:
Define configuration parameters
===============================
@@ -155,7 +198,7 @@ Here below is how to register ``DummyClusterDataModelCollector`` using pbr_:
watcher_cluster_data_model_collectors =
dummy = thirdparty.dummy:DummyClusterDataModelCollector
.. _pbr: http://docs.openstack.org/developer/pbr/
.. _pbr: http://docs.openstack.org/pbr/latest
Add new notification endpoints
@@ -225,5 +268,5 @@ At this point, you can use your new cluster data model plugin in your
# [...]
dummy_collector = self.collector_manager.get_cluster_model_collector(
"dummy") # "dummy" is the name of the entry point we declared earlier
dummy_model = collector.get_latest_cluster_data_model()
dummy_model = dummy_collector.get_latest_cluster_data_model()
# Do some stuff with this model

View File

@@ -60,8 +60,8 @@ Here is an example showing how you can define a new ``NewGoal`` goal plugin:
# import path: thirdparty.new
from watcher._i18n import _
from watcher.decision_engine.goal import base
from watcher.decision_engine.goal.efficacy import specs
from watcher.decision_engine.strategy.strategies import base
class NewGoal(base.Goal):
@@ -79,11 +79,11 @@ Here is an example showing how you can define a new ``NewGoal`` goal plugin:
@classmethod
def get_efficacy_specification(cls):
return specs.UnclassifiedStrategySpecification()
return specs.Unclassified()
As you may have noticed, the :py:meth:`~.Goal.get_efficacy_specification`
method returns an :py:meth:`~.UnclassifiedStrategySpecification` instance which
method returns an :py:meth:`~.Unclassified` instance which
is provided by Watcher. This efficacy specification is useful during the
development process of your goal as it corresponds to an empty specification.
If you want to learn more about what efficacy specifications are used for or to
@@ -123,10 +123,11 @@ Here below is how you would proceed to register ``NewGoal`` using pbr_:
new_goal = thirdparty.new:NewGoal
To get a better understanding on how to implement a more advanced goal,
have a look at the :py:class:`~.ServerConsolidation` class.
To get a better understanding on how to implement a more advanced goal, have
a look at the
:py:class:`watcher.decision_engine.goal.goals.ServerConsolidation` class.
.. _pbr: http://docs.openstack.org/developer/pbr/
.. _pbr: https://docs.openstack.org/pbr/latest
.. _implement_efficacy_specification:

View File

@@ -0,0 +1,11 @@
.. toctree::
:maxdepth: 1
base-setup
action-plugin
cdmc-plugin
goal-plugin
planner-plugin
scoring-engine-plugin
strategy-plugin
plugins

View File

@@ -39,7 +39,7 @@ Here is an example showing how you can write a planner plugin called
# Filepath = third-party/third_party/dummy.py
# Import path = third_party.dummy
import uuid
from oslo_utils import uuidutils
from watcher.decision_engine.planner import base
@@ -47,7 +47,7 @@ Here is an example showing how you can write a planner plugin called
def _create_action_plan(self, context, audit_id):
action_plan_dict = {
'uuid': uuid.uuid4(),
'uuid': uuidutils.generate_uuid(),
'audit_id': audit_id,
'first_action_id': None,
'state': objects.action_plan.State.RECOMMENDED
@@ -145,7 +145,7 @@ Here below is how you would proceed to register ``DummyPlanner`` using pbr_:
watcher_planners =
dummy = third_party.dummy:DummyPlanner
.. _pbr: http://docs.openstack.org/developer/pbr/
.. _pbr: https://docs.openstack.org/pbr/latest
Using planner plugins

View File

@@ -37,7 +37,8 @@ Create a new scoring engine plugin
In order to create a new scoring engine you have to:
- Extend the :py:class:`~.ScoringEngine` class
- Extend the :py:class:`watcher.decision_engine.scoring.base.ScoringEngine`
class
- Implement its :py:meth:`~.ScoringEngine.get_name` method to return the
**unique** ID of the new scoring engine you want to create. This unique ID
should be the same as the name of :ref:`the entry point we will declare later
@@ -124,7 +125,8 @@ scoring engine deployed as a web service on external servers:
Abstract Plugin Class
=====================
Here below is the abstract :py:class:`~.ScoringEngine` class:
Here below is the abstract
:py:class:`watcher.decision_engine.scoring.base.ScoringEngine` class:
.. autoclass:: watcher.decision_engine.scoring.base.ScoringEngine
:members:
@@ -188,7 +190,7 @@ the :py:class:`~.DummyScoringContainer` and the way it is configured in
watcher_scoring_engine_containers =
new_scoring_container = thirdparty.new:NewContainer
.. _pbr: http://docs.openstack.org/developer/pbr/
.. _pbr: https://docs.openstack.org/pbr/latest/
Using scoring engine plugins

View File

@@ -43,7 +43,7 @@ In order to create a new strategy, you have to:
Note: Do not use a variable to return the translated string so it can be
automatically collected by the translation tool.
- Implement its :py:meth:`~.BaseStrategy.get_translatable_display_name`
class method to return the translation key (actually the english display
class method to return the translation key (actually the English display
name) of your new strategy. The value return should be the same as the
string translated in :py:meth:`~.BaseStrategy.get_display_name`.
- Implement its :py:meth:`~.BaseStrategy.execute` method to return the
@@ -219,7 +219,7 @@ Here below is how you would proceed to register ``NewStrategy`` using pbr_:
To get a better understanding on how to implement a more advanced strategy,
have a look at the :py:class:`~.BasicConsolidation` class.
.. _pbr: http://docs.openstack.org/developer/pbr/
.. _pbr: https://docs.openstack.org/pbr/latest
Using strategy plugins
======================
@@ -245,75 +245,70 @@ 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`_ to the Ceilometer API, which makes this API reusable and easier
to used.
`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.
If you want to use your own metrics database backend, please refer to the
`Ceilometer developer guide`_. Indeed, Ceilometer's pluggable model allows
for various types of backends. A list of the available backends is located
here_. The Ceilosca project is a good example of how to create your own
pluggable backend.
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
Ceilometer backends is located here_. The `Ceilosca`_ project is a good example
of how to create your own pluggable backend. Moreover, if your strategy
requires new metrics not covered by Ceilometer, you can add them through a
`Ceilometer plugin`_.
Finally, if your strategy requires new metrics not covered by Ceilometer, you
can add them through a Ceilometer `plugin`_.
.. _`Helper`: https://github.com/openstack/watcher/blob/master/watcher/decision_engine/cluster/history/ceilometer.py
.. _`Ceilometer developer guide`: http://docs.openstack.org/developer/ceilometer/architecture.html#storing-the-data
.. _`here`: http://docs.openstack.org/developer/ceilometer/install/dbreco.html#choosing-a-database-backend
.. _`plugin`: http://docs.openstack.org/developer/ceilometer/plugins.html
.. _`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
Read usage metrics using the Watcher Datasource Helper
------------------------------------------------------
Read usage metrics using the Python binding
-------------------------------------------
You can find the information about the Ceilometer Python binding on the
OpenStack `ceilometer client python API documentation
<http://docs.openstack.org/developer/python-ceilometerclient/api.html>`_
To facilitate the process, Watcher provides the ``osc`` attribute to every
strategy which includes clients to major OpenStack services, including
Ceilometer. So to access it within your strategy, you can do the following:
The following code snippet shows how to invoke a Datasource Helper class:
.. code-block:: py
# Within your strategy "execute()"
cclient = self.osc.ceilometer
# TODO: Do something here
from watcher.datasource import ceilometer as ceil
from watcher.datasource import monasca as mon
@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
Using that you can now query the values for that specific metric:
.. code-block:: py
query = None # e.g. [{'field': 'foo', 'op': 'le', 'value': 34},]
value_cpu = cclient.samples.list(
meter_name='cpu_util',
limit=10, q=query)
Read usage metrics using the Watcher Cluster History Helper
-----------------------------------------------------------
Here below is the abstract ``BaseClusterHistory`` class of the Helper.
.. autoclass:: watcher.decision_engine.cluster.history.base.BaseClusterHistory
:members:
:noindex:
The following code snippet shows how to create a Cluster History class:
.. code-block:: py
from watcher.decision_engine.cluster.history import ceilometer as ceil
query_history = ceil.CeilometerClusterHistory()
Using that you can now query the values for that specific metric:
.. code-block:: py
query_history.statistic_aggregation(resource_id=compute_node.uuid,
meter_name='compute.node.cpu.percent',
period="7200",
aggregate='avg'
)
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'
)

View File

@@ -14,7 +14,7 @@ Unit tests
==========
All unit tests should be run using `tox`_. To run the same unit tests that are
executing onto `Gerrit`_ which includes ``py34``, ``py27`` and ``pep8``, you
executing onto `Gerrit`_ which includes ``py35``, ``py27`` and ``pep8``, you
can issue the following command::
$ workon watcher
@@ -26,7 +26,7 @@ If you want to only run one of the aforementioned, you can then issue one of
the following::
$ workon watcher
(watcher) $ tox -e py34
(watcher) $ tox -e py35
(watcher) $ tox -e py27
(watcher) $ tox -e pep8
@@ -41,10 +41,18 @@ you can run the desired test::
$ workon watcher
(watcher) $ tox -e py27 -- -r watcher.tests.api
.. _os-testr: http://docs.openstack.org/developer/os-testr/
.. _os-testr: https://docs.openstack.org/os-testr/latest
When you're done, deactivate the virtualenv::
$ deactivate
.. include:: ../../../watcher_tempest_plugin/README.rst
.. _tempest_tests:
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

View File

@@ -1,14 +0,0 @@
.. _watcher_sample_configuration_files:
==================================
Watcher sample configuration files
==================================
watcher.conf
~~~~~~~~~~~~
The ``watcher.conf`` file contains most of the options to configure the
Watcher services.
.. literalinclude:: ../watcher.conf.sample
:language: ini

View File

@@ -65,6 +65,14 @@ Audit
.. _audit_template_definition:
Audit Scope
===========
An Audit Scope is a set of audited resources. Audit Scope should be defined
in each Audit Template (which contains the Audit settings).
.. _audit_scope_definition:
Audit Template
==============
@@ -75,7 +83,7 @@ Audit Template
Availability Zone
=================
Please, read `the official OpenStack definition of an Availability Zone <http://docs.openstack.org/developer/nova/aggregates.html#availability-zones-azs>`_.
Please, read `the official OpenStack definition of an Availability Zone <https://docs.openstack.org/nova/latest/user/aggregates.html#availability-zones-azs>`_.
.. _cluster_definition:
@@ -96,32 +104,19 @@ The :ref:`Cluster <cluster_definition>` may be divided in one or several
.. _cluster_data_model_definition:
Cluster Data Model
==================
Cluster Data Model (CDM)
========================
.. watcher-term:: watcher.decision_engine.model.collector.base
.. _cluster_history_definition:
Cluster History
===============
.. watcher-term:: watcher.decision_engine.cluster.history.base
.. _controller_node_definition:
Controller Node
===============
A controller node is a machine that typically runs the following core OpenStack
services:
- Keystone: for identity and service management
- Cinder scheduler: for volumes management
- Glance controller: for image management
- Neutron controller: for network management
- Nova controller: for global compute resources management with services
such as nova-scheduler, nova-conductor and nova-network.
Please, read `the official OpenStack definition of a Controller Node
<https://docs.openstack.org/nova/latest/install/overview.html#controller>`_.
In many configurations, Watcher will reside on a controller node even if it
can potentially be hosted on a dedicated machine.
@@ -132,7 +127,7 @@ Compute node
============
Please, read `the official OpenStack definition of a Compute Node
<http://docs.openstack.org/openstack-ops/content/compute_nodes.html>`_.
<https://docs.openstack.org/nova/latest/install/overview.html#compute>`_.
.. _customer_definition:
@@ -164,7 +159,8 @@ Goal
Host Aggregate
==============
Please, read `the official OpenStack definition of a Host Aggregate <http://docs.openstack.org/developer/nova/aggregates.html>`_.
Please, read `the official OpenStack definition of a Host Aggregate
<https://docs.openstack.org/nova/latest/user/aggregates.html>`_.
.. _instance_definition:
@@ -203,18 +199,18 @@ the Watcher system can act on.
Here are some examples of
:ref:`Managed resource types <managed_resource_definition>`:
- `Nova Host Aggregates <http://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Nova::HostAggregate>`_
- `Nova Servers <http://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Nova::Server>`_
- `Cinder Volumes <http://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Cinder::Volume>`_
- `Neutron Routers <http://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Neutron::Router>`_
- `Neutron Networks <http://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Neutron::Net>`_
- `Neutron load-balancers <http://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Neutron::LoadBalancer>`_
- `Sahara Hadoop Cluster <http://docs.openstack.org/developer/heat/template_guide/openstack.html#OS::Sahara::Cluster>`_
- `Nova Host Aggregates <https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Nova::HostAggregate>`_
- `Nova Servers <https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Nova::Server>`_
- `Cinder Volumes <https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Cinder::Volume>`_
- `Neutron Routers <https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::Router>`_
- `Neutron Networks <https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::Net>`_
- `Neutron load-balancers <https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Neutron::LoadBalancer>`_
- `Sahara Hadoop Cluster <https://docs.openstack.org/heat/latest/template_guide/openstack.html#OS::Sahara::Cluster>`_
- ...
It can be any of the `the official list of available resource types defined in
It can be any of `the official list of available resource types defined in
OpenStack for HEAT
<http://docs.openstack.org/developer/heat/template_guide/openstack.html>`_.
<https://docs.openstack.org/heat/latest/template_guide/openstack.html>`_.
.. _efficacy_indicator_definition:

View File

@@ -7,10 +7,14 @@ ONGOING --> FAILED: Something failed while executing\nthe Action Plan in the Wat
ONGOING --> SUCCEEDED: The Watcher Applier executed\nthe Action Plan successfully
FAILED --> DELETED : Administrator removes\nAction Plan
SUCCEEDED --> DELETED : Administrator removes\nAction Plan
ONGOING --> CANCELLED : Administrator cancels\nAction Plan
ONGOING --> CANCELLING : Administrator cancels\nAction Plan
CANCELLING --> CANCELLED : The Watcher Applier cancelled\nthe Action Plan successfully
CANCELLING --> FAILED : Something failed while cancelling\nthe Action Plan in the Watcher Applier
RECOMMENDED --> CANCELLED : Administrator cancels\nAction Plan
RECOMMENDED --> SUPERSEDED : The Watcher Decision Engine supersedes\nAction Plan
PENDING --> CANCELLED : Administrator cancels\nAction Plan
CANCELLED --> DELETED
SUPERSEDED --> DELETED
DELETED --> [*]
@enduml

View File

@@ -4,11 +4,14 @@
PENDING --> ONGOING: Audit request is received\nby the Watcher Decision Engine
ONGOING --> FAILED: Audit fails\n(no solution found, technical error, ...)
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
FAILED --> DELETED : Administrator wants to\narchive/delete the Audit
SUCCEEDED --> DELETED : Administrator wants to\narchive/delete the Audit
PENDING --> CANCELLED : Administrator cancels\nthe Audit
ONGOING --> CANCELLED : Administrator cancels\nthe Audit
CANCELLED --> DELETED : Administrator wants to\narchive/delete the Audit
SUSPENDED --> DELETED: Administrator wants to\narchive/delete the Audit
DELETED --> [*]
@enduml

View File

@@ -4,7 +4,7 @@ actor Administrator
== Create some Audit settings ==
Administrator -> Watcher : create new Audit Template (i.e. Audit settings : goal, scope, deadline,...)
Administrator -> Watcher : create new Audit Template (i.e. Audit settings : goal, scope, ...)
Watcher -> Watcher : save Audit Template in database
Administrator <-- Watcher : Audit Template UUID

View File

@@ -5,11 +5,12 @@
hide methods
hide stereotypes
table(goal) {
table(goals) {
primary_key(id: Integer)
uuid : String[36]
name : String[63]
display_name : String[63]
efficacy_specification : JSONEncodedList, nullable
created_at : DateTime
updated_at : DateTime
@@ -18,12 +19,13 @@ table(goal) {
}
table(strategy) {
table(strategies) {
primary_key(id: Integer)
foreign_key(goal_id : Integer)
uuid : String[36]
name : String[63]
display_name : String[63]
parameters_spec : JSONEncodedDict, nullable
created_at : DateTime
updated_at : DateTime
@@ -32,16 +34,14 @@ table(strategy) {
}
table(audit_template) {
table(audit_templates) {
primary_key(id: Integer)
foreign_key("goal_id : Integer")
foreign_key("strategy_id : Integer, nullable")
uuid : String[36]
name : String[63], nullable
description : String[255], nullable
host_aggregate : Integer, nullable
extra : JSONEncodedDict
version : String[15], nullable
scope : JSONEncodedList
created_at : DateTime
updated_at : DateTime
@@ -50,14 +50,17 @@ table(audit_template) {
}
table(audit) {
table(audits) {
primary_key(id: Integer)
foreign_key("audit_template_id : Integer")
foreign_key("goal_id : Integer")
foreign_key("strategy_id : Integer, nullable")
uuid : String[36]
audit_type : String[20]
state : String[20], nullable
deadline :DateTime, nullable
interval : Integer, nullable
parameters : JSONEncodedDict, nullable
scope : JSONEncodedList, nullable
auto_trigger: Boolean
created_at : DateTime
updated_at : DateTime
@@ -66,11 +69,11 @@ table(audit) {
}
table(action_plan) {
table(action_plans) {
primary_key(id: Integer)
foreign_key("audit_id : Integer, nullable")
foreign_key("strategy_id : Integer")
uuid : String[36]
first_action_id : Integer
state : String[20], nullable
global_efficacy : JSONEncodedDict, nullable
@@ -81,14 +84,14 @@ table(action_plan) {
}
table(action) {
table(actions) {
primary_key(id: Integer)
foreign_key("action_plan_id : Integer")
uuid : String[36]
action_type : String[255]
input_parameters : JSONEncodedDict, nullable
state : String[20], nullable
next : String[36], nullable
parents : JSONEncodedList, nullable
created_at : DateTime
updated_at : DateTime
@@ -97,7 +100,7 @@ table(action) {
}
table(efficacy_indicator) {
table(efficacy_indicators) {
primary_key(id: Integer)
foreign_key("action_plan_id : Integer")
uuid : String[36]
@@ -112,12 +115,39 @@ table(efficacy_indicator) {
deleted : Integer
}
"goal" <.. "strategy" : Foreign Key
"goal" <.. "audit_template" : Foreign Key
"strategy" <.. "audit_template" : Foreign Key
"audit_template" <.. "audit" : Foreign Key
"action_plan" <.. "action" : Foreign Key
"action_plan" <.. "efficacy_indicator" : Foreign Key
"audit" <.. "action_plan" : Foreign Key
table(scoring_engines) {
primary_key(id: Integer)
uuid : String[36]
name : String[63]
description : String[255], nullable
metainfo : Text, nullable
created_at : DateTime
updated_at : DateTime
deleted_at : DateTime
deleted : Integer
}
table(service) {
primary_key(id: Integer)
name: String[255]
host: String[255]
last_seen_up: DateTime
created_at : DateTime
updated_at : DateTime
deleted_at : DateTime
deleted : Integer
}
"goals" <.. "strategies" : Foreign Key
"goals" <.. "audit_templates" : Foreign Key
"strategies" <.. "audit_templates" : Foreign Key
"goals" <.. "audits" : Foreign Key
"strategies" <.. "audits" : Foreign Key
"action_plans" <.. "actions" : Foreign Key
"action_plans" <.. "efficacy_indicators" : Foreign Key
"strategies" <.. "action_plans" : Foreign Key
"audits" <.. "action_plans" : Foreign Key
@enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 76 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -43,7 +43,7 @@ Introduction
glossary
architecture
dev/contributing
contributor/contributing
Getting Started
@@ -52,12 +52,7 @@ Getting Started
.. toctree::
:maxdepth: 1
dev/environment
dev/devstack
deploy/configuration
deploy/conf-files
dev/testing
dev/rally_link
contributor/index
API References
--------------
@@ -65,7 +60,7 @@ API References
.. toctree::
:maxdepth: 1
webapi/v1
api/index
Plugins
-------
@@ -73,29 +68,38 @@ Plugins
.. toctree::
:maxdepth: 1
dev/plugin/base-setup
dev/plugin/goal-plugin
dev/plugin/scoring-engine-plugin
dev/plugin/strategy-plugin
dev/plugin/cdmc-plugin
dev/plugin/action-plugin
dev/plugin/planner-plugin
dev/plugins
contributor/plugin/index
Installation
============
.. toctree::
:maxdepth: 2
install/index
Watcher Configuration Options
=============================
.. toctree::
:maxdepth: 2
configuration/index
Admin Guide
===========
Introduction
------------
.. toctree::
:maxdepth: 2
admin/index
User Guide
==========
.. toctree::
:maxdepth: 1
:maxdepth: 2
deploy/installation
deploy/user-guide
deploy/policy
deploy/gmr
user/index
Watcher Manual Pages
====================
@@ -104,7 +108,7 @@ Watcher Manual Pages
:glob:
:maxdepth: 1
man/*
man/index
.. # NOTE(mriedem): This is the section where we hide things that we don't
# actually want in the table of contents but sphinx build would fail if

View File

@@ -0,0 +1,81 @@
2. Edit the ``/etc/watcher/watcher.conf`` file and complete the following
actions:
* In the ``[database]`` section, configure database access:
.. code-block:: ini
[database]
...
connection = mysql+pymysql://watcher:WATCHER_DBPASS@controller/watcher?charset=utf8
* In the `[DEFAULT]` section, configure the transport url for RabbitMQ message broker.
.. code-block:: ini
[DEFAULT]
...
control_exchange = watcher
transport_url = rabbit://openstack:RABBIT_PASS@controller
Replace the RABBIT_PASS with the password you chose for OpenStack user in RabbitMQ.
* In the `[keystone_authtoken]` section, configure Identity service access.
.. code-block:: ini
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = watcher
password = WATCHER_PASS
Replace WATCHER_PASS with the password you chose for the watcher user in the Identity service.
* Watcher interacts with other OpenStack projects via project clients, in order to instantiate these
clients, Watcher requests new session from Identity service. In the `[watcher_clients_auth]` section,
configure the identity service access to interact with other OpenStack project clients.
.. code-block:: ini
[watcher_clients_auth]
...
auth_type = password
auth_url = http://controller:35357
username = watcher
password = WATCHER_PASS
project_domain_name = default
user_domain_name = default
project_name = service
Replace WATCHER_PASS with the password you chose for the watcher user in the Identity service.
* In the `[api]` section, configure host option.
.. code-block:: ini
[api]
...
host = controller
Replace controller with the IP address of the management network interface on your controller node, typically 10.0.0.11 for the first node in the example architecture.
* In the `[oslo_messaging_notifications]` section, configure the messaging driver.
.. code-block:: ini
[oslo_messaging_notifications]
...
driver = messagingv2
3. Populate watcher database:
.. code-block:: ini
su -s /bin/sh -c "watcher-db-manage --config-file /etc/watcher/watcher.conf upgrade"

View File

@@ -0,0 +1,139 @@
Prerequisites
-------------
Before you install and configure the Infrastructure Optimization service,
you must create a database, service credentials, and API endpoints.
1. Create the database, complete these steps:
* Use the database access client to connect to the database
server as the ``root`` user:
.. code-block:: console
$ mysql -u root -p
* Create the ``watcher`` database:
.. code-block:: console
CREATE DATABASE watcher CHARACTER SET utf8;
* Grant proper access to the ``watcher`` database:
.. code-block:: console
GRANT ALL PRIVILEGES ON watcher.* TO 'watcher'@'localhost' \
IDENTIFIED BY 'WATCHER_DBPASS';
GRANT ALL PRIVILEGES ON watcher.* TO 'watcher'@'%' \
IDENTIFIED BY 'WATCHER_DBPASS';
Replace ``WATCHER_DBPASS`` with a suitable password.
* Exit the database access client.
.. code-block:: console
exit;
2. Source the ``admin`` credentials to gain access to
admin-only CLI commands:
.. code-block:: console
$ . admin-openrc
3. To create the service credentials, complete these steps:
* Create the ``watcher`` user:
.. code-block:: console
$ openstack user create --domain default --password-prompt watcher
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | b18ee38e06034b748141beda8fc8bfad |
| name | watcher |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
* Add the ``admin`` role to the ``watcher`` user:
.. code-block:: console
$ openstack role add --project service --user watcher admin
.. note::
This command produces no output.
* Create the watcher service entities:
.. code-block:: console
$ openstack service create --name watcher --description "Infrastructure Optimization" infra-optim
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Infrastructure Optimization |
| enabled | True |
| id | d854f6fff0a64f77bda8003c8dedfada |
| name | watcher |
| type | infra-optim |
+-------------+----------------------------------+
4. Create the Infrastructure Optimization service API endpoints:
.. code-block:: console
$ openstack endpoint create --region RegionOne \
infra-optim public http://controller:9322
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Infrastructure Optimization |
| enabled | True |
| id | d854f6fff0a64f77bda8003c8dedfada |
| name | watcher |
| type | infra-optim |
+-------------+----------------------------------+
$ openstack endpoint create --region RegionOne \
infra-optim internal http://controller:9322
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 225aef8465ef4df48a341aaaf2b0a390 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | d854f6fff0a64f77bda8003c8dedfada |
| service_name | watcher |
| service_type | infra-optim |
| url | http://controller:9322 |
+--------------+----------------------------------+
$ openstack endpoint create --region RegionOne \
infra-optim admin http://controller:9322
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 375eb5057fb546edbdf3ee4866179672 |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | d854f6fff0a64f77bda8003c8dedfada |
| service_name | watcher |
| service_type | infra-optim |
| url | http://controller:9322 |
+--------------+----------------------------------+

View File

@@ -0,0 +1,27 @@
============================================
Infrastructure Optimization service overview
============================================
The Infrastructure Optimization service provides flexible and scalable
optimization service for multi-tenant OpenStack based clouds.
The Infrastructure Optimization service consists of the following components:
``watcher`` command-line client
A CLI to communicate with ``watcher-api`` to optimize the cloud.
``watcher-api`` service
An OpenStack-native REST API that accepts and responds to end-user calls
by processing them and forwarding to appropriate underlying watcher
services via AMQP.
``watcher-decision-engine`` service
It runs audit and return an action plan to achieve optimization goal
specified by the end-user in audit.
``watcher-applier`` service
It executes action plan built by watcher-decision-engine. It interacts with
other OpenStack components like nova to execute the given action
plan.
``watcher-dashboard``
Watcher UI implemented as a plugin for the OpenStack Dashboard.

View File

@@ -0,0 +1,39 @@
===================================
Infrastructure Optimization service
===================================
.. toctree::
:maxdepth: 2
get_started.rst
install.rst
verify.rst
next-steps.rst
The Infrastructure Optimization service (watcher) provides
flexible and scalable resource optimization service for
multi-tenant OpenStack-based clouds.
Watcher provides a complete optimization loop including
everything from a 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
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
Check watcher glossary at
https://docs.openstack.org/watcher/latest/glossary.html
This chapter assumes a working setup of OpenStack following the
`OpenStack Installation Tutorial
<https://docs.openstack.org/pike/install/>`_.

View File

@@ -0,0 +1,38 @@
.. _install-rdo:
Install and configure for Red Hat Enterprise Linux and CentOS
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This section describes how to install and configure the Infrastructure
Optimization service for Red Hat Enterprise Linux 7 and CentOS 7.
.. include:: common_prerequisites.rst
Install and configure components
--------------------------------
1. Install the packages:
.. code-block:: console
# sudo yum install openstack-watcher-api openstack-watcher-applier \
openstack-watcher-decision-engine
.. include:: common_configure.rst
Finalize installation
---------------------
Start the Infrastructure Optimization services and configure them to start when
the system boots:
.. code-block:: console
# systemctl enable openstack-watcher-api.service \
openstack-watcher-decision-engine.service \
openstack-watcher-applier.service
# systemctl start openstack-watcher-api.service \
openstack-watcher-decision-engine.service \
openstack-watcher-applier.service

View File

@@ -0,0 +1,34 @@
.. _install-ubuntu:
Install and configure for Ubuntu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This section describes how to install and configure the Infrastructure
Optimization service for Ubuntu 14.04 (LTS).
.. include:: common_prerequisites.rst
Install and configure components
--------------------------------
1. Install the packages:
.. code-block:: console
# apt install watcher-api watcher-decision-engine \
watcher-applier
# apt install python-watcherclient
.. include:: common_configure.rst
Finalize installation
---------------------
Restart the Infrastructure Optimization services:
.. code-block:: console
# service watcher-api restart
# service watcher-decision-engine restart
# service watcher-applier restart

View File

@@ -0,0 +1,19 @@
.. _install:
Install and configure
~~~~~~~~~~~~~~~~~~~~~
This section describes how to install and configure the Infrastructure
Optimization service, code-named watcher, on the controller node.
This section assumes that you already have a working OpenStack
environment with at least the following components installed:
Identity Service, Compute Service, Telemetry data collection service.
Note that installation and configuration vary by distribution.
.. toctree::
:maxdepth: 2
install-rdo.rst
install-ubuntu.rst

View File

@@ -0,0 +1,9 @@
.. _next-steps:
Next steps
~~~~~~~~~~
Your OpenStack environment now includes the watcher service.
To add additional services, see
https://docs.openstack.org/pike/install/.

View File

@@ -0,0 +1,119 @@
.. _verify:
Verify operation
~~~~~~~~~~~~~~~~
Verify operation of the Infrastructure Optimization service.
.. note::
Perform these commands on the controller node.
1. Source the ``admin`` project credentials to gain access to
admin-only CLI commands:
.. code-block:: console
$ . admin-openrc
2. List service components to verify successful launch and registration
of each process:
.. code-block:: console
$ openstack optimize service list
+----+-------------------------+------------+--------+
| ID | Name | Host | Status |
+----+-------------------------+------------+--------+
| 1 | watcher-decision-engine | controller | ACTIVE |
| 2 | watcher-applier | controller | ACTIVE |
+----+-------------------------+------------+--------+
3. List goals and strategies:
.. code-block:: console
$ openstack optimize goal list
+--------------------------------------+----------------------+----------------------+
| UUID | Name | Display name |
+--------------------------------------+----------------------+----------------------+
| a8cd6d1a-008b-4ff0-8dbc-b30493fcc5b9 | dummy | Dummy goal |
| 03953f2f-02d0-42b5-9a12-7ba500a54395 | workload_balancing | Workload Balancing |
| de0f8714-984b-4d6b-add1-9cad8120fbce | server_consolidation | Server Consolidation |
| f056bc80-c6d1-40dc-b002-938ccade9385 | thermal_optimization | Thermal Optimization |
| e7062856-892e-4f0f-b84d-b828464b3fd0 | airflow_optimization | Airflow Optimization |
| 1f038da9-b36c-449f-9f04-c225bf3eb478 | unclassified | Unclassified |
+--------------------------------------+----------------------+----------------------+
$ openstack optimize strategy list
+--------------------------------------+---------------------------+---------------------------------------------+----------------------+
| UUID | Name | Display name | Goal |
+--------------------------------------+---------------------------+---------------------------------------------+----------------------+
| 98ae84c8-7c9b-4cbd-8d9c-4bd7c6b106eb | dummy | Dummy strategy | dummy |
| 02a170b6-c72e-479d-95c0-8a4fdd4cc1ef | dummy_with_scorer | Dummy Strategy using sample Scoring Engines | dummy |
| 8bf591b8-57e5-4a9e-8c7d-c37bda735a45 | outlet_temperature | Outlet temperature based strategy | thermal_optimization |
| 8a0810fb-9d9a-47b9-ab25-e442878abc54 | vm_workload_consolidation | VM Workload Consolidation Strategy | server_consolidation |
| 1718859c-3eb5-45cb-9220-9cb79fe42fa5 | basic | Basic offline consolidation | server_consolidation |
| b5e7f5f1-4824-42c7-bb52-cf50724f67bf | workload_stabilization | Workload stabilization | workload_balancing |
| f853d71e-9286-4df3-9d3e-8eaf0f598e07 | workload_balance | Workload Balance Migration Strategy | workload_balancing |
| 58bdfa89-95b5-4630-adf6-fd3af5ff1f75 | uniform_airflow | Uniform airflow migration strategy | airflow_optimization |
| 66fde55d-a612-4be9-8cb0-ea63472b420b | dummy_with_resize | Dummy strategy with resize | dummy |
+--------------------------------------+---------------------------+---------------------------------------------+----------------------+
4. Run an action plan by creating an audit with dummy goal:
.. code-block:: console
$ openstack optimize audit create --goal dummy
+--------------+--------------------------------------+
| Field | Value |
+--------------+--------------------------------------+
| UUID | e94d4826-ad4e-44df-ad93-dff489fde457 |
| Created At | 2017-05-23T11:46:58.763394+00:00 |
| Updated At | None |
| Deleted At | None |
| State | PENDING |
| Audit Type | ONESHOT |
| Parameters | {} |
| Interval | None |
| Goal | dummy |
| Strategy | auto |
| Audit Scope | [] |
| Auto Trigger | False |
+--------------+--------------------------------------+
$ openstack optimize audit list
+--------------------------------------+------------+-----------+-------+----------+--------------+
| UUID | Audit Type | State | Goal | Strategy | Auto Trigger |
+--------------------------------------+------------+-----------+-------+----------+--------------+
| e94d4826-ad4e-44df-ad93-dff489fde457 | ONESHOT | SUCCEEDED | dummy | auto | False |
+--------------------------------------+------------+-----------+-------+----------+--------------+
$ openstack optimize actionplan list
+--------------------------------------+--------------------------------------+-------------+------------+-----------------+
| UUID | Audit | State | Updated At | Global efficacy |
+--------------------------------------+--------------------------------------+-------------+------------+-----------------+
| ba9ce6b3-969c-4b8e-bb61-ae24e8630f81 | e94d4826-ad4e-44df-ad93-dff489fde457 | RECOMMENDED | None | None |
+--------------------------------------+--------------------------------------+-------------+------------+-----------------+
$ openstack optimize actionplan start ba9ce6b3-969c-4b8e-bb61-ae24e8630f81
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| UUID | ba9ce6b3-969c-4b8e-bb61-ae24e8630f81 |
| Created At | 2017-05-23T11:46:58+00:00 |
| Updated At | 2017-05-23T11:53:12+00:00 |
| Deleted At | None |
| Audit | e94d4826-ad4e-44df-ad93-dff489fde457 |
| Strategy | dummy |
| State | ONGOING |
| Efficacy indicators | [] |
| Global efficacy | {} |
+---------------------+--------------------------------------+
$ openstack optimize actionplan list
+--------------------------------------+--------------------------------------+-----------+---------------------------+-----------------+
| UUID | Audit | State | Updated At | Global efficacy |
+--------------------------------------+--------------------------------------+-----------+---------------------------+-----------------+
| ba9ce6b3-969c-4b8e-bb61-ae24e8630f81 | e94d4826-ad4e-44df-ad93-dff489fde457 | SUCCEEDED | 2017-05-23T11:53:16+00:00 | None |
+--------------------------------------+--------------------------------------+-----------+---------------------------+-----------------+

8
doc/source/man/index.rst Normal file
View File

@@ -0,0 +1,8 @@
.. toctree::
:glob:
:maxdepth: 1
watcher-api
watcher-applier
watcher-db-manage
watcher-decision-engine

View File

@@ -0,0 +1,99 @@
==================================
Basic Offline Server Consolidation
==================================
Synopsis
--------
**display name**: ``Basic offline consolidation``
**goal**: ``server_consolidation``
.. watcher-term:: watcher.decision_engine.strategy.strategies.basic_consolidation
Requirements
------------
Metrics
*******
The *basic* strategy requires the following metrics:
============================ ============ ======= =======
metric service name plugins comment
============================ ============ ======= =======
``compute.node.cpu.percent`` ceilometer_ none
``cpu_util`` ceilometer_ none
============================ ============ ======= =======
.. _ceilometer: https://docs.openstack.org/ceilometer/latest/admin/telemetry-measurements.html#openstack-compute
Cluster data model
******************
Default Watcher's Compute cluster data model:
.. watcher-term:: watcher.decision_engine.model.collector.nova.NovaClusterDataModelCollector
Actions
*******
Default Watcher's actions:
.. list-table::
:widths: 30 30
:header-rows: 1
* - action
- description
* - ``migration``
- .. watcher-term:: watcher.applier.actions.migration.Migrate
* - ``change_nova_service_state``
- .. watcher-term:: watcher.applier.actions.change_nova_service_state.ChangeNovaServiceState
Planner
*******
Default Watcher's planner:
.. watcher-term:: watcher.decision_engine.planner.weight.WeightPlanner
Configuration
-------------
Strategy parameter is:
====================== ====== ============= ===================================
parameter type default Value description
====================== ====== ============= ===================================
``migration_attempts`` Number 0 Maximum number of combinations to
be tried by the strategy while
searching for potential candidates.
To remove the limit, set it to 0
``period`` Number 7200 The time interval in seconds
for getting statistic aggregation
from metric data source
====================== ====== ============= ===================================
Efficacy Indicator
------------------
.. watcher-func::
:format: literal_block
watcher.decision_engine.goal.efficacy.specs.ServerConsolidation.get_global_efficacy_indicator
How to use it ?
---------------
.. code-block:: shell
$ openstack optimize audittemplate create \
at1 server_consolidation --strategy basic
$ openstack optimize audit create -a at1 -p migration_attempts=4
External Links
--------------
None.

View File

@@ -0,0 +1,8 @@
Strategies
==========
.. toctree::
:glob:
:maxdepth: 1
./*

View File

@@ -0,0 +1,104 @@
=================================
Outlet Temperature Based Strategy
=================================
Synopsis
--------
**display name**: ``Outlet temperature based strategy``
**goal**: ``thermal_optimization``
Outlet (Exhaust Air) temperature is a new thermal telemetry which can be
used to measure the host's thermal/workload status. This strategy makes
decisions to migrate workloads to the hosts with good thermal condition
(lowest outlet temperature) when the outlet temperature of source hosts
reach a configurable threshold.
Requirements
------------
This strategy has a dependency on the host having Intel's Power
Node Manager 3.0 or later enabled.
Metrics
*******
The *outlet_temperature* strategy requires the following metrics:
========================================= ============ ======= =======
metric service name plugins comment
========================================= ============ ======= =======
``hardware.ipmi.node.outlet_temperature`` ceilometer_ IPMI
========================================= ============ ======= =======
.. _ceilometer: https://docs.openstack.org/ceilometer/latest/admin/telemetry-measurements.html#ipmi-based-meters
Cluster data model
******************
Default Watcher's Compute cluster data model:
.. watcher-term:: watcher.decision_engine.model.collector.nova.NovaClusterDataModelCollector
Actions
*******
Default Watcher's actions:
.. list-table::
:widths: 30 30
:header-rows: 1
* - action
- description
* - ``migration``
- .. watcher-term:: watcher.applier.actions.migration.Migrate
Planner
*******
Default Watcher's planner:
.. watcher-term:: watcher.decision_engine.planner.weight.WeightPlanner
Configuration
-------------
Strategy parameter is:
============== ====== ============= ====================================
parameter type default Value description
============== ====== ============= ====================================
``threshold`` Number 35.0 Temperature threshold for migration
``period`` Number 30 The time interval in seconds for
getting statistic aggregation from
metric data source
============== ====== ============= ====================================
Efficacy Indicator
------------------
None
Algorithm
---------
For more information on the Outlet Temperature Based Strategy please refer to:
https://specs.openstack.org/openstack/watcher-specs/specs/mitaka/implemented/outlet-temperature-based-strategy.html
How to use it ?
---------------
.. code-block:: shell
$ openstack optimize audittemplate create \
at1 thermal_optimization --strategy outlet_temperature
$ openstack optimize audit create -a at1 -p threshold=31.0
External Links
--------------
- `Intel Power Node Manager 3.0 <http://www.intel.com/content/www/us/en/power-management/intelligent-power-node-manager-3-0-specification.html>`_

View File

@@ -0,0 +1,100 @@
======================
Saving Energy Strategy
======================
Synopsis
--------
**display name**: ``Saving Energy Strategy``
**goal**: ``saving_energy``
.. watcher-term:: watcher.decision_engine.strategy.strategies.saving_energy
Requirements
------------
This feature will use Ironic to do the power on/off actions, therefore
this feature requires that the ironic component is configured.
And the compute node should be managed by Ironic.
Ironic installation: https://docs.openstack.org/ironic/latest/install/index.html
Cluster data model
******************
Default Watcher's Compute cluster data model:
.. watcher-term:: watcher.decision_engine.model.collector.nova.NovaClusterDataModelCollector
Actions
*******
.. list-table::
:widths: 30 30
:header-rows: 1
* - action
- description
* - ``change_node_power_state``
- .. watcher-term:: watcher.applier.actions.change_node_power_state.ChangeNodePowerState
Planner
*******
Default Watcher's planner:
.. watcher-term:: watcher.decision_engine.planner.weight.WeightPlanner
Configuration
-------------
Strategy parameter is:
====================== ====== ======= ======================================
parameter type default description
Value
====================== ====== ======= ======================================
``free_used_percent`` Number 10.0 a rational number, which describes the
the quotient of
min_free_hosts_num/nodes_with_VMs_num
``min_free_hosts_num`` Int 1 an int number describes minimum free
compute nodes
====================== ====== ======= ======================================
Efficacy Indicator
------------------
Energy saving strategy efficacy indicator is unclassified.
https://github.com/openstack/watcher/blob/master/watcher/decision_engine/goal/goals.py#L215-L218
Algorithm
---------
For more information on the Energy Saving Strategy please refer to:http://specs.openstack.org/openstack/watcher-specs/specs/pike/implemented/energy-saving-strategy.html
How to use it ?
---------------
step1: Add compute nodes info into ironic node management
.. code-block:: shell
$ ironic node-create -d pxe_ipmitool -i ipmi_address=10.43.200.184 \
ipmi_username=root -i ipmi_password=nomoresecret -e compute_node_id=3
step 2: Create audit to do optimization
.. code-block:: shell
$ openstack optimize audittemplate create \
at1 saving_energy --strategy saving_energy
$ openstack optimize audit create -a at1
External Links
--------------
*Spec URL*
http://specs.openstack.org/openstack/watcher-specs/specs/pike/implemented/energy-saving-strategy.html

View File

@@ -0,0 +1,115 @@
=============
Strategy name
=============
Synopsis
--------
**display name**:
**goal**:
Add here a complete description of your strategy
Requirements
------------
Metrics
*******
Write here the list of metrics required by your strategy algorithm (in the form
of a table). If these metrics requires specific Telemetry plugin or other
additional software, please explain here how to deploy them (and add link to
dedicated installation guide).
Example:
======================= ============ ======= =======
metric service name plugins comment
======================= ============ ======= =======
compute.node.* ceilometer_ none one point every 60s
vm.cpu.utilization_perc monasca_ none
power ceilometer_ kwapi_ one point every 60s
======================= ============ ======= =======
.. _ceilometer: https://docs.openstack.org/ceilometer/latest/admin/telemetry-measurements.html#openstack-compute
.. _monasca: https://github.com/openstack/monasca-agent/blob/master/docs/Libvirt.md
.. _kwapi: https://kwapi.readthedocs.io/en/latest/index.html
Cluster data model
******************
Default Watcher's cluster data model.
or
If your strategy implementation requires a new cluster data model, please
describe it in this section, with a link to model plugin's installation guide.
Actions
*******
Default Watcher's actions.
or
If your strategy implementation requires new actions, add the list of Action
plugins here (in the form of a table) with a link to the plugin's installation
procedure.
======== =================
action description
======== =================
action1_ This action1 ...
action2_ This action2 ...
======== =================
.. _action1 : https://github.com/myrepo/watcher/plugins/action1
.. _action2 : https://github.com/myrepo/watcher/plugins/action2
Planner
*******
Default Watcher's planner.
or
If your strategy requires also a new planner to schedule built actions in time,
please describe it in this section, with a link to planner plugin's
installation guide.
Configuration
-------------
If your strategy use configurable parameters, explain here how to tune them.
Efficacy Indicator
------------------
Add here the Efficacy indicator computed by your strategy.
Algorithm
---------
Add here either the description of your algorithm or
link to the existing description.
How to use it ?
---------------
.. code-block:: shell
$ Write the command line to create an audit with your strategy.
External Links
--------------
If you have written papers, blog articles .... about your strategy into Watcher,
or if your strategy is based from external publication(s), please add HTTP
links and references in this section.
- `link1 <http://www.link1.papers.com>`_
- `link2 <http://www.link2.papers.com>`_

View File

@@ -0,0 +1,107 @@
==================================
Uniform Airflow Migration Strategy
==================================
Synopsis
--------
**display name**: ``Uniform airflow migration strategy``
**goal**: ``airflow_optimization``
.. watcher-term:: watcher.decision_engine.strategy.strategies.uniform_airflow
Requirements
------------
This strategy has a dependency on the server having Intel's Power
Node Manager 3.0 or later enabled.
Metrics
*******
The *uniform_airflow* strategy requires the following metrics:
================================== ============ ======= =======
metric service name plugins comment
================================== ============ ======= =======
``hardware.ipmi.node.airflow`` ceilometer_ IPMI
``hardware.ipmi.node.temperature`` ceilometer_ IPMI
``hardware.ipmi.node.power`` ceilometer_ IPMI
================================== ============ ======= =======
.. _ceilometer: http://docs.openstack.org/admin-guide/telemetry-measurements.html#ipmi-based-meters
Cluster data model
******************
Default Watcher's Compute cluster data model:
.. watcher-term:: watcher.decision_engine.model.collector.nova.NovaClusterDataModelCollector
Actions
*******
Default Watcher's actions:
.. list-table::
:widths: 30 30
:header-rows: 1
* - action
- description
* - ``migration``
- .. watcher-term:: watcher.applier.actions.migration.Migrate
Planner
*******
Default Watcher's planner:
.. watcher-term:: watcher.decision_engine.planner.weight.WeightPlanner
Configuration
-------------
Strategy parameters are:
====================== ====== ============= ===========================
parameter type default Value description
====================== ====== ============= ===========================
``threshold_airflow`` Number 400.0 Airflow threshold for
migration Unit is 0.1CFM
``threshold_inlet_t`` Number 28.0 Inlet temperature threshold
for migration decision
``threshold_power`` Number 350.0 System power threshold for
migration decision
``period`` Number 300 Aggregate time period of
ceilometer
====================== ====== ============= ===========================
Efficacy Indicator
------------------
None
Algorithm
---------
For more information on the Uniform Airflow Migration Strategy please refer to:
https://specs.openstack.org/openstack/watcher-specs/specs/newton/implemented/uniform-airflow-migration-strategy.html
How to use it ?
---------------
.. code-block:: shell
$ openstack optimize audittemplate create \
at1 airflow_optimization --strategy uniform_airflow
$ openstack optimize audit create -a at1 -p threshold_airflow=410 \
-p threshold_inlet_t=29.0 -p threshold_power=355.0 -p period=310
External Links
--------------
- `Intel Power Node Manager 3.0 <http://www.intel.com/content/www/us/en/power-management/intelligent-power-node-manager-3-0-specification.html>`_

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