Merge "Add a force field to audit"
This commit is contained in:
commit
bcbfca2567
191
specs/train/approved/add-force-field-to-audit.rst
Normal file
191
specs/train/approved/add-force-field-to-audit.rst
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
========================
|
||||||
|
Add force field to Audit
|
||||||
|
========================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/watcher/+spec/add-force-field-to-audit
|
||||||
|
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
As now, Watcher doesn't allow to launch a new audit when there
|
||||||
|
is actionplan ongoing. This is because if the new audit has
|
||||||
|
the same data model as the ongoing actionplan, the new audit
|
||||||
|
may create a wrong actionplan. But if there are different data
|
||||||
|
model scope, we should allow the new audit to run.
|
||||||
|
|
||||||
|
Use Cases
|
||||||
|
----------
|
||||||
|
|
||||||
|
As a Watcher user, I want to launch audit despite of ongoing actionplan.
|
||||||
|
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
We need to add a new field **force** in audit table. If **force** is True,
|
||||||
|
Watcher will execute the audit even other actionplan is ongoing.
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
def pre_execute(self, audit, request_context):
|
||||||
|
LOG.debug("Trigger audit %s", audit.uuid)
|
||||||
|
if audit.force is False:
|
||||||
|
self.check_ongoing_action_plans(request_context)
|
||||||
|
# Write hostname that will execute this audit.
|
||||||
|
audit.hostname = CONF.host
|
||||||
|
# change state of the audit to ONGOING
|
||||||
|
self.update_audit_state(audit, objects.audit.State.ONGOING)
|
||||||
|
|
||||||
|
The default value is False.
|
||||||
|
We also need to add an option in the post audit API. So that User can set
|
||||||
|
the value of the **force** field.
|
||||||
|
CLI example for creating audit with force:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ watcher audit create -g dummy --force
|
||||||
|
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Add new **force** field in the audit table
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Need to add new **force** parameter in Audits APIs.
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Add **force** to AuditPayload
|
||||||
|
|
||||||
|
**audit.create**
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
{
|
||||||
|
"priority": "INFO",
|
||||||
|
"payload": {
|
||||||
|
"watcher_object.data": {
|
||||||
|
"audit_type": "ONESHOT",
|
||||||
|
"parameters": {
|
||||||
|
"para2": "hello",
|
||||||
|
"para1": 3.2
|
||||||
|
},
|
||||||
|
"state": "PENDING",
|
||||||
|
"updated_at": null,
|
||||||
|
"deleted_at": null,
|
||||||
|
"interval": null,
|
||||||
|
"scope": [],
|
||||||
|
"force": False,
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
* Need to add **force** to CLI 'watcher audit create'
|
||||||
|
* Also need to update watcher-dashboard
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
licanwei
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Update architecture doc to add the new field
|
||||||
|
* Add new **force** field in the audit table
|
||||||
|
* Check the value of **force** before running audit
|
||||||
|
* Update Watcher API version
|
||||||
|
* Update notification AuditPayload
|
||||||
|
* Update python-watcherclient
|
||||||
|
* Update watcher-dashboard
|
||||||
|
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
Unittest for all changes
|
||||||
|
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
Update architecture doc to add the new field.
|
||||||
|
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
History
|
||||||
|
=======
|
||||||
|
|
||||||
|
|
||||||
|
.. list-table:: Revisions
|
||||||
|
:header-rows: 1
|
||||||
|
|
||||||
|
* - Release Name
|
||||||
|
- Description
|
||||||
|
* - Train
|
||||||
|
- Introduced
|
||||||
|
|
Loading…
Reference in New Issue
Block a user