Jump to: navigation, search

Difference between revisions of "Nova/VersionedNotificationTransformation"

(Follow up tasks)
 
(51 intermediate revisions by 9 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/
+
* 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>Please do not start working on a new task until the currently opened tasks are close to merge to avoid overloading the cores
+
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 || open || siva_krishnan || https://review.openstack.org/#/c/329214  ||
 
|-re
 
| instance.scheduled || open||  ||  ||
 
|-
 
| instance.create_ip || subteam review || 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 || core review || 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 || needs work || xenogear || https://review.openstack.org/#/c/330761/ ||
 
|-
 
| instance.reboot || needs work || macsz || https://review.openstack.org/#/c/330224/ ||
 
|-
 
| instance.reboot.error || open ||  ||  ||
 
|-
 
| instance.shelve || core review || vancsics  || https://review.openstack.org/#/c/332696/ ||
 
|-
 
| instance.shelve_offload || open || ||  ||
 
|-
 
| instance.unshelve || open ||  ||  ||
 
|-
 
| instance.snapshot || open || syjulian || https://review.openstack.org/#/c/330128/ ||
 
|-
 
| instance.soft_delete || open ||  ||  ||
 
|-
 
| instance.suspend || open || pumaranikar || https://review.openstack.org/#/c/329089  ||
 
|-
 
| instance.resume || open || siva_krishnan  ||  ||
 
|-
 
| instance.restore || core review || 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 || core review || 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.
+
<big> [http://burndown.peermore.com/nova-notification/ The burndown chart is updated hourly from gerrit. ] </big>
{| class="wikitable"
+
You can see what to transform and what to review there.
|-
 
! 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:
 
  
{| class="wikitable"
+
There are three types of transformations:
|-
+
* category: instance-payload: The easy ones that uses the same payload as instance.delete
! event type !! status !! taken by !! review !! comments
+
* category: extended-instance-payload: The complex instance.<action> notifications that needs payload extension.
|-
+
* category: specific-payload: The rest that needs specific payload
| 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  ||  ||
 
|}
 
  
  
=== Follow up tasks ===
+
If something doesn't show up  on the burndown then please ping gibi on IRC.
Mostly for after N-2
 
* add a reno note about the transformed notifications
 
* rlrossit will remove the vm_state - InstanceState value duplication
 
* improve 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)
 
<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
 
* refactor the sample test to avoid booting a new instance for every sample test.
 
* refactor 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
 
* 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.
 
* try to refactor out the additional notify_about_instance_action() calls see comments in https://review.openstack.org/#/c/313654/37/nova/compute/manager.py
 

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.