)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"8adb6d31bff770c796b5744f4bc8b893836e0081","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alex Szarka \u003cszarka@inf.u-szeged.hu\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-04-10 09:39:17 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Transform instance-exists notification"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I1a0afa0e8740c229db77c18b932e316196880de5"},{"line_number":10,"context_line":"Implements: bp versioned-notification-transformation-pike"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"bff0334d_c4a372b1","line":7,"range":{"start_line":7,"start_character":18,"end_line":7,"end_character":19},"updated":"2017-04-12 08:54:31.000000000","message":"According to the other notification transformation patches, it should be \"instance.exists\"","commit_id":"ce711df227dd9597838a6306873c5dc9af2a2e84"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"7f9e230289b902863153c0132d28cac30de32bbd","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Transform instance.exists notification"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch contains the istance.exists related"},{"line_number":10,"context_line":"notification transformation implements."},{"line_number":11,"context_line":"We should have to create a functional test for"},{"line_number":12,"context_line":"instance_usage_audit periodic task, but"},{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"3f044301_cff8d8c5","line":10,"range":{"start_line":10,"start_character":13,"end_line":10,"end_character":38},"updated":"2017-05-05 10:36:00.000000000","message":"\"implements\" is not needed.","commit_id":"cf3114d0c6e4c9cba53eed4505adb0255c09e6e2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"7f9e230289b902863153c0132d28cac30de32bbd","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch contains the istance.exists related"},{"line_number":10,"context_line":"notification transformation implements."},{"line_number":11,"context_line":"We should have to create a functional test for"},{"line_number":12,"context_line":"instance_usage_audit periodic task, but"},{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"},{"line_number":14,"context_line":"this is a transparent service and does not exists"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"3f044301_8f02d0b3","line":11,"range":{"start_line":11,"start_character":15,"end_line":11,"end_character":24},"updated":"2017-05-05 10:36:00.000000000","message":"created","commit_id":"cf3114d0c6e4c9cba53eed4505adb0255c09e6e2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"7f9e230289b902863153c0132d28cac30de32bbd","unresolved":false,"context_lines":[{"line_number":10,"context_line":"notification transformation implements."},{"line_number":11,"context_line":"We should have to create a functional test for"},{"line_number":12,"context_line":"instance_usage_audit periodic task, but"},{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"},{"line_number":14,"context_line":"this is a transparent service and does not exists"},{"line_number":15,"context_line":"api call for this.."},{"line_number":16,"context_line":"If you have any idea, that how can we test it"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"3f044301_4f2e0844","line":13,"range":{"start_line":13,"start_character":3,"end_line":13,"end_character":15},"updated":"2017-05-05 10:36:00.000000000","message":"didn\u0027t find","commit_id":"cf3114d0c6e4c9cba53eed4505adb0255c09e6e2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"7f9e230289b902863153c0132d28cac30de32bbd","unresolved":false,"context_lines":[{"line_number":11,"context_line":"We should have to create a functional test for"},{"line_number":12,"context_line":"instance_usage_audit periodic task, but"},{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"},{"line_number":14,"context_line":"this is a transparent service and does not exists"},{"line_number":15,"context_line":"api call for this.."},{"line_number":16,"context_line":"If you have any idea, that how can we test it"},{"line_number":17,"context_line":"help us or skip this part."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"3f044301_2f33bcad","line":15,"range":{"start_line":14,"start_character":34,"end_line":15,"end_character":19},"updated":"2017-05-05 10:36:00.000000000","message":"there is no API call for this","commit_id":"cf3114d0c6e4c9cba53eed4505adb0255c09e6e2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"7f9e230289b902863153c0132d28cac30de32bbd","unresolved":false,"context_lines":[{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"},{"line_number":14,"context_line":"this is a transparent service and does not exists"},{"line_number":15,"context_line":"api call for this.."},{"line_number":16,"context_line":"If you have any idea, that how can we test it"},{"line_number":17,"context_line":"help us or skip this part."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I1a0afa0e8740c229db77c18b932e316196880de5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"3f044301_8f1bf019","line":16,"updated":"2017-05-05 10:36:00.000000000","message":"You should skip a line here","commit_id":"cf3114d0c6e4c9cba53eed4505adb0255c09e6e2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"7f9e230289b902863153c0132d28cac30de32bbd","unresolved":false,"context_lines":[{"line_number":14,"context_line":"this is a transparent service and does not exists"},{"line_number":15,"context_line":"api call for this.."},{"line_number":16,"context_line":"If you have any idea, that how can we test it"},{"line_number":17,"context_line":"help us or skip this part."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I1a0afa0e8740c229db77c18b932e316196880de5"},{"line_number":20,"context_line":"Implements: bp versioned-notification-transformation-pike"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":27,"id":"3f044301_2fd85c51","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":26},"updated":"2017-05-05 10:36:00.000000000","message":"please help us.","commit_id":"cf3114d0c6e4c9cba53eed4505adb0255c09e6e2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Transform instance.exists notification"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch contains the istance.exists related"},{"line_number":10,"context_line":"notification transformation implements."},{"line_number":11,"context_line":"We should have to create a functional test for"},{"line_number":12,"context_line":"instance_usage_audit periodic task, but"},{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"ff0f0b1f_d587040f","line":10,"range":{"start_line":10,"start_character":28,"end_line":10,"end_character":38},"updated":"2017-05-21 21:01:24.000000000","message":"unnecessary word","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch contains the istance.exists related"},{"line_number":10,"context_line":"notification transformation implements."},{"line_number":11,"context_line":"We should have to create a functional test for"},{"line_number":12,"context_line":"instance_usage_audit periodic task, but"},{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"},{"line_number":14,"context_line":"this is a transparent service and does not exists"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"ff0f0b1f_b57ed016","line":11,"range":{"start_line":11,"start_character":10,"end_line":11,"end_character":17},"updated":"2017-05-21 21:01:24.000000000","message":"nit: remove","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":10,"context_line":"notification transformation implements."},{"line_number":11,"context_line":"We should have to create a functional test for"},{"line_number":12,"context_line":"instance_usage_audit periodic task, but"},{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"},{"line_number":14,"context_line":"this is a transparent service and does not exists"},{"line_number":15,"context_line":"api call for this.."},{"line_number":16,"context_line":"If you have any idea, that how can we test it"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"ff0f0b1f_95798c30","line":13,"range":{"start_line":13,"start_character":3,"end_line":13,"end_character":15},"updated":"2017-05-21 21:01:24.000000000","message":"nit: didn\u0027t find","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":11,"context_line":"We should have to create a functional test for"},{"line_number":12,"context_line":"instance_usage_audit periodic task, but"},{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"},{"line_number":14,"context_line":"this is a transparent service and does not exists"},{"line_number":15,"context_line":"api call for this.."},{"line_number":16,"context_line":"If you have any idea, that how can we test it"},{"line_number":17,"context_line":"help us or skip this part."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"ff0f0b1f_75783829","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":4},"updated":"2017-05-21 21:01:24.000000000","message":"nit: it","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"we did\u0027nt found solution for this problem, because"},{"line_number":14,"context_line":"this is a transparent service and does not exists"},{"line_number":15,"context_line":"api call for this.."},{"line_number":16,"context_line":"If you have any idea, that how can we test it"},{"line_number":17,"context_line":"help us or skip this part."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I1a0afa0e8740c229db77c18b932e316196880de5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"ff0f0b1f_5573f44d","line":16,"range":{"start_line":16,"start_character":20,"end_line":16,"end_character":26},"updated":"2017-05-21 21:01:24.000000000","message":"nit: remove","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"this is a transparent service and does not exists"},{"line_number":15,"context_line":"api call for this.."},{"line_number":16,"context_line":"If you have any idea, that how can we test it"},{"line_number":17,"context_line":"help us or skip this part."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I1a0afa0e8740c229db77c18b932e316196880de5"},{"line_number":20,"context_line":"Implements: bp versioned-notification-transformation-pike"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"ff0f0b1f_15933c51","line":17,"range":{"start_line":17,"start_character":8,"end_line":17,"end_character":26},"updated":"2017-05-21 21:01:24.000000000","message":"?","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f971d3ae83a43e818ffcb6d81b2a62b742f6cf86","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Transform instance.exists notification"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch contains the istance.exists related notification"},{"line_number":10,"context_line":"transformation. The functional test for instance_usage_audit"},{"line_number":11,"context_line":"periodic task case is added in a subsequent patch."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":73,"id":"bf8cb3f7_720f6b2e","line":9,"range":{"start_line":9,"start_character":24,"end_line":9,"end_character":31},"updated":"2017-12-21 12:05:38.000000000","message":"instance","commit_id":"264d82bb5ab4fa22e90d168e5ca5fa55d6c70908"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d46b0bb2953a672c486a75d43cf51de3598bc6c3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Transform instance.exists notification"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch contains the istance.exists related notification"},{"line_number":10,"context_line":"transformation. The functional test for instance_usage_audit"},{"line_number":11,"context_line":"periodic task case is added in a subsequent patch."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":73,"id":"bf8cb3f7_b7227e51","line":9,"range":{"start_line":9,"start_character":24,"end_line":9,"end_character":31},"in_reply_to":"bf8cb3f7_720f6b2e","updated":"2017-12-28 09:03:22.000000000","message":"Done","commit_id":"264d82bb5ab4fa22e90d168e5ca5fa55d6c70908"}],"doc/notification_samples/common_payloads/AuditPeriodPayload.json":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e7fbcbdd7b1a72157bc47792c76eb3342212252d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"nova_object.data\": {"},{"line_number":3,"context_line":"        \"audit_period_beginning\": \"2012-10-01T00:00:00Z\","},{"line_number":4,"context_line":"        \"audit_period_ending\": \"2012-10-29T13:42:11Z\"},"},{"line_number":5,"context_line":"    \"nova_object.name\": \"AuditPeriodPayload\","},{"line_number":6,"context_line":"    \"nova_object.namespace\": \"nova\","},{"line_number":7,"context_line":"    \"nova_object.version\": \"1.0\""}],"source_content_type":"application/json","patch_set":75,"id":"7f96bb07_ca53ed38","line":4,"range":{"start_line":4,"start_character":53,"end_line":4,"end_character":55},"updated":"2018-01-23 06:30:34.000000000","message":"nit: Format","commit_id":"a5fb8781a6f49abd2a469c19082ea33076e7ea1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"424697f735e190fe8e1d4c2e649e2426ed215b1d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{"},{"line_number":2,"context_line":"    \"nova_object.data\": {"},{"line_number":3,"context_line":"        \"audit_period_beginning\": \"2012-10-01T00:00:00Z\","},{"line_number":4,"context_line":"        \"audit_period_ending\": \"2012-10-29T13:42:11Z\"},"},{"line_number":5,"context_line":"    \"nova_object.name\": \"AuditPeriodPayload\","},{"line_number":6,"context_line":"    \"nova_object.namespace\": \"nova\","},{"line_number":7,"context_line":"    \"nova_object.version\": \"1.0\""}],"source_content_type":"application/json","patch_set":75,"id":"5f93b717_e81868d4","line":4,"range":{"start_line":4,"start_character":53,"end_line":4,"end_character":55},"in_reply_to":"7f96bb07_ca53ed38","updated":"2018-01-25 10:06:12.000000000","message":"Done","commit_id":"a5fb8781a6f49abd2a469c19082ea33076e7ea1c"}],"doc/notification_samples/common_payloads/BandwidthPayload.json":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e7fbcbdd7b1a72157bc47792c76eb3342212252d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"nova_object.data\": {"},{"line_number":3,"context_line":"        \"network_name\": \"private-network\","},{"line_number":4,"context_line":"        \"out_bytes\": 0,"},{"line_number":5,"context_line":"        \"in_bytes\": 0},"},{"line_number":6,"context_line":"    \"nova_object.name\": \"BandwidthPayload\","},{"line_number":7,"context_line":"    \"nova_object.namespace\": \"nova\","},{"line_number":8,"context_line":"    \"nova_object.version\": \"1.0\""}],"source_content_type":"application/json","patch_set":75,"id":"7f96bb07_6a309908","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":23},"updated":"2018-01-23 06:30:34.000000000","message":"ditto","commit_id":"a5fb8781a6f49abd2a469c19082ea33076e7ea1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"424697f735e190fe8e1d4c2e649e2426ed215b1d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"    \"nova_object.data\": {"},{"line_number":3,"context_line":"        \"network_name\": \"private-network\","},{"line_number":4,"context_line":"        \"out_bytes\": 0,"},{"line_number":5,"context_line":"        \"in_bytes\": 0},"},{"line_number":6,"context_line":"    \"nova_object.name\": \"BandwidthPayload\","},{"line_number":7,"context_line":"    \"nova_object.namespace\": \"nova\","},{"line_number":8,"context_line":"    \"nova_object.version\": \"1.0\""}],"source_content_type":"application/json","patch_set":75,"id":"5f93b717_48271c14","line":5,"range":{"start_line":5,"start_character":21,"end_line":5,"end_character":23},"in_reply_to":"7f96bb07_6a309908","updated":"2018-01-25 10:06:12.000000000","message":"Done","commit_id":"a5fb8781a6f49abd2a469c19082ea33076e7ea1c"}],"doc/notification_samples/instance-exists.json":[{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"02b0ad1a175e71ea845b16726cbc318aeb7d55e1","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                    },\r"},{"line_number":36,"context_line":"                    \"root_gb\": 1\r"},{"line_number":37,"context_line":"                },\r"},{"line_number":38,"context_line":"                \"nova_object.version\": \"1.2\",\r"},{"line_number":39,"context_line":"                \"nova_object.namespace\": \"nova\",\r"},{"line_number":40,"context_line":"                \"nova_object.name\": \"FlavorPayload\"\r"},{"line_number":41,"context_line":"            },\r"}],"source_content_type":"application/json","patch_set":17,"id":"3a1ff146_8a624f15","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":45},"updated":"2017-03-14 14:45:10.000000000","message":"The version is 1.3.","commit_id":"94901a81ba57949889f4adc3f65960265309fcf5"},{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"18a9dbc448302e4bbead30da4d4e95e499f47801","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                    },\r"},{"line_number":36,"context_line":"                    \"root_gb\": 1\r"},{"line_number":37,"context_line":"                },\r"},{"line_number":38,"context_line":"                \"nova_object.version\": \"1.2\",\r"},{"line_number":39,"context_line":"                \"nova_object.namespace\": \"nova\",\r"},{"line_number":40,"context_line":"                \"nova_object.name\": \"FlavorPayload\"\r"},{"line_number":41,"context_line":"            },\r"}],"source_content_type":"application/json","patch_set":17,"id":"3a1ff146_0a257fc1","line":38,"range":{"start_line":38,"start_character":16,"end_line":38,"end_character":45},"in_reply_to":"3a1ff146_8a624f15","updated":"2017-03-14 14:47:17.000000000","message":"Thanks, you\u0027re right!","commit_id":"94901a81ba57949889f4adc3f65960265309fcf5"},{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"88c250796043902d98d455e9a77fb4915f127d69","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \"payload\":{"},{"line_number":4,"context_line":"        \"nova_object.data\":{"},{"line_number":5,"context_line":"            \"architecture\":null,"},{"line_number":6,"context_line":"            \"availability_zone\":null,"},{"line_number":7,"context_line":"            \"created_at\":\"2012-10-29T13:42:11Z\","},{"line_number":8,"context_line":"            \"deleted_at\":null,"},{"line_number":9,"context_line":"            \"display_description\":\"some-server\","}],"source_content_type":"application/json","patch_set":20,"id":"bff0334d_22608ea5","line":6,"range":{"start_line":6,"start_character":32,"end_line":6,"end_character":36},"updated":"2017-04-06 06:12:57.000000000","message":"null -\u003e \"nova\"","commit_id":"b885f4599bbc1627bae42a69b25883f8bbd2af75"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"02664fc2f1d05baeef384af5235d54b476c18247","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            \"user_id\":\"fake\","},{"line_number":89,"context_line":"            \"uuid\":\"0217fedf-3ba0-4c72-9e4c-c4801db89e69\""},{"line_number":90,"context_line":"        },"},{"line_number":91,"context_line":"        \"nova_object.name\":\"InstanceActionPayload\","},{"line_number":92,"context_line":"        \"nova_object.namespace\":\"nova\","},{"line_number":93,"context_line":"        \"nova_object.version\":\"1.5\""},{"line_number":94,"context_line":"    },"}],"source_content_type":"application/json","patch_set":67,"id":"1f485f77_71e768e6","line":91,"updated":"2017-11-13 15:58:25.000000000","message":"It is time to use the common sample fragments as https://review.openstack.org/#/c/452819/ has been merged","commit_id":"25bb7838086adbb6f2ebe72a34bf9d968b87718c"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e7fbcbdd7b1a72157bc47792c76eb3342212252d","unresolved":false,"context_lines":[{"line_number":6,"context_line":"            \"architecture\":null,"},{"line_number":7,"context_line":"            \"image_uuid\":\"a2459075-d96c-40d5-893e-577ff92e721c\","},{"line_number":8,"context_line":"            \"task_state\":\"rebuilding\""},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"        }"},{"line_number":11,"context_line":"    },"},{"line_number":12,"context_line":"    \"priority\":\"INFO\","}],"source_content_type":"application/json","patch_set":75,"id":"7f96bb07_ea2349bd","line":9,"updated":"2018-01-23 06:30:34.000000000","message":"Remove this blank line.","commit_id":"a5fb8781a6f49abd2a469c19082ea33076e7ea1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"424697f735e190fe8e1d4c2e649e2426ed215b1d","unresolved":false,"context_lines":[{"line_number":6,"context_line":"            \"architecture\":null,"},{"line_number":7,"context_line":"            \"image_uuid\":\"a2459075-d96c-40d5-893e-577ff92e721c\","},{"line_number":8,"context_line":"            \"task_state\":\"rebuilding\""},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"        }"},{"line_number":11,"context_line":"    },"},{"line_number":12,"context_line":"    \"priority\":\"INFO\","}],"source_content_type":"application/json","patch_set":75,"id":"5f93b717_082114fc","line":9,"in_reply_to":"7f96bb07_ea2349bd","updated":"2018-01-25 10:06:12.000000000","message":"Done","commit_id":"a5fb8781a6f49abd2a469c19082ea33076e7ea1c"}],"nova/compute/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d78653ed441377c6d72dc6d6f273a27c5aefbcd0","unresolved":false,"context_lines":[{"line_number":6852,"context_line":"        task_log.end_task()"},{"line_number":6853,"context_line":""},{"line_number":6854,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.bandwidth_poll_interval)"},{"line_number":6855,"context_line":"    def _poll_bandwidth_usage(self, context):"},{"line_number":6856,"context_line":""},{"line_number":6857,"context_line":"        if not self._bw_usage_supported:"},{"line_number":6858,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":78,"id":"df7087c5_ff83e554","line":6855,"range":{"start_line":6855,"start_character":8,"end_line":6855,"end_character":29},"updated":"2018-03-22 02:06:17.000000000","message":"Is this only a nova-network thing? I think xenapi is the only virt driver that implements it, but if it\u0027s also only for nova-network, then we should probably not worry about including it in versioned notification payloads.","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4f4cb01bcc5921a6b40c8da4d348e170d09ed23c","unresolved":false,"context_lines":[{"line_number":6852,"context_line":"        task_log.end_task()"},{"line_number":6853,"context_line":""},{"line_number":6854,"context_line":"    @periodic_task.periodic_task(spacing\u003dCONF.bandwidth_poll_interval)"},{"line_number":6855,"context_line":"    def _poll_bandwidth_usage(self, context):"},{"line_number":6856,"context_line":""},{"line_number":6857,"context_line":"        if not self._bw_usage_supported:"},{"line_number":6858,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f6a8fd7_6ce9d57e","line":6855,"range":{"start_line":6855,"start_character":8,"end_line":6855,"end_character":29},"in_reply_to":"df7087c5_ff83e554","updated":"2018-04-16 12:48:44.000000000","message":"Based on the xenapi code it does not seems to be a nova-network only feature but I sent a mail to the ML to clarify it.\nhttp://lists.openstack.org/pipermail/openstack-dev/2018-April/129397.html","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"}],"nova/compute/utils.py":[{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"88c250796043902d98d455e9a77fb4915f127d69","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    notify_about_instance_usage(notifier, context, instance_ref, \u0027exists\u0027,"},{"line_number":291,"context_line":"            system_metadata\u003dsystem_metadata, extra_usage_info\u003dextra_info)"},{"line_number":292,"context_line":"    ips \u003d _get_instance_ips(instance_ref)"},{"line_number":293,"context_line":"    flavor \u003d flavor_notification.FlavorPayload(instance_ref.flavor)"},{"line_number":294,"context_line":"    payload \u003d instance_notification.InstanceActionPayload("},{"line_number":295,"context_line":"        instance\u003dinstance_ref,"},{"line_number":296,"context_line":"        fault\u003dNone,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bff0334d_1f62833f","line":293,"range":{"start_line":292,"start_character":0,"end_line":293,"end_character":67},"updated":"2017-04-06 06:12:57.000000000","message":"These two methods have been deleted.","commit_id":"b885f4599bbc1627bae42a69b25883f8bbd2af75"},{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"88c250796043902d98d455e9a77fb4915f127d69","unresolved":false,"context_lines":[{"line_number":294,"context_line":"    payload \u003d instance_notification.InstanceActionPayload("},{"line_number":295,"context_line":"        instance\u003dinstance_ref,"},{"line_number":296,"context_line":"        fault\u003dNone,"},{"line_number":297,"context_line":"        ip_addresses\u003dips,"},{"line_number":298,"context_line":"        flavor\u003dflavor)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"    notification \u003d instance_notification.InstanceActionNotification("},{"line_number":301,"context_line":"        context\u003dcontext,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bff0334d_9f557353","line":298,"range":{"start_line":297,"start_character":0,"end_line":298,"end_character":21},"updated":"2017-04-06 06:12:57.000000000","message":"The are not necessary parameters (you can delete them)","commit_id":"b885f4599bbc1627bae42a69b25883f8bbd2af75"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"8adb6d31bff770c796b5744f4bc8b893836e0081","unresolved":false,"context_lines":[{"line_number":251,"context_line":"def notify_usage_exists(notifier, context, instance_ref, current_period\u003dFalse,"},{"line_number":252,"context_line":"                        ignore_missing_network_data\u003dTrue,"},{"line_number":253,"context_line":"                        system_metadata\u003dNone, extra_usage_info\u003dNone):"},{"line_number":254,"context_line":"    \"\"\"Generates \u0027exists\u0027 unversioned legacy notification for an instance for"},{"line_number":255,"context_line":"    usage auditing purposes."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    :param notifier: a messaging.Notifier"},{"line_number":258,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"bff0334d_b2ac45ed","line":255,"range":{"start_line":254,"start_character":4,"end_line":255,"end_character":28},"updated":"2017-04-12 08:54:31.000000000","message":"\"unversioned legacy notification\"","commit_id":"ce711df227dd9597838a6306873c5dc9af2a2e84"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"8adb6d31bff770c796b5744f4bc8b893836e0081","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    notify_about_instance_usage(notifier, context, instance_ref, \u0027exists\u0027,"},{"line_number":291,"context_line":"            system_metadata\u003dsystem_metadata, extra_usage_info\u003dextra_info)"},{"line_number":292,"context_line":"    payload \u003d instance_notification.InstanceActionPayload("},{"line_number":293,"context_line":"        instance\u003dinstance_ref,"},{"line_number":294,"context_line":"        fault\u003dNone)"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    notification \u003d instance_notification.InstanceActionNotification("},{"line_number":297,"context_line":"        context\u003dcontext,"},{"line_number":298,"context_line":"        priority\u003dfields.NotificationPriority.INFO,"},{"line_number":299,"context_line":"        publisher\u003dnotification_base.NotificationPublisher("},{"line_number":300,"context_line":"            context\u003dcontext, host\u003d\u0027fake-compute\u0027, binary\u003d\u0027nova-compute\u0027),"},{"line_number":301,"context_line":"        event_type\u003dnotification_base.EventType("},{"line_number":302,"context_line":"            object\u003d\u0027instance\u0027,"},{"line_number":303,"context_line":"            action\u003dfields.NotificationAction.EXISTS),"},{"line_number":304,"context_line":"        payload\u003dpayload)"},{"line_number":305,"context_line":"    notification.emit(context)"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"def notify_about_instance_usage(notifier, context, instance, event_suffix,"}],"source_content_type":"text/x-python","patch_set":21,"id":"bff0334d_6a422f11","line":305,"range":{"start_line":292,"start_character":0,"end_line":305,"end_character":30},"updated":"2017-04-12 08:54:31.000000000","message":"I don\u0027t know if it\u0027s a good idea to send versioned notifications from a method which sends unversioned legacy notifications. Maybe it should be to move this code snippet into a new method which sends the versioned notification. What do you think about it?","commit_id":"ce711df227dd9597838a6306873c5dc9af2a2e84"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        return default"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"def notify_usage_exists(notifier, context, instance_ref, host,"},{"line_number":252,"context_line":"                        current_period\u003dFalse, ignore_missing_network_data\u003dTrue,"},{"line_number":253,"context_line":"                        system_metadata\u003dNone, extra_usage_info\u003dNone):"},{"line_number":254,"context_line":"    \"\"\"Generates \u0027exists\u0027 unversioned legacy notification for an instance for"}],"source_content_type":"text/x-python","patch_set":40,"id":"ff0f0b1f_b5a3709e","line":251,"range":{"start_line":251,"start_character":57,"end_line":251,"end_character":61},"updated":"2017-05-21 21:01:24.000000000","message":"In docstring, we could add that why this parameter is added as a required parameter.","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3b394e5d186f053e82e6caee575668d239958457","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    for an instance for usage auditing purposes."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    :param notifier: a messaging.Notifier"},{"line_number":258,"context_line":"    :param instance: the instance which the action performed on"},{"line_number":259,"context_line":"    :param host: the host emitting the notification"},{"line_number":260,"context_line":"    :param current_period: if True, this will generate a usage for the"},{"line_number":261,"context_line":"        current usage period; if False, this will generate a usage for the"}],"source_content_type":"text/x-python","patch_set":49,"id":"7f231b9d_63e801b2","line":258,"range":{"start_line":258,"start_character":11,"end_line":258,"end_character":19},"updated":"2017-06-19 09:23:16.000000000","message":"nit: instance_ref","commit_id":"74e34131ac027b3636955423e3a4dfc3e8d4f7dd"},{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"bbe162a20b97564d1cc89e8e4773e80a269e493c","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    for an instance for usage auditing purposes."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"    :param notifier: a messaging.Notifier"},{"line_number":258,"context_line":"    :param instance: the instance which the action performed on"},{"line_number":259,"context_line":"    :param host: the host emitting the notification"},{"line_number":260,"context_line":"    :param current_period: if True, this will generate a usage for the"},{"line_number":261,"context_line":"        current usage period; if False, this will generate a usage for the"}],"source_content_type":"text/x-python","patch_set":49,"id":"7f231b9d_4084d8d2","line":258,"range":{"start_line":258,"start_character":11,"end_line":258,"end_character":19},"in_reply_to":"7f231b9d_63e801b2","updated":"2017-06-19 10:38:11.000000000","message":"Done","commit_id":"74e34131ac027b3636955423e3a4dfc3e8d4f7dd"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d78653ed441377c6d72dc6d6f273a27c5aefbcd0","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    :param notifier: a messaging.Notifier"},{"line_number":269,"context_line":"    :param instance_ref: the instance which the action performed on"},{"line_number":270,"context_line":"    :param host: the host emitting the notification"},{"line_number":271,"context_line":"    :param current_period: if True, this will generate a usage for the"},{"line_number":272,"context_line":"        current usage period; if False, this will generate a usage for the"},{"line_number":273,"context_line":"        previous audit period."}],"source_content_type":"text/x-python","patch_set":78,"id":"df7087c5_bf7d6d6f","line":270,"range":{"start_line":270,"start_character":4,"end_line":270,"end_character":51},"updated":"2018-03-22 02:06:17.000000000","message":"Hmm, we could potentially just get this from instance_ref.host, it should be the same as self.host where it\u0027s used, but I haven\u0027t audited that.","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4f4cb01bcc5921a6b40c8da4d348e170d09ed23c","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    :param notifier: a messaging.Notifier"},{"line_number":269,"context_line":"    :param instance_ref: the instance which the action performed on"},{"line_number":270,"context_line":"    :param host: the host emitting the notification"},{"line_number":271,"context_line":"    :param current_period: if True, this will generate a usage for the"},{"line_number":272,"context_line":"        current usage period; if False, this will generate a usage for the"},{"line_number":273,"context_line":"        previous audit period."}],"source_content_type":"text/x-python","patch_set":78,"id":"9f6a8fd7_cced8126","line":270,"range":{"start_line":270,"start_character":4,"end_line":270,"end_character":51},"in_reply_to":"df7087c5_bf7d6d6f","updated":"2018-04-16 12:48:44.000000000","message":"I haven\u0027t had the courage to do that shortcut. It feels that it creates a wrong coupling between the emitter of the notification and the instance used for the payload. It might work today but It can unexpectedly fail in the future.","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d78653ed441377c6d72dc6d6f273a27c5aefbcd0","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    :param ignore_missing_network_data: if True, log any exceptions generated"},{"line_number":275,"context_line":"        while getting network info; if False, raise the exception."},{"line_number":276,"context_line":"    :param system_metadata: system_metadata DB entries for the instance,"},{"line_number":277,"context_line":"        if not None.  *NOTE*: Currently unused here in trunk, but needed for"},{"line_number":278,"context_line":"        potential custom modifications."},{"line_number":279,"context_line":"    :param extra_usage_info: Dictionary containing extra values to add or"},{"line_number":280,"context_line":"        override in the notification if not None."},{"line_number":281,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":78,"id":"df7087c5_7f97d591","line":278,"range":{"start_line":277,"start_character":22,"end_line":278,"end_character":39},"updated":"2018-03-22 02:06:17.000000000","message":"Ha. We should burn this all out at some point, like the system_metadata passed to info_from_instance. If \u0027custom modifications\u0027 need it they can use instance.system_metadata.","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4f4cb01bcc5921a6b40c8da4d348e170d09ed23c","unresolved":false,"context_lines":[{"line_number":274,"context_line":"    :param ignore_missing_network_data: if True, log any exceptions generated"},{"line_number":275,"context_line":"        while getting network info; if False, raise the exception."},{"line_number":276,"context_line":"    :param system_metadata: system_metadata DB entries for the instance,"},{"line_number":277,"context_line":"        if not None.  *NOTE*: Currently unused here in trunk, but needed for"},{"line_number":278,"context_line":"        potential custom modifications."},{"line_number":279,"context_line":"    :param extra_usage_info: Dictionary containing extra values to add or"},{"line_number":280,"context_line":"        override in the notification if not None."},{"line_number":281,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":78,"id":"9f6a8fd7_ec53a5e1","line":278,"range":{"start_line":277,"start_character":22,"end_line":278,"end_character":39},"in_reply_to":"df7087c5_7f97d591","updated":"2018-04-16 12:48:44.000000000","message":"I agree. I\u0027ve opened a bug for it so we will not forget https://bugs.launchpad.net/nova/+bug/1764390","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d78653ed441377c6d72dc6d6f273a27c5aefbcd0","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    audit_start, audit_end \u003d notifications.audit_period_bounds(current_period)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    bw \u003d notifications.bandwidth_usage(context, instance_ref, audit_start,"},{"line_number":286,"context_line":"            ignore_missing_network_data)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    if system_metadata is None:"}],"source_content_type":"text/x-python","patch_set":78,"id":"df7087c5_9fd74950","line":285,"updated":"2018-03-22 02:06:17.000000000","message":"Yikes, this is a DB query every time we send a usage notification:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/notifications/base.py#n342\n\nAnd there is only one virt driver that implements this thing and there is an optional periodic to disable it. Probably a performance opportunity to ignore this if the periodic isn\u0027t set to run (which it\u0027s not by default).","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4f4cb01bcc5921a6b40c8da4d348e170d09ed23c","unresolved":false,"context_lines":[{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    audit_start, audit_end \u003d notifications.audit_period_bounds(current_period)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    bw \u003d notifications.bandwidth_usage(context, instance_ref, audit_start,"},{"line_number":286,"context_line":"            ignore_missing_network_data)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    if system_metadata is None:"}],"source_content_type":"text/x-python","patch_set":78,"id":"9f6a8fd7_8ceb09af","line":285,"in_reply_to":"df7087c5_9fd74950","updated":"2018-04-16 12:48:44.000000000","message":"The config option \u0027bandwidth_poll_interval\u0027 is defaulted to 600 seconds so it runs by default as far as I understand. In the other hand the compute manager can pass the flag _bw_usage_supported to notify_usage_exists() call to signal if db query is needed or not. I filed a bug not to forget this opportunity https://bugs.launchpad.net/nova/+bug/1764392","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"}],"nova/notifications/objects/instance.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d78653ed441377c6d72dc6d6f273a27c5aefbcd0","unresolved":false,"context_lines":[{"line_number":618,"context_line":"        self.bandwidth \u003d bandwidth"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"@base.notification_sample(\u0027instance-exists.json\u0027)"},{"line_number":622,"context_line":"@nova_base.NovaObjectRegistry.register_notification"},{"line_number":623,"context_line":"class InstanceExistsNotification(base.NotificationBase):"},{"line_number":624,"context_line":"    # Version 1.0: Initial version"}],"source_content_type":"text/x-python","patch_set":78,"id":"df7087c5_bfdc8d46","line":621,"updated":"2018-03-22 02:06:17.000000000","message":"Looks good:\n\nhttp://logs.openstack.org/60/403660/78/check/build-openstack-sphinx-docs/d9aa2d4/html/reference/notifications.html#versioned-notification-samples","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"}],"nova/tests/functional/notification_sample_tests/test_instance.py":[{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"88c250796043902d98d455e9a77fb4915f127d69","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        self._wait_for_state_change(self.api, server,"},{"line_number":171,"context_line":"                                    expected_status\u003d\u0027ACTIVE\u0027)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        self.assertEqual(3, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":174,"context_line":"        self._verify_notification("},{"line_number":175,"context_line":"            \u0027instance-exists\u0027,"},{"line_number":176,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":20,"id":"bff0334d_02a0eaf3","line":173,"range":{"start_line":173,"start_character":25,"end_line":173,"end_character":26},"updated":"2017-04-06 06:12:57.000000000","message":"3 -\u003e 5","commit_id":"b885f4599bbc1627bae42a69b25883f8bbd2af75"},{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"88c250796043902d98d455e9a77fb4915f127d69","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        self._wait_for_state_change(self.api, server,"},{"line_number":600,"context_line":"                                    expected_status\u003d\u0027ACTIVE\u0027)"},{"line_number":601,"context_line":""},{"line_number":602,"context_line":"        self.assertEqual(2, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":603,"context_line":"        self._verify_notification("},{"line_number":604,"context_line":"            \u0027instance-rebuild-start\u0027,"},{"line_number":605,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":20,"id":"bff0334d_ffcb5f1b","line":602,"range":{"start_line":602,"start_character":25,"end_line":602,"end_character":26},"updated":"2017-04-06 06:12:57.000000000","message":"2 -\u003e 3","commit_id":"b885f4599bbc1627bae42a69b25883f8bbd2af75"},{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"88c250796043902d98d455e9a77fb4915f127d69","unresolved":false,"context_lines":[{"line_number":605,"context_line":"            replacements\u003d{"},{"line_number":606,"context_line":"                \u0027reservation_id\u0027: server[\u0027reservation_id\u0027],"},{"line_number":607,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"},{"line_number":608,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[0])"},{"line_number":609,"context_line":"        self._verify_notification("},{"line_number":610,"context_line":"            \u0027instance-rebuild-end\u0027,"},{"line_number":611,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":20,"id":"bff0334d_dfd09bcc","line":608,"range":{"start_line":608,"start_character":57,"end_line":608,"end_character":58},"updated":"2017-04-06 06:12:57.000000000","message":"0 -\u003e 1","commit_id":"b885f4599bbc1627bae42a69b25883f8bbd2af75"},{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"88c250796043902d98d455e9a77fb4915f127d69","unresolved":false,"context_lines":[{"line_number":611,"context_line":"            replacements\u003d{"},{"line_number":612,"context_line":"                \u0027reservation_id\u0027: server[\u0027reservation_id\u0027],"},{"line_number":613,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"},{"line_number":614,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[1])"},{"line_number":615,"context_line":""},{"line_number":616,"context_line":"    @mock.patch(\u0027nova.compute.manager.ComputeManager.\u0027"},{"line_number":617,"context_line":"                \u0027_do_rebuild_instance_with_claim\u0027)"}],"source_content_type":"text/x-python","patch_set":20,"id":"bff0334d_9fda13e7","line":614,"range":{"start_line":614,"start_character":57,"end_line":614,"end_character":58},"updated":"2017-04-06 06:12:57.000000000","message":"1 -\u003e 2","commit_id":"b885f4599bbc1627bae42a69b25883f8bbd2af75"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"8adb6d31bff770c796b5744f4bc8b893836e0081","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                actual\u003dnotifications[i])"},{"line_number":155,"context_line":"        return replacements"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def test_instance_exists(self):"},{"line_number":158,"context_line":"        server \u003d self._boot_a_server("},{"line_number":159,"context_line":"            extra_params\u003d{\u0027networks\u0027: [{\u0027port\u0027: self.neutron.port_1[\u0027id\u0027]}]})"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"bff0334d_aa0a77ce","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":35},"updated":"2017-04-12 08:54:31.000000000","message":"Why this test cannot run in test_instance_action?","commit_id":"ce711df227dd9597838a6306873c5dc9af2a2e84"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d23a01434121aa408763b0f534674c935545521","unresolved":false,"context_lines":[{"line_number":154,"context_line":"                actual\u003dnotifications[i])"},{"line_number":155,"context_line":"        return replacements"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def test_instance_exists(self):"},{"line_number":158,"context_line":"        server \u003d self._boot_a_server("},{"line_number":159,"context_line":"            extra_params\u003d{\u0027networks\u0027: [{\u0027port\u0027: self.neutron.port_1[\u0027id\u0027]}]})"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"bff0334d_6b20ee9b","line":157,"range":{"start_line":157,"start_character":0,"end_line":157,"end_character":35},"in_reply_to":"bff0334d_aa0a77ce","updated":"2017-04-12 11:23:39.000000000","message":"in some case instance.exists emitted as part of an action. However there are actions that does not emit instance.exists. \nAlso instance.exists also emitted periodically if instance_usage_audit config is turned on.","commit_id":"ce711df227dd9597838a6306873c5dc9af2a2e84"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"8adb6d31bff770c796b5744f4bc8b893836e0081","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        server \u003d self._boot_a_server("},{"line_number":159,"context_line":"            extra_params\u003d{\u0027networks\u0027: [{\u0027port\u0027: self.neutron.port_1[\u0027id\u0027]}]})"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        post \u003d {"},{"line_number":162,"context_line":"            \u0027rebuild\u0027: {"},{"line_number":163,"context_line":"                \u0027imageRef\u0027: \u0027a2459075-d96c-40d5-893e-577ff92e721c\u0027,"},{"line_number":164,"context_line":"                \u0027metadata\u0027: {}"},{"line_number":165,"context_line":"            }"},{"line_number":166,"context_line":"        }"},{"line_number":167,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":168,"context_line":"        self._wait_for_state_change(self.api, server,"},{"line_number":169,"context_line":"                                    expected_status\u003d\u0027REBUILD\u0027)"},{"line_number":170,"context_line":"        self._wait_for_state_change(self.api, server,"},{"line_number":171,"context_line":"                                    expected_status\u003d\u0027ACTIVE\u0027)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        self.assertEqual(5, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":174,"context_line":"        self._verify_notification("},{"line_number":175,"context_line":"            \u0027instance-exists\u0027,"},{"line_number":176,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":21,"id":"bff0334d_27da2077","line":173,"range":{"start_line":161,"start_character":0,"end_line":173,"end_character":71},"updated":"2017-04-12 08:54:31.000000000","message":"In this way, we also test instance.rebuild notifications too, but we don\u0027t want to test them in this patch. So maybe we should modify this test not to directly test the number of notifications, as we only want to know whether instance.exists notification arrived.","commit_id":"ce711df227dd9597838a6306873c5dc9af2a2e84"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"8adb6d31bff770c796b5744f4bc8b893836e0081","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                                    expected_status\u003d\u0027ACTIVE\u0027)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        self.assertEqual(5, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":174,"context_line":"        self._verify_notification("},{"line_number":175,"context_line":"            \u0027instance-exists\u0027,"},{"line_number":176,"context_line":"            replacements\u003d{"},{"line_number":177,"context_line":"                \u0027reservation_id\u0027: server[\u0027reservation_id\u0027],"},{"line_number":178,"context_line":"                \u0027uuid\u0027: server[\u0027id\u0027]},"},{"line_number":179,"context_line":"            actual\u003dfake_notifier.VERSIONED_NOTIFICATIONS[2])"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"    def test_create_delete_server_with_instance_update(self):"},{"line_number":182,"context_line":"        # This makes server network creation synchronous which is necessary"}],"source_content_type":"text/x-python","patch_set":21,"id":"bff0334d_27c3408b","line":179,"range":{"start_line":174,"start_character":0,"end_line":179,"end_character":60},"updated":"2017-04-12 08:54:31.000000000","message":"Also, a comment would be good to see the order and the event type of the notifications that should have arrived (like L744).","commit_id":"ce711df227dd9597838a6306873c5dc9af2a2e84"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2d23a01434121aa408763b0f534674c935545521","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        self._wait_for_state_change(self.api, server,"},{"line_number":380,"context_line":"                                    expected_status\u003d\u0027SHELVED_OFFLOADED\u0027)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        self.assertEqual(5, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":383,"context_line":"        self._verify_notification("},{"line_number":384,"context_line":"            \u0027instance-shelve-start\u0027,"},{"line_number":385,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":21,"id":"bff0334d_8bd7b24b","line":382,"updated":"2017-04-12 11:23:39.000000000","message":"I think it would be good to add an assert for the instance.exists for every instance action that emits it as well.","commit_id":"ce711df227dd9597838a6306873c5dc9af2a2e84"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"7f9e230289b902863153c0132d28cac30de32bbd","unresolved":false,"context_lines":[{"line_number":176,"context_line":"                                    expected_status\u003d\u0027REBUILD\u0027)"},{"line_number":177,"context_line":"        self._wait_for_state_change(self.api, server,"},{"line_number":178,"context_line":"                                    expected_status\u003d\u0027ACTIVE\u0027)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        self.assertEqual(5, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":181,"context_line":"        self._verify_notification("},{"line_number":182,"context_line":"            \u0027instance-exists\u0027,"},{"line_number":183,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":27,"id":"3f044301_0fb6c0fb","line":180,"range":{"start_line":179,"start_character":0,"end_line":180,"end_character":71},"updated":"2017-05-05 10:36:00.000000000","message":"A comment above would be helpful, which shows the order and the event type of the notification.","commit_id":"cf3114d0c6e4c9cba53eed4505adb0255c09e6e2"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_instance_exists_usage_audit(self):"},{"line_number":159,"context_line":"        # TODO(xavvior): Should create a functional test for the"},{"line_number":160,"context_line":"        # \"instance_usage_audit\" periodic task. We tried more possibility,"},{"line_number":161,"context_line":"        # but we did\u0027nt found useable solution for this problem."},{"line_number":162,"context_line":"        # If you have idea, please help us."},{"line_number":163,"context_line":"        pass"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"ff0f0b1f_959e2c52","line":161,"range":{"start_line":160,"start_character":48,"end_line":161,"end_character":64},"updated":"2017-05-21 21:01:24.000000000","message":"We didn\u0027t find usable solution for this problem, however we tried to test it in several ways.","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        self._wait_for_state_change(self.api, server,"},{"line_number":179,"context_line":"                                    expected_status\u003d\u0027ACTIVE\u0027)"},{"line_number":180,"context_line":"        expected_notifications \u003d ["},{"line_number":181,"context_line":"            [\u0027instance-create-start\u0027],"},{"line_number":182,"context_line":"            [\u0027instance-create-end\u0027],"},{"line_number":183,"context_line":"            [\u0027instance-exists\u0027],"},{"line_number":184,"context_line":"            [\u0027instance-rebuild-start\u0027],"},{"line_number":185,"context_line":"            [\u0027instance-rebuild-end\u0027]"}],"source_content_type":"text/x-python","patch_set":40,"id":"ff0f0b1f_15bc5cb9","line":182,"range":{"start_line":181,"start_character":1,"end_line":182,"end_character":36},"updated":"2017-05-21 21:01:24.000000000","message":"I think we should not test them here, as we just want to test whether instance.exists notification is there.","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"94303c76357817da078832c76d11f448e25a205d","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            [\u0027instance-create-start\u0027],"},{"line_number":182,"context_line":"            [\u0027instance-create-end\u0027],"},{"line_number":183,"context_line":"            [\u0027instance-exists\u0027],"},{"line_number":184,"context_line":"            [\u0027instance-rebuild-start\u0027],"},{"line_number":185,"context_line":"            [\u0027instance-rebuild-end\u0027]"},{"line_number":186,"context_line":"        ]"},{"line_number":187,"context_line":"        self._verify_notifications("},{"line_number":188,"context_line":"            expected_notifications\u003dexpected_notifications,"}],"source_content_type":"text/x-python","patch_set":40,"id":"ff0f0b1f_f5b208e6","line":185,"range":{"start_line":184,"start_character":1,"end_line":185,"end_character":36},"updated":"2017-05-21 21:01:24.000000000","message":"ditto","commit_id":"ccc48e7377048d21d30486d676751ee6409cc830"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"b837a7e8e9bbdc8f6cdf695f706f2856102d1349","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        \"\"\""},{"line_number":186,"context_line":"        expected_notifications \u003d ["},{"line_number":187,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":188,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":189,"context_line":"            {\u0027event_type\u0027: \u0027instance-exists\u0027},"},{"line_number":190,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":191,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027}"}],"source_content_type":"text/x-python","patch_set":48,"id":"7f231b9d_9a5b5486","line":188,"range":{"start_line":188,"start_character":0,"end_line":188,"end_character":37},"updated":"2017-06-12 03:57:41.000000000","message":"Add one more \"{\u0027event_type\u0027: \u0027IGNORE\u0027}\" because \"PUT tag\" operation has been added since https://review.openstack.org/#/c/407228/ .\nIt emits a \"instance.update\" notification.\n\nhttps://github.com/openstack/nova/blob/d147277b8f3a0129755b5d54b4416ea2f50a84ad/nova/tests/functional/notification_sample_tests/notification_sample_base.py#L191","commit_id":"374a4f23670e87013b83bb5f729e1408e24bbdbe"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3b394e5d186f053e82e6caee575668d239958457","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        instance-create-[start|end] and instance-rebuild-[start|end]"},{"line_number":184,"context_line":"        notifications."},{"line_number":185,"context_line":"        \"\"\""},{"line_number":186,"context_line":"        expected_notifications \u003d ["},{"line_number":187,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":188,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":189,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":190,"context_line":"            {\u0027event_type\u0027: \u0027instance-exists\u0027},"},{"line_number":191,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":192,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027}"},{"line_number":193,"context_line":"        ]"},{"line_number":194,"context_line":"        self._verify_notifications("},{"line_number":195,"context_line":"            expected_notifications\u003dexpected_notifications,"}],"source_content_type":"text/x-python","patch_set":49,"id":"7f231b9d_635b61f5","line":192,"range":{"start_line":186,"start_character":0,"end_line":192,"end_character":36},"updated":"2017-06-19 09:23:16.000000000","message":"As an alternative you can use\nself._get_notifications(\u0027instance-exists\u0027) it is less explicit about the number of ignored notifications but in the other hand it result in more stable test as the test will not fail if a new notification needs to be ignored.","commit_id":"74e34131ac027b3636955423e3a4dfc3e8d4f7dd"},{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"bbe162a20b97564d1cc89e8e4773e80a269e493c","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        instance-create-[start|end] and instance-rebuild-[start|end]"},{"line_number":184,"context_line":"        notifications."},{"line_number":185,"context_line":"        \"\"\""},{"line_number":186,"context_line":"        expected_notifications \u003d ["},{"line_number":187,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":188,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":189,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":190,"context_line":"            {\u0027event_type\u0027: \u0027instance-exists\u0027},"},{"line_number":191,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027},"},{"line_number":192,"context_line":"            {\u0027event_type\u0027: \u0027IGNORE\u0027}"},{"line_number":193,"context_line":"        ]"},{"line_number":194,"context_line":"        self._verify_notifications("},{"line_number":195,"context_line":"            expected_notifications\u003dexpected_notifications,"}],"source_content_type":"text/x-python","patch_set":49,"id":"7f231b9d_006a6018","line":192,"range":{"start_line":186,"start_character":0,"end_line":192,"end_character":36},"in_reply_to":"7f231b9d_635b61f5","updated":"2017-06-19 10:38:11.000000000","message":"Done","commit_id":"74e34131ac027b3636955423e3a4dfc3e8d4f7dd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"3b394e5d186f053e82e6caee575668d239958457","unresolved":false,"context_lines":[{"line_number":578,"context_line":"        self.assertEqual(5, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":579,"context_line":"        # This list needs to be in order."},{"line_number":580,"context_line":"        expected_notifications \u003d ["},{"line_number":581,"context_line":"            None,"},{"line_number":582,"context_line":"            \u0027instance-resize-start\u0027,"},{"line_number":583,"context_line":"            \u0027instance-resize-end\u0027,"},{"line_number":584,"context_line":"            \u0027instance-resize_finish-start\u0027,"}],"source_content_type":"text/x-python","patch_set":49,"id":"7f231b9d_a333b9aa","line":581,"updated":"2017-06-19 09:23:16.000000000","message":"Is it an instance-exists notification? Can we simply assert it or can we use the \u0027IGNORE\u0027 facility you introduced in the previous patch?","commit_id":"74e34131ac027b3636955423e3a4dfc3e8d4f7dd"},{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"bbe162a20b97564d1cc89e8e4773e80a269e493c","unresolved":false,"context_lines":[{"line_number":578,"context_line":"        self.assertEqual(5, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":579,"context_line":"        # This list needs to be in order."},{"line_number":580,"context_line":"        expected_notifications \u003d ["},{"line_number":581,"context_line":"            None,"},{"line_number":582,"context_line":"            \u0027instance-resize-start\u0027,"},{"line_number":583,"context_line":"            \u0027instance-resize-end\u0027,"},{"line_number":584,"context_line":"            \u0027instance-resize_finish-start\u0027,"}],"source_content_type":"text/x-python","patch_set":49,"id":"7f231b9d_e0fbe443","line":581,"in_reply_to":"7f231b9d_a333b9aa","updated":"2017-06-19 10:38:11.000000000","message":"I remember so, that this a simple instance-exists. But i would like to illustrate an IGNORE use case. If you say, that more transparent, if use the instance-exists, then i fix it.","commit_id":"74e34131ac027b3636955423e3a4dfc3e8d4f7dd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b270f1f21c78d8d9a43a2dd7ef6513e423c6b6ce","unresolved":false,"context_lines":[{"line_number":578,"context_line":"        self.assertEqual(5, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":579,"context_line":"        # This list needs to be in order."},{"line_number":580,"context_line":"        expected_notifications \u003d ["},{"line_number":581,"context_line":"            None,"},{"line_number":582,"context_line":"            \u0027instance-resize-start\u0027,"},{"line_number":583,"context_line":"            \u0027instance-resize-end\u0027,"},{"line_number":584,"context_line":"            \u0027instance-resize_finish-start\u0027,"}],"source_content_type":"text/x-python","patch_set":49,"id":"7f231b9d_e6489c5c","line":581,"in_reply_to":"7f231b9d_e0fbe443","updated":"2017-06-19 11:22:34.000000000","message":"I see.\nThe new _verify_notifications() call allows IGNORE to be passed so you don\u0027t have to add an extra if in L588 also the for loop can be eliminated by calling the new_verify_notifications() added by the previous patch. Exactly how you implemented in PS 51 :)","commit_id":"74e34131ac027b3636955423e3a4dfc3e8d4f7dd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"29028943ef613cd91aa8b8b6aaa0fc566ebbdcff","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                actual\u003dnotifications[i])"},{"line_number":156,"context_line":"        return replacements"},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"    def test_instance_exists_usage_audit(self):"},{"line_number":159,"context_line":"        # TODO(xavvior): Should create a functional test for the"},{"line_number":160,"context_line":"        # \"instance_usage_audit\" periodic task. We didn\u0027t find usable"},{"line_number":161,"context_line":"        # solution for this problem, however we tried to test it in"},{"line_number":162,"context_line":"        # several ways."},{"line_number":163,"context_line":"        pass"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    def test_instance_exists(self):"},{"line_number":166,"context_line":"        server \u003d self._boot_a_server("}],"source_content_type":"text/x-python","patch_set":51,"id":"3f1d235d_be0d2fe9","line":163,"range":{"start_line":158,"start_character":0,"end_line":163,"end_character":12},"updated":"2017-07-06 10:20:21.000000000","message":"I managed to create a test for this case. See the subsequent patch https://review.openstack.org/#/c/480955/","commit_id":"f91dec981a3b294f6af8261f9afde372fed68dc2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e2c396d6a3f83061787ef66afc69d89afca3941d","unresolved":false,"context_lines":[{"line_number":231,"context_line":"    def test_instance_exists(self):"},{"line_number":232,"context_line":"        server \u003d self._boot_a_server("},{"line_number":233,"context_line":"            extra_params\u003d{\u0027networks\u0027: [{\u0027port\u0027: self.neutron.port_1[\u0027id\u0027]}]})"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"        post \u003d {"},{"line_number":236,"context_line":"            \u0027rebuild\u0027: {"},{"line_number":237,"context_line":"                \u0027imageRef\u0027: \u0027a2459075-d96c-40d5-893e-577ff92e721c\u0027,"}],"source_content_type":"text/x-python","patch_set":55,"id":"1f1a1f67_15a202fe","line":234,"updated":"2017-07-17 11:06:25.000000000","message":"Could you attach a volume to the server to have some block devices in the notification?\ne.g.:\n\nself._attach_volume_to_server(server,self.cinder.SWAP_OLD_VOL)","commit_id":"0611346d647693f2a520bc3cf9a1ae5852dedfe0"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"e7fbcbdd7b1a72157bc47792c76eb3342212252d","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":1276,"context_line":"        self._wait_for_state_change(self.admin_api, server, \u0027RESCUE\u0027)"},{"line_number":1277,"context_line":""},{"line_number":1278,"context_line":"        self.assertEqual(2, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":1279,"context_line":"        self._verify_notification("},{"line_number":1280,"context_line":"            \u0027instance-rescue-start\u0027,"},{"line_number":1281,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":75,"id":"7f96bb07_ad623bd7","line":1278,"range":{"start_line":1278,"start_character":25,"end_line":1278,"end_character":26},"updated":"2018-01-23 06:30:34.000000000","message":"It should be modified.\n\nhttps://github.com/openstack/nova/blob/7e5d93edc5774d4bdb42074a2f08230b28a53c69/nova/compute/manager.py#L3574-L3575","commit_id":"a5fb8781a6f49abd2a469c19082ea33076e7ea1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"424697f735e190fe8e1d4c2e649e2426ed215b1d","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":1276,"context_line":"        self._wait_for_state_change(self.admin_api, server, \u0027RESCUE\u0027)"},{"line_number":1277,"context_line":""},{"line_number":1278,"context_line":"        self.assertEqual(2, len(fake_notifier.VERSIONED_NOTIFICATIONS))"},{"line_number":1279,"context_line":"        self._verify_notification("},{"line_number":1280,"context_line":"            \u0027instance-rescue-start\u0027,"},{"line_number":1281,"context_line":"            replacements\u003d{"}],"source_content_type":"text/x-python","patch_set":75,"id":"5f93b717_c819ec88","line":1278,"range":{"start_line":1278,"start_character":25,"end_line":1278,"end_character":26},"in_reply_to":"7f96bb07_ad623bd7","updated":"2018-01-25 10:06:12.000000000","message":"Done","commit_id":"a5fb8781a6f49abd2a469c19082ea33076e7ea1c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d78653ed441377c6d72dc6d6f273a27c5aefbcd0","unresolved":false,"context_lines":[{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        # Let\u0027s generate some bandwidth usage data."},{"line_number":384,"context_line":"        # Just call the periodic task directly for simplicity"},{"line_number":385,"context_line":"        self.compute.manager._poll_bandwidth_usage(context.get_admin_context())"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"        fake_notifier.reset()"},{"line_number":388,"context_line":""}],"source_content_type":"text/x-python","patch_set":78,"id":"df7087c5_bf59edfe","line":385,"updated":"2018-03-22 02:06:17.000000000","message":"OK this works because the fake driver implements it:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/nova/virt/fake.py#n394","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"977e2786a4c068a094eb5d6fff585b46725da776","unresolved":false,"context_lines":[{"line_number":955,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":956,"context_line":"        self._wait_for_state_change(self.api, server, expected_status\u003d\u0027ERROR\u0027)"},{"line_number":957,"context_line":"        self._wait_for_notification(\u0027compute.exception\u0027)"},{"line_number":958,"context_line":"        # There should be the following four notifications."},{"line_number":959,"context_line":"        # 0: instance-exists"},{"line_number":960,"context_line":"        # 1: instance-resize_prep-start"},{"line_number":961,"context_line":"        # 2: instance-resize-error"}],"source_content_type":"text/x-python","patch_set":79,"id":"9f6a8fd7_b06673ba","line":958,"range":{"start_line":958,"start_character":39,"end_line":958,"end_character":45},"updated":"2018-04-26 08:45:44.000000000","message":"five","commit_id":"d28dc49569a0b2c0e341afe19556aec15e12da2d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a2eda27a64655b91f0553ce85db25c8a04933e80","unresolved":false,"context_lines":[{"line_number":955,"context_line":"        self.api.post_server_action(server[\u0027id\u0027], post)"},{"line_number":956,"context_line":"        self._wait_for_state_change(self.api, server, expected_status\u003d\u0027ERROR\u0027)"},{"line_number":957,"context_line":"        self._wait_for_notification(\u0027compute.exception\u0027)"},{"line_number":958,"context_line":"        # There should be the following four notifications."},{"line_number":959,"context_line":"        # 0: instance-exists"},{"line_number":960,"context_line":"        # 1: instance-resize_prep-start"},{"line_number":961,"context_line":"        # 2: instance-resize-error"}],"source_content_type":"text/x-python","patch_set":79,"id":"5f7c97a3_6e29af99","line":958,"range":{"start_line":958,"start_character":39,"end_line":958,"end_character":45},"in_reply_to":"9f6a8fd7_b06673ba","updated":"2018-06-05 12:52:13.000000000","message":"Done","commit_id":"d28dc49569a0b2c0e341afe19556aec15e12da2d"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"75bce8c51330665b43b41bbc5a9fdee662ed5334","unresolved":false,"context_lines":[{"line_number":1542,"context_line":"    @mock.patch.object(objects.TaskLog, \u0027end_task\u0027)"},{"line_number":1543,"context_line":"    @mock.patch.object(objects.TaskLog, \u0027begin_task\u0027)"},{"line_number":1544,"context_line":"    @mock.patch.object(objects.InstanceList, \u0027get_active_by_window_joined\u0027)"},{"line_number":1545,"context_line":"    @mock.patch.object(objects.TaskLog, \u0027get\u0027)"},{"line_number":1546,"context_line":"    def test_instance_usage_audit(self, mock_get, mock_get_active, mock_begin,"},{"line_number":1547,"context_line":"                                  mock_end, mock_notify):"},{"line_number":1548,"context_line":"        instances \u003d [objects.Instance(uuid\u003duuids.instance)]"}],"source_content_type":"text/x-python","patch_set":78,"id":"df7087c5_528d15d1","line":1545,"range":{"start_line":1545,"start_character":44,"end_line":1545,"end_character":46},"updated":"2018-03-13 07:13:57.000000000","message":"much readable now.","commit_id":"2a4cbcd06d2890a8861e63ade7b80e8777e9c257"}],"nova/tests/unit/compute/test_compute_utils.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7dbe568020b3c0a9973ce0af2243d2a59ee05e3a","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        fake_network.set_stub_network_methods(self)"},{"line_number":417,"context_line":"        fake_server_actions.stub_out_action_events(self)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def _test_notify_usage_exists(self, instance, NOTIFICATIONS):"},{"line_number":420,"context_line":"        self.assertEqual(len(NOTIFICATIONS), 1)"},{"line_number":421,"context_line":"        msg \u003d fake_notifier.NOTIFICATIONS[0]"},{"line_number":422,"context_line":"        self.assertEqual(msg.priority, \u0027INFO\u0027)"}],"source_content_type":"text/x-python","patch_set":62,"id":"ff346bd7_14bb3f0e","line":419,"range":{"start_line":419,"start_character":50,"end_line":419,"end_character":63},"updated":"2017-07-26 10:52:54.000000000","message":"It looks strange to have a capitalized parameter","commit_id":"3dbfdbe8ea1f5d72a9655b5fe24c5ebc5c979243"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7692be32ce695e881806e8f0655c4242237b1f09","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def _test_notify_usage_exists(self, instance, notifications):"},{"line_number":421,"context_line":"        self.assertEqual(len(notifications), 1)"},{"line_number":422,"context_line":"        msg \u003d fake_notifier.NOTIFICATIONS[0]"},{"line_number":423,"context_line":"        self.assertEqual(msg.priority, \u0027INFO\u0027)"},{"line_number":424,"context_line":"        self.assertEqual(msg.event_type, \u0027compute.instance.exists\u0027)"},{"line_number":425,"context_line":"        payload \u003d msg.payload"}],"source_content_type":"text/x-python","patch_set":73,"id":"bf8cb3f7_3600b367","line":422,"range":{"start_line":422,"start_character":14,"end_line":422,"end_character":44},"updated":"2017-12-27 09:24:43.000000000","message":"That is a problem, it should use the passed in notifications param.","commit_id":"264d82bb5ab4fa22e90d168e5ca5fa55d6c70908"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f971d3ae83a43e818ffcb6d81b2a62b742f6cf86","unresolved":false,"context_lines":[{"line_number":455,"context_line":"        instance.save()"},{"line_number":456,"context_line":"        compute_utils.notify_usage_exists("},{"line_number":457,"context_line":"            rpc.get_notifier(\u0027compute\u0027), self.context, instance, \u0027fake-host\u0027)"},{"line_number":458,"context_line":"        self._test_notify_usage_exists("},{"line_number":459,"context_line":"            instance, fake_notifier.NOTIFICATIONS)"},{"line_number":460,"context_line":"        self._test_notify_usage_exists("},{"line_number":461,"context_line":"            instance, fake_notifier.VERSIONED_NOTIFICATIONS)"},{"line_number":462,"context_line":"        self.compute.terminate_instance(self.context, instance, [], [])"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def test_notify_usage_exists_deleted_instance(self):"}],"source_content_type":"text/x-python","patch_set":73,"id":"bf8cb3f7_523ee729","line":461,"range":{"start_line":458,"start_character":0,"end_line":461,"end_character":60},"updated":"2017-12-21 12:05:38.000000000","message":"I wonder if these should be separate tests. Not sure if there\u0027s a pattern here","commit_id":"264d82bb5ab4fa22e90d168e5ca5fa55d6c70908"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d46b0bb2953a672c486a75d43cf51de3598bc6c3","unresolved":false,"context_lines":[{"line_number":455,"context_line":"        instance.save()"},{"line_number":456,"context_line":"        compute_utils.notify_usage_exists("},{"line_number":457,"context_line":"            rpc.get_notifier(\u0027compute\u0027), self.context, instance, \u0027fake-host\u0027)"},{"line_number":458,"context_line":"        self._test_notify_usage_exists("},{"line_number":459,"context_line":"            instance, fake_notifier.NOTIFICATIONS)"},{"line_number":460,"context_line":"        self._test_notify_usage_exists("},{"line_number":461,"context_line":"            instance, fake_notifier.VERSIONED_NOTIFICATIONS)"},{"line_number":462,"context_line":"        self.compute.terminate_instance(self.context, instance, [], [])"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def test_notify_usage_exists_deleted_instance(self):"}],"source_content_type":"text/x-python","patch_set":73,"id":"bf8cb3f7_9665ff47","line":461,"range":{"start_line":458,"start_character":0,"end_line":461,"end_character":60},"in_reply_to":"bf8cb3f7_36e753e7","updated":"2017-12-28 09:03:22.000000000","message":"...and as soon as I tried to fix that mistake the common util started to look not that common any more. It does not worth to have a common util with a bunch of conditionals so I separated the tests as you suggested.","commit_id":"264d82bb5ab4fa22e90d168e5ca5fa55d6c70908"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"7692be32ce695e881806e8f0655c4242237b1f09","unresolved":false,"context_lines":[{"line_number":455,"context_line":"        instance.save()"},{"line_number":456,"context_line":"        compute_utils.notify_usage_exists("},{"line_number":457,"context_line":"            rpc.get_notifier(\u0027compute\u0027), self.context, instance, \u0027fake-host\u0027)"},{"line_number":458,"context_line":"        self._test_notify_usage_exists("},{"line_number":459,"context_line":"            instance, fake_notifier.NOTIFICATIONS)"},{"line_number":460,"context_line":"        self._test_notify_usage_exists("},{"line_number":461,"context_line":"            instance, fake_notifier.VERSIONED_NOTIFICATIONS)"},{"line_number":462,"context_line":"        self.compute.terminate_instance(self.context, instance, [], [])"},{"line_number":463,"context_line":""},{"line_number":464,"context_line":"    def test_notify_usage_exists_deleted_instance(self):"}],"source_content_type":"text/x-python","patch_set":73,"id":"bf8cb3f7_36e753e7","line":461,"range":{"start_line":458,"start_character":0,"end_line":461,"end_character":60},"in_reply_to":"bf8cb3f7_523ee729","updated":"2017-12-27 09:24:43.000000000","message":"Having at the common util helps not duplicating the asserts but I made a mistake in the refactoring. See my comment above.","commit_id":"264d82bb5ab4fa22e90d168e5ca5fa55d6c70908"}]}
