This proposal aims at supporting vdu_autoheal by VDU state change event. Change-Id: I08f1b285bf3e040186df6e0889fe89e6b4fd4c43 Signed-off-by: Toshiaki Takahashi <ts-takahashi@nec.com>
12 KiB
Support event trigger alarm and vdu_autoheal by alarming type policy
This proposal aims at supporting vdu_autoheal by VDU state change event.
Problem description
Currently Tacker support vdu_autoheal triggered by monitoring such as ping. However, there are some systems which require healing triggered by events such as resource's state change. One use case is healing due to a hardware fault, and fault management scenarios are discussed in NFV. (example:OPNFV doctor's Fault management scenario1)
In this case, healing should be triggered by VDU status change, but it cannot be achieved with current Tacker.
Proposed change
Our plan is to add a new policy
tosca.policies.tacker.EventAlarming and enable vdu_autoheal
by event alarming trigger. New policy define monitoring resource state
to evaluate the resource's event and call action.
The overall workflow is as follow:
+----------------------------+ +---------------------------------------+
| Aodh | | Tosca_alarm_template.yaml |
| | | (tosca.policies.tacker.EventAlarming) |
| +------------------+ | (Create +--------------+------------------------+
| | | | EvantAlarm) |
| | Alarm API |<---|------------+ |
| | | | | +---------------------v-------------------------+
| +------------------+ | | | Tacker |
| | | | |
| | | | +---------------------------------------+ |
| +------------------+ | | | | VNFM | |
| | | | | | | | |
| | Alarm | | | | | +---------------+ | |
| | Evaluator | | +--|---|------------| | | |
| | / Notifier | | | | | Alarm Monitor | | |
| | |----|---------------|---|----------->| | | |
| +------^-^----^----+ | | | +---------------+ | |
| | | | | | | | |
| | | | | | | | |
| | | | | | +---------------------------------------+ |
+----------------------------+ +-----------------------------------------------+
| | |
| | |
+------------------------------------------------+
| Notification bus |
+------------------------------------------------+
| | |
| | | (Event Norification)
| | |
+------------------------------------------------+
| OpenStack Services |
| (Nova, Neutron, Cinder, ...) |
| |
+-----------^-^----^-----------------------------+
| | |
| | |
| | |
| | +-----------------------------------+
| +-------------------+ |
| | |
| | |
+-----------v------------------------------------------------------------------------------+
| | NFVI | |
| +--------------------------------------------------------------------------------------+ |
| | | VNF | | |
| | +-----------------------------v---------+ +-------v-------------------------------+ | |
| | | VDU | | VDU | | |
| | | | | | | |
| | +---------------------------------------+ +---------------------------------------+ | |
| +--------------------------------------------------------------------------------------+ |
+------------------------------------------------------------------------------------------+
- Add policy
tosca.policies.tacker.EventAlarming
Add a new alarm monitoring policy
tosca.policies.tacker.EventAlarming into VNFD definition.
This policy is translated to event alarm definition which monitor
resource's event and trigger actions in HOT.
The TOSCA scheme could be defined as the following:
tosca.policies.tacker.EventAlarming
tosca.policies.tacker.EventAlarming:
derived_from: tosca.policies.Monitoring
triggers:
aodh_event:
event_type:
type: map
entry_schema:
type: string
required: true
condition:
type: map
entry_schema:
type: string
required: false
action:
type: list
entry_schema:
type: string
required: true
metadata:
type: string
required: trueand sample TOSCA template policy
description: Demo example
metadata:
template_name: sample-tosca-vnfd
topology_template:
node_templates:
VDU1:
type: tosca.nodes.nfv.VDU.Tacker
capabilities:
nfv_compute:
properties:
disk_size: 1 GB
mem_size: 256 MB
num_cpus: 1
properties:
image: cirros-0.4.0-x86_64-disk
mgmt_driver: noop
availability_zone: nova
metadata: {metering.server_group: VDU1}
CP1:
type: tosca.nodes.nfv.CP.Tacker
properties:
management: true
anti_spoofing_protection: false
requirements:
- virtualLink:
node: VL1
- virtualBinding:
node: VDU1
VL1:
type: tosca.nodes.nfv.VL
properties:
network_name: net_mgmt
vendor: Tacker
policies:
- vdu1_event_monitoring_policy:
type: tosca.policies.tacker.EventAlarming
triggers:
vdu1_event_healing:
description: VM delete
event_type:
type: compute.instance.delete.end
implementation: ceilometer
condition:
resource_type: instance
metadata: VDU1
action: [vdu_autoheal]HOT template for Event Alarm monitoring resource:
description: 'Demo example'
heat_template_version: '2013-05-23'
outputs:
mgmt_ip-VDU1:
value:
get_attr:
- CP1
- fixed_ips
- 0
- ip_address
parameters: {}
resources:
CP1:
properties:
network: net_mgmt
port_security_enabled: false
type: OS::Neutron::Port
VDU1:
properties:
availability_zone: nova
config_drive: false
flavor:
get_resource: VDU1_flavor
image: cirros-0.4.0-x86_64-disk
metadata:
metering.server_group: VDU1-08aa3827-0
networks:
- port:
get_resource: CP1
user_data_format: SOFTWARE_CONFIG
type: OS::Nova::Server
vdu1_event_healing:
properties:
alarm_actions:
- http://{tacker domain url}:9890/v1.0/vnfs/{vnf id}/vdu1_event_healing/vdu_autoheal/hc4vg2c0
description: VM delete
event_type: compute.instance.delete.end
query:
- field: traits.instance_id
op: eq
value:
get_resource: VDU1
repeat_actions: true
type: OS::Aodh::EventAlarmAlso, only when event_type is compute.instance.update, state of condition can be defined on TOSCA Template.
This is part of sample TOSCA Template when event_type is compute.instance.update and state is defined.
policies:
- vdu1_event_monitoring_policy:
type: tosca.policies.tacker.EventAlarming
triggers:
vdu1_event_error_healing:
description: VM state is updated to error
event_type:
type: compute.instance.update
implementation: ceilometer
condition:
resource_type: instance
state: error
metadata: VDU1
action: [vdu_autoheal]This TOSCA Template is changed to following HOT:
vdu1_event_error_healing:
properties:
alarm_actions:
- http://{tacker domain url}:9890/v1.0/vnfs/{vnf id}/vdu1_event_error_healing/vdu_autoheal/hc4vg2c0
description: VM state is updated to error
event_type: compute.instance.update
query:
- field: traits.instance_id
op: eq
value:
get_resource: VDU1
- field: traits.state
op: eq
value: error
repeat_actions: true
type: OS::Aodh::EventAlarm- Enable vdu_autoheal by alarm monitoring and event monitoring
Enable vdu_autoheal by alarm monitoring and event alarm monitoring. This plan adds vdu_autoheal in default alarm action. The action vdu_autoheal needs healing target's name (e.g. VDU1). Healing target is got by trigger's metadata2 of alarm monitoring policy.
Alternatives
None
Data model impact
None
REST API impact
None
Security impact
None
Notifications impact
None
Other end user impact
None
Performance Impact
None
Other deployer impact
None
Developer impact
None
Implementation
Assignee(s)
Work Items
- Tosca element model monitoring event to Heat ceilometer monitoring element translation
- Create a sample TOSCA template
- Add tosca.policies.tacker.EventAlarming policy to monitor specific event.
- Add vdu_autohealing in default alarm monitor action
- get vdu name from tosca template to use vdu_autoheal
- Unit Tests
- Functional Tests
- Update documentation
Dependencies
None
Testing
Unit and functional tests are sufficient to test
tosca.policies.tacker.EventAlarming policy.
Unit and functional tests are sufficient to test
vdu_autohealing action by alarm monitoring policy.
Documentation Impact
- Add VNFD tosca-template under samples to show how to configure
tosca.policies.tacker.EventAlarmingpolicy. - Add a new policy
tosca.policies.tacker.EventAlarmingin Tacker Alarm Monitoring Framework3.
References
https://docs.opnfv.org/en/stable-fraser/submodules/doctor/docs/development/requirements/05-implementation.html#figure8↩︎
https://specs.openstack.org/openstack/tacker-specs/specs/stein/vdu-auto-healing.html#proposed-change↩︎
https://docs.openstack.org/tacker/latest/user/alarm_monitoring_usage_guide.html↩︎