Jump to: navigation, search

Difference between revisions of "Nova/VersionedNotificationTransformation"

(How to do it)
 
(34 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 +
= This work has been completed =
 +
 +
The information below is kept here for historical reasons
 +
 
== Goal ==
 
== Goal ==
 
Transform every legacy notification to the new versioned notification framework.
 
Transform every legacy notification to the new versioned notification framework.
Line 4: Line 8:
 
== How to do it ==
 
== How to do it ==
 
* Check the notification devref that describes the new framework:  http://docs.openstack.org/developer/nova/notifications.html
 
* Check the notification devref that describes the new framework:  http://docs.openstack.org/developer/nova/notifications.html
* Check the existing new versioned notification example: https://review.openstack.org/#/c/245678/
+
* Check the existing transformation patches  that are merged: http://burndown.peermore.com/nova-notification/
* Check the example transformation patch: https://review.openstack.org/#/c/313654/ or any other notification that is already transformed
+
* Select a transformation from the table on http://burndown.peermore.com/nova-notification/ You can take a patch with status TODO or you can check if a patch that is INPROGRESS needs help.  
* Select a task for the below table and add your IRC handle to table. (Please take only one at a time)
 
 
* Propose a transformation patch based on the examples.
 
* Propose a transformation patch based on the examples.
 
** Make sure that you create a new sample file under doc/notificaiton_samples/
 
** Make sure that you create a new sample file under doc/notificaiton_samples/
 
** Make sure that you add a notification sample test under nova/tests/functional/notification_sample_test/
 
** Make sure that you add a notification sample test under nova/tests/functional/notification_sample_test/
* If you got stuck you can ask questions from rlrossit and gibi on IRC or join the weekly notification subteam meeting https://wiki.openstack.org/wiki/Meetings/NovaNotification
+
* If you got stuck you can ask questions from gibi on IRC or join the weekly notification subteam meeting https://wiki.openstack.org/wiki/Meetings/NovaNotification
  
 
== Tasks ==
 
== Tasks ==
  
'''<big><big>Further transformation work needs to wait unit master is open for Ocata
+
Please use the https://review.openstack.org/#/q/topic:bp/versioned-notification-transformation-rocky topic for the transformation commits
</big></big>
 
'''
 
 
 
The easy ones that uses the same payload as instance.delete:
 
 
 
{| class="wikitable"
 
|-
 
! event type !! status !! taken by !! review !! comments
 
|-
 
| instance.delete || merged || gibi || https://review.openstack.org/#/c/313654  || This shall be the base of for the other instance.<action> transformation
 
|-
 
| instance.shutdown || move to Ocata || siva_krishnan || https://review.openstack.org/#/c/329214  ||
 
|-re
 
| instance.scheduled || open||  ||  ||
 
|-
 
| instance.create_ip || move to Ocata || antal || https://review.openstack.org/#/c/332876/ || renamed to add_fixed_ip to be more precise
 
|-
 
| instance.delete_ip || open || ||  || rename it to remove_fixed_ip
 
|-
 
| instance.evacuate || open ||  ||  ||
 
|-
 
| instance.migration || open ||  ||  ||
 
|-
 
| instance.pause || merged || sneti  || https://review.openstack.org/#/c/329141/ ||
 
|-
 
| instance.unpause || open || sneti ||  ||
 
|-
 
| instance.power_on || merged || zhs || https://review.openstack.org/#/c/329746/ ||
 
|-
 
| instance.power_off || move to Ocata || xenogear || https://review.openstack.org/#/c/330761/ ||
 
|-
 
| instance.reboot || mova to Ocata || macsz || https://review.openstack.org/#/c/330224/ ||
 
|-
 
| instance.reboot.error || open ||  ||  ||
 
|-
 
| instance.shelve || merged || vancsics  || https://review.openstack.org/#/c/332696/ ||
 
|-
 
| instance.shelve_offload || open || ||  ||
 
|-
 
| instance.unshelve || open ||  ||  ||
 
|-
 
| instance.snapshot || move to Ocata || syjulian || https://review.openstack.org/#/c/330128/ ||
 
|-
 
| instance.soft_delete || open ||  ||  ||
 
|-
 
| instance.suspend || merged || pumaranikar || https://review.openstack.org/#/c/329089  ||
 
|-
 
| instance.resume || open || siva_krishnan  ||  ||
 
|-
 
| instance.restore || merged || zhs || https://review.openstack.org/#/c/331972/ ||
 
|-
 
| instance.trigger_crash_dump || open ||  ||  ||
 
|-
 
| instance.unrescue || open ||  ||  ||
 
|-
 
| instance.create || open ||  ||  || Some of the instance.create.<phase> notifications has extra payload
 
|-
 
| instance.rebuild || open || pumaranikar ||  ||
 
|-
 
| instance.rebuild.scheduled || open ||  ||  || we might need to change the event_type
 
|-
 
| instance.resize || merged || aunnam || https://review.openstack.org/#/c/329255/ ||
 
|-
 
| instance.resize.error || open ||  || ||
 
|-
 
| instance.resize.prep || open ||  ||  || we might need to change the event_type
 
|-
 
| instance.finish_resize || open ||  ||  || we might want to change the even_type
 
|-
 
| instance.resize.confirm || open ||  ||  ||
 
|-
 
| instance.resize.revert || open ||  ||  ||
 
|-
 
| instance.live.migration.abort || open ||  ||  || we might need to change the even_type to make it consistent
 
|-
 
| instance.live_migration.pre || open ||  ||  || we might want to change the event_type
 
|-
 
| instance.live_migration.rollback.dest || open  ||  ||  || we might want to change the event_type
 
|-
 
| instance.live_migration._rollback || open ||  ||  || we might want to change the event_type
 
|-
 
| instance.live_migration._post || open ||  ||  || we might want to change the even_type
 
|-
 
| instance.live_migration.post.dest || open ||  ||  || we might want to change the event_type
 
|}
 
  
The complex instance.<action> notifications that needs payload extension.
 
{| class="wikitable"
 
|-
 
! event type !! status !! taken by !! review !! comments
 
|-
 
| instance.update || merged || gibi || https://review.openstack.org/#/c/325923/ || This shall be the example for creating instance.<action> notification with extended InstancePayload
 
|-
 
| instance.exists || open ||  ||  ||
 
|-
 
| instance.rescue || open ||  ||  ||
 
|-
 
| instance.volume.attach || open ||  ||  ||
 
|}
 
  
The rest:
+
<big> [http://burndown.peermore.com/nova-notification/ The burndown chart is updated hourly from gerrit. ] </big>
 +
You can see what to transform and what to review there.
  
{| class="wikitable"
 
|-
 
! event type !! status !! taken by !! review !! comments
 
|-
 
| compute.exception || merged || laszloh ||  https://review.openstack.org/#/c/310700 ||
 
|-
 
| aggregate.addhost || open ||  ||  ||
 
|-
 
| aggregate.create || open ||  ||  ||
 
|-
 
| aggregate.delete || open ||  ||  ||
 
|-
 
| aggregate.removehost || open ||  ||  ||
 
|-
 
| aggregate.updatemetadata || open ||  ||  ||
 
|-
 
| aggregate.updateprop || open ||  ||  ||
 
|-
 
| api.fault || open ||  ||  ||
 
|-
 
| libvirt.error || open ||  ||  ||
 
|-
 
| compute_task.build_instances || open ||  ||  ||
 
|-
 
| compute_task.migrate_server || open ||  ||  ||
 
|-
 
| compute_task.rebuild_server || open ||  ||  ||
 
|-
 
| HostAPI.power_action || open ||  ||  ||
 
|-
 
| HostAPI.set_enabled || open ||  ||  ||
 
|-
 
| HostAPI.set_maintenance || open ||  ||  ||
 
|-
 
| keypair.create || spec exists ||  h-eguchi ||  spec: https://review.openstack.org/#/c/300942 ||
 
|-
 
| keypair.delete || spec exists ||  h-eguchi ||  spec: https://review.openstack.org/#/c/300942 ||
 
|-
 
| keypair.import || spec exists ||  h-eguchi ||  spec: https://review.openstack.org/#/c/300942 ||
 
|-
 
| network.floating_ip.allocate || open ||  ||  ||
 
|-
 
| network.floating_ip.associate || open ||  ||  ||
 
|-
 
| network.floating_ip.deallocate || open ||  ||  ||
 
|-
 
| network.floating_ip.disassociate || open ||  ||  ||
 
|-
 
| scheduler.select_destinations || open ||  ||  ||
 
|-
 
| servergroup.addmember || open ||  ||  ||
 
|-
 
| servergroup.create || open ||  ||  ||
 
|-
 
| servergroup.delete || open ||  ||  ||
 
|-
 
| volume.usage || open ||  ||  ||
 
|-
 
| metrics.update || open || sudipto  ||  ||
 
|}
 
  
 +
There are three types of transformations:
 +
* category: instance-payload: The easy ones that uses the same payload as instance.delete
 +
* category: extended-instance-payload: The complex instance.<action> notifications that needs payload extension.
 +
* category: specific-payload: The rest that needs specific payload
  
=== Follow up tasks ===
 
Mostly for after N-2
 
* <strike>gibi adds a reno note about the transformed notifications
 
** Proposed in https://review.openstack.org/#/c/341352 </strike>
 
* rlrossit will remove the vm_state - InstanceState value duplication
 
** Proposed in https://review.openstack.org/#/c/335066/
 
* gibi improves doc generation, include a sample link in the doc that is valid also before the sample adding patch is merged. (look at the api-ref doc work for ideas)
 
** Proposed in https://review.openstack.org/#/c/344170/
 
* <strike> separate the notification object unit test from the nova object version test.</strike> Done
 
* syjulian will solve security issue in wrap_exception notification see the comments in https://review.openstack.org/#/c/310700/19/nova/compute/utils.py and https://review.openstack.org/#/c/310700/19/nova/exception_wrapper.py
 
** Proposed in https://review.openstack.org/#/c/336284/
 
* gibi refactors the sample test to avoid booting a new instance for every sample test.
 
** time the test first to see how much time a single instance boot needs in functional test env.
 
** Proposed in: https://review.openstack.org/342944
 
* gibi refactors the sample test to assert reservation_id instead of ignoring it  see comment in https://review.openstack.org/#/c/332696/5/nova/tests/functional/notification_sample_tests/test_instance.py@236
 
** Proposed  in https://review.openstack.org/#/c/341422/
 
* syjulian to refactor out the additional notify_about_instance_action() calls see comments in https://review.openstack.org/#/c/313654/37/nova/compute/manager.py
 
** Proposed in https://review.openstack.org/#/c/344990/
 
* <strike> replace set_override with self.flags in https://review.openstack.org/#/c/332696/5/nova/tests/functional/notification_sample_tests/test_instance.py </strike>
 
  
In Ocata:
+
If something doesn't show up  on the burndown then please ping gibi on IRC.
* after the json schema patch is merged in ovo and a new ovo lib version is released we can add a tool to nova generate the json schemas for the versioned notifications.
 

Latest revision as of 09:21, 10 December 2018

This work has been completed

The information below is kept here for historical reasons

Goal

Transform every legacy notification to the new versioned notification framework.

How to do it

Tasks

Please use the https://review.openstack.org/#/q/topic:bp/versioned-notification-transformation-rocky topic for the transformation commits


The burndown chart is updated hourly from gerrit. You can see what to transform and what to review there.


There are three types of transformations:

  • category: instance-payload: The easy ones that uses the same payload as instance.delete
  • category: extended-instance-payload: The complex instance.<action> notifications that needs payload extension.
  • category: specific-payload: The rest that needs specific payload


If something doesn't show up on the burndown then please ping gibi on IRC.