)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"86b6f4a1916ec7e7759388c82058cca3636ca2d7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hiroaki Kobayashi \u003ckobayashi.hiroaki@lab.ntt.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-24 15:34:12 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add actions before the end of a lease"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_699fa250","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":37},"updated":"2017-07-24 13:44:49.000000000","message":"Support running actions before the end of a lease","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e81257a4402dec0ebb8c54e21764387d199a0837","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hiroaki Kobayashi \u003ckobayashi.hiroaki@lab.ntt.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-07-24 15:34:12 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add actions before the end of a lease"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_903ad495","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":37},"in_reply_to":"ff346bd7_699fa250","updated":"2017-07-25 02:09:59.000000000","message":"Done","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"86b6f4a1916ec7e7759388c82058cca3636ca2d7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add actions before the end of a lease"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"},{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_e9a5d2b6","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":35},"updated":"2017-07-24 13:44:49.000000000","message":"This patch adds a before_end() method","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"86b6f4a1916ec7e7759388c82058cca3636ca2d7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add actions before the end of a lease"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"},{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_a9afca92","line":9,"range":{"start_line":9,"start_character":60,"end_line":9,"end_character":64},"updated":"2017-07-24 13:44:49.000000000","message":"s/That/It","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e81257a4402dec0ebb8c54e21764387d199a0837","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add actions before the end of a lease"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"},{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_9063f4b1","line":9,"range":{"start_line":9,"start_character":60,"end_line":9,"end_character":64},"in_reply_to":"ff346bd7_a9afca92","updated":"2017-07-25 02:09:59.000000000","message":"Done","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e81257a4402dec0ebb8c54e21764387d199a0837","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add actions before the end of a lease"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"},{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_705ad0f3","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":35},"in_reply_to":"ff346bd7_e9a5d2b6","updated":"2017-07-25 02:09:59.000000000","message":"Done","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"86b6f4a1916ec7e7759388c82058cca3636ca2d7","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"},{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch also renames The API parameter \u0027before_end_notification\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_e98ef22c","line":11,"range":{"start_line":11,"start_character":33,"end_line":11,"end_character":40},"updated":"2017-07-24 13:44:49.000000000","message":"s/plugins/plugin/","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e81257a4402dec0ebb8c54e21764387d199a0837","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"},{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch also renames The API parameter \u0027before_end_notification\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_505d8ce7","line":11,"range":{"start_line":11,"start_character":33,"end_line":11,"end_character":40},"in_reply_to":"ff346bd7_e98ef22c","updated":"2017-07-25 02:09:59.000000000","message":"Done","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"86b6f4a1916ec7e7759388c82058cca3636ca2d7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"},{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch also renames The API parameter \u0027before_end_notification\u0027"},{"line_number":15,"context_line":"\u0027before_end_date\u0027 because actions other than notification get to use"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_897d261e","line":12,"range":{"start_line":12,"start_character":28,"end_line":12,"end_character":29},"updated":"2017-07-24 13:44:49.000000000","message":"Move the dot after the quote.","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e81257a4402dec0ebb8c54e21764387d199a0837","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch adds before_end() method to the resource plugin. That is"},{"line_number":10,"context_line":"called from the manager at the before_end_lease event. An actual action"},{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch also renames The API parameter \u0027before_end_notification\u0027"},{"line_number":15,"context_line":"\u0027before_end_date\u0027 because actions other than notification get to use"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_106f0493","line":12,"range":{"start_line":12,"start_character":28,"end_line":12,"end_character":29},"in_reply_to":"ff346bd7_897d261e","updated":"2017-07-25 02:09:59.000000000","message":"Done","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"86b6f4a1916ec7e7759388c82058cca3636ca2d7","unresolved":false,"context_lines":[{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch also renames The API parameter \u0027before_end_notification\u0027"},{"line_number":15,"context_line":"\u0027before_end_date\u0027 because actions other than notification get to use"},{"line_number":16,"context_line":"this parameter."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_2974fa34","line":14,"range":{"start_line":14,"start_character":24,"end_line":14,"end_character":27},"updated":"2017-07-24 13:44:49.000000000","message":"s/The/the","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e81257a4402dec0ebb8c54e21764387d199a0837","unresolved":false,"context_lines":[{"line_number":11,"context_line":"is configurable for each resouce plugins. The physical host plugin"},{"line_number":12,"context_line":"currently supports \u0027snapshot.\u0027"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch also renames The API parameter \u0027before_end_notification\u0027"},{"line_number":15,"context_line":"\u0027before_end_date\u0027 because actions other than notification get to use"},{"line_number":16,"context_line":"this parameter."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"ff346bd7_f00240b4","line":14,"range":{"start_line":14,"start_character":24,"end_line":14,"end_character":27},"in_reply_to":"ff346bd7_2974fa34","updated":"2017-07-25 02:09:59.000000000","message":"Done","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"}],"blazar/manager/service.py":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"07bbdabc09337d0cfc2c311245bc1b89eab1fb1c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                default\u003d[\u0027dummy.vm.plugin\u0027],"},{"line_number":36,"context_line":"                help\u003d\u0027All plugins to use (one for every resource type to \u0027"},{"line_number":37,"context_line":"                     \u0027support.)\u0027),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027notify_hours_before_lease_end\u0027,"},{"line_number":39,"context_line":"               default\u003d48,"},{"line_number":40,"context_line":"               help\u003d\u0027Number of hours prior to lease end in which a \u0027"},{"line_number":41,"context_line":"                    \u0027notification of lease close to expire will be sent. If \u0027"},{"line_number":42,"context_line":"                    \u0027this is set to 0, then this notification will \u0027"},{"line_number":43,"context_line":"                    \u0027not be sent.\u0027,"},{"line_number":44,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":45,"context_line":"               deprecated_since\u003d\u00270.3.0\u0027,"},{"line_number":46,"context_line":"               deprecated_reason\u003d\u0027Actions taken before the end of a lease are \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_9ea21d9a","line":43,"range":{"start_line":38,"start_character":1,"end_line":43,"end_character":35},"updated":"2017-05-30 02:38:54.000000000","message":"This config should replace this name with minutes_before_end_lease and use deprecated_name\u003d\u0027notify_hours_before_lease_end\u0027 since the new config takes over previous config.","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"6eec1ee65aa6017e447d9d8e53fffad70cdf1b7a","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                default\u003d[\u0027dummy.vm.plugin\u0027],"},{"line_number":36,"context_line":"                help\u003d\u0027All plugins to use (one for every resource type to \u0027"},{"line_number":37,"context_line":"                     \u0027support.)\u0027),"},{"line_number":38,"context_line":"    cfg.IntOpt(\u0027notify_hours_before_lease_end\u0027,"},{"line_number":39,"context_line":"               default\u003d48,"},{"line_number":40,"context_line":"               help\u003d\u0027Number of hours prior to lease end in which a \u0027"},{"line_number":41,"context_line":"                    \u0027notification of lease close to expire will be sent. If \u0027"},{"line_number":42,"context_line":"                    \u0027this is set to 0, then this notification will \u0027"},{"line_number":43,"context_line":"                    \u0027not be sent.\u0027,"},{"line_number":44,"context_line":"               deprecated_for_removal\u003dTrue,"},{"line_number":45,"context_line":"               deprecated_since\u003d\u00270.3.0\u0027,"},{"line_number":46,"context_line":"               deprecated_reason\u003d\u0027Actions taken before the end of a lease are \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_9eda1de7","line":43,"range":{"start_line":38,"start_character":1,"end_line":43,"end_character":35},"in_reply_to":"df140735_9ea21d9a","updated":"2017-05-30 08:57:39.000000000","message":"Done","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"07bbdabc09337d0cfc2c311245bc1b89eab1fb1c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                                 \u0027extended more than a notification. A new\u0027"},{"line_number":48,"context_line":"                                 \u0027config min_before_end_lease will be used\u0027"},{"line_number":49,"context_line":"                                 \u0027for triggering such actions instead.\u0027),"},{"line_number":50,"context_line":"    cfg.IntOpt(\u0027minutes_before_end_lease\u0027,"},{"line_number":51,"context_line":"               default\u003d60,"},{"line_number":52,"context_line":"               help\u003d\u0027Minutes prior to the end of a lease in which actions like\u0027"},{"line_number":53,"context_line":"                    \u0027notification and snapshot are taken. If this is set to 0,\u0027"},{"line_number":54,"context_line":"                    \u0027then these actions are not taken.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_deb1b5e3","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":26},"updated":"2017-05-30 02:38:54.000000000","message":"Why the config changes its scale to \u0027minutes\u0027?","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"6eec1ee65aa6017e447d9d8e53fffad70cdf1b7a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                                 \u0027extended more than a notification. A new\u0027"},{"line_number":48,"context_line":"                                 \u0027config min_before_end_lease will be used\u0027"},{"line_number":49,"context_line":"                                 \u0027for triggering such actions instead.\u0027),"},{"line_number":50,"context_line":"    cfg.IntOpt(\u0027minutes_before_end_lease\u0027,"},{"line_number":51,"context_line":"               default\u003d60,"},{"line_number":52,"context_line":"               help\u003d\u0027Minutes prior to the end of a lease in which actions like\u0027"},{"line_number":53,"context_line":"                    \u0027notification and snapshot are taken. If this is set to 0,\u0027"},{"line_number":54,"context_line":"                    \u0027then these actions are not taken.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_3efaf141","line":51,"range":{"start_line":50,"start_character":0,"end_line":51,"end_character":26},"in_reply_to":"df140735_deb1b5e3","updated":"2017-05-30 08:57:39.000000000","message":"Hour is enough for the notification. However, uses may want to specify the time for actions like snapshot in a finer granularity than hour.","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"07bbdabc09337d0cfc2c311245bc1b89eab1fb1c","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    def before_end_lease(self, lease_id, event_id):"},{"line_number":426,"context_line":"        lease \u003d self.get_lease(lease_id)"},{"line_number":427,"context_line":"        with trusts.create_ctx_from_trust(lease[\u0027trust_id\u0027]) as ctx:"},{"line_number":428,"context_line":"            self._send_notification(lease, ctx, events\u003d[\u0027before_end_lease\u0027])"},{"line_number":429,"context_line":"            self._basic_action(lease_id, event_id, \u0027before_end\u0027)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def _basic_action(self, lease_id, event_id, action_time,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_de83f503","line":428,"range":{"start_line":428,"start_character":0,"end_line":428,"end_character":76},"updated":"2017-05-30 02:38:54.000000000","message":"This notification isn\u0027t needed, is it? It\u0027s sent by _event().","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"6eec1ee65aa6017e447d9d8e53fffad70cdf1b7a","unresolved":false,"context_lines":[{"line_number":425,"context_line":"    def before_end_lease(self, lease_id, event_id):"},{"line_number":426,"context_line":"        lease \u003d self.get_lease(lease_id)"},{"line_number":427,"context_line":"        with trusts.create_ctx_from_trust(lease[\u0027trust_id\u0027]) as ctx:"},{"line_number":428,"context_line":"            self._send_notification(lease, ctx, events\u003d[\u0027before_end_lease\u0027])"},{"line_number":429,"context_line":"            self._basic_action(lease_id, event_id, \u0027before_end\u0027)"},{"line_number":430,"context_line":""},{"line_number":431,"context_line":"    def _basic_action(self, lease_id, event_id, action_time,"}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_1ebe0d65","line":428,"range":{"start_line":428,"start_character":0,"end_line":428,"end_character":76},"in_reply_to":"df140735_de83f503","updated":"2017-05-30 08:57:39.000000000","message":"You\u0027re right. I\u0027ve removed it.","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"a694cb2d5968ba7694a9cbce3b857512823ce116","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.IntOpt(\u0027minutes_before_end_lease\u0027,"},{"line_number":39,"context_line":"               default\u003d60,"},{"line_number":40,"context_line":"               deprecated_name\u003d\u0027notify_hours_before_lease_end\u0027,"},{"line_number":41,"context_line":"               help\u003d\u0027Minutes prior to the end of a lease in which actions like\u0027"},{"line_number":42,"context_line":"                    \u0027notification and snapshot are taken. If this is set to 0,\u0027"},{"line_number":43,"context_line":"                    \u0027then these actions are not taken.\u0027)"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_51705c08","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":56},"updated":"2017-07-18 15:49:57.000000000","message":"You are missing space characters at the end of the first two strings to concatenate them properly.","commit_id":"963ccfe8f1382e9f62ef162a00e30e468ae46d27"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"5e0b2d731b0ecacc2b6076a5eb28caab48d2a470","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.IntOpt(\u0027minutes_before_end_lease\u0027,"},{"line_number":39,"context_line":"               default\u003d60,"},{"line_number":40,"context_line":"               deprecated_name\u003d\u0027notify_hours_before_lease_end\u0027,"},{"line_number":41,"context_line":"               help\u003d\u0027Minutes prior to the end of a lease in which actions like\u0027"},{"line_number":42,"context_line":"                    \u0027notification and snapshot are taken. If this is set to 0,\u0027"},{"line_number":43,"context_line":"                    \u0027then these actions are not taken.\u0027)"},{"line_number":44,"context_line":"]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_4cdaf177","line":43,"range":{"start_line":41,"start_character":0,"end_line":43,"end_character":56},"in_reply_to":"1f1a1f67_51705c08","updated":"2017-07-19 02:21:13.000000000","message":"Done","commit_id":"963ccfe8f1382e9f62ef162a00e30e468ae46d27"},{"author":{"_account_id":13192,"name":"Souville","display_name":"Bertrand Souville","email":"souville@docomolab-euro.com","username":"bertys"},"change_message_id":"05ac133cd7d83c0f3f4c3f3044b47617328435d2","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                except common_ex.BlazarException as e:"},{"line_number":232,"context_line":"                    LOG.error(\"Invalid before_end_date param. %s\" % e.message)"},{"line_number":233,"context_line":"                    raise e"},{"line_number":234,"context_line":"            elif CONF.manager.minutes_before_end_lease \u003e 0:"},{"line_number":235,"context_line":"                delta \u003d datetime.timedelta("},{"line_number":236,"context_line":"                    minutes\u003dCONF.manager.minutes_before_end_lease)"},{"line_number":237,"context_line":"                before_end_date \u003d lease_values[\u0027end_date\u0027] - delta"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"            if before_end_date:"},{"line_number":240,"context_line":"                event \u003d {\u0027event_type\u0027: \u0027before_end_lease\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_a9a90ae0","line":237,"range":{"start_line":234,"start_character":12,"end_line":237,"end_character":66},"updated":"2017-07-24 13:42:35.000000000","message":"We also need to check that start_date \u003c before_end_date in this case, right (similar to L229)?","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e81257a4402dec0ebb8c54e21764387d199a0837","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                except common_ex.BlazarException as e:"},{"line_number":232,"context_line":"                    LOG.error(\"Invalid before_end_date param. %s\" % e.message)"},{"line_number":233,"context_line":"                    raise e"},{"line_number":234,"context_line":"            elif CONF.manager.minutes_before_end_lease \u003e 0:"},{"line_number":235,"context_line":"                delta \u003d datetime.timedelta("},{"line_number":236,"context_line":"                    minutes\u003dCONF.manager.minutes_before_end_lease)"},{"line_number":237,"context_line":"                before_end_date \u003d lease_values[\u0027end_date\u0027] - delta"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"            if before_end_date:"},{"line_number":240,"context_line":"                event \u003d {\u0027event_type\u0027: \u0027before_end_lease\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_f0bfe0f8","line":237,"range":{"start_line":234,"start_character":12,"end_line":237,"end_character":66},"in_reply_to":"ff346bd7_a9a90ae0","updated":"2017-07-25 02:09:59.000000000","message":"It is checked and updated by the _update_before_end_event_date() method called at L243.","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"9d8c70f9a63a0e748e4540b4c74ffa1352505850","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                except common_ex.BlazarException as e:"},{"line_number":232,"context_line":"                    LOG.error(\"Invalid before_end_date param. %s\" % e.message)"},{"line_number":233,"context_line":"                    raise e"},{"line_number":234,"context_line":"            elif CONF.manager.minutes_before_end_lease \u003e 0:"},{"line_number":235,"context_line":"                delta \u003d datetime.timedelta("},{"line_number":236,"context_line":"                    minutes\u003dCONF.manager.minutes_before_end_lease)"},{"line_number":237,"context_line":"                before_end_date \u003d lease_values[\u0027end_date\u0027] - delta"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"            if before_end_date:"},{"line_number":240,"context_line":"                event \u003d {\u0027event_type\u0027: \u0027before_end_lease\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_6a5ad42a","line":237,"range":{"start_line":234,"start_character":12,"end_line":237,"end_character":66},"in_reply_to":"ff346bd7_b41dc574","updated":"2017-07-25 08:16:42.000000000","message":"I\u0027ve changed the warning message a little.","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":13192,"name":"Souville","display_name":"Bertrand Souville","email":"souville@docomolab-euro.com","username":"bertys"},"change_message_id":"f1cd0c9933477aba224130d72271993549c23c31","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                except common_ex.BlazarException as e:"},{"line_number":232,"context_line":"                    LOG.error(\"Invalid before_end_date param. %s\" % e.message)"},{"line_number":233,"context_line":"                    raise e"},{"line_number":234,"context_line":"            elif CONF.manager.minutes_before_end_lease \u003e 0:"},{"line_number":235,"context_line":"                delta \u003d datetime.timedelta("},{"line_number":236,"context_line":"                    minutes\u003dCONF.manager.minutes_before_end_lease)"},{"line_number":237,"context_line":"                before_end_date \u003d lease_values[\u0027end_date\u0027] - delta"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"            if before_end_date:"},{"line_number":240,"context_line":"                event \u003d {\u0027event_type\u0027: \u0027before_end_lease\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_b41dc574","line":237,"range":{"start_line":234,"start_character":12,"end_line":237,"end_character":66},"in_reply_to":"ff346bd7_f0bfe0f8","updated":"2017-07-25 07:35:41.000000000","message":"Is warning message sufficient (L521) in this case?\nThanks.","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"}],"blazar/plugins/oshosts/host_plugin.py":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"07bbdabc09337d0cfc2c311245bc1b89eab1fb1c","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    def before_end(self, resource_id):"},{"line_number":180,"context_line":"        \"\"\"Take an action before the end of a lease.\"\"\""},{"line_number":181,"context_line":"        action \u003d CONF[plugin.RESOURCE_TYPE].before_end"},{"line_number":182,"context_line":"        if action is \u0027snapshot\u0027:"},{"line_number":183,"context_line":"            host_reservation \u003d db_api.host_reservation_get(resource_id)"},{"line_number":184,"context_line":"            pool \u003d rp.ReservationPool()"},{"line_number":185,"context_line":"            for host in pool.get_computehosts("}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_5e4805cb","line":182,"range":{"start_line":182,"start_character":0,"end_line":182,"end_character":32},"updated":"2017-05-30 02:38:54.000000000","message":"In python, \u0027\u003d\u003d\u0027-operator is better than is-operator for string comparisons.  is-operator returns True if both operands refer same object.","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"6eec1ee65aa6017e447d9d8e53fffad70cdf1b7a","unresolved":false,"context_lines":[{"line_number":179,"context_line":"    def before_end(self, resource_id):"},{"line_number":180,"context_line":"        \"\"\"Take an action before the end of a lease.\"\"\""},{"line_number":181,"context_line":"        action \u003d CONF[plugin.RESOURCE_TYPE].before_end"},{"line_number":182,"context_line":"        if action is \u0027snapshot\u0027:"},{"line_number":183,"context_line":"            host_reservation \u003d db_api.host_reservation_get(resource_id)"},{"line_number":184,"context_line":"            pool \u003d rp.ReservationPool()"},{"line_number":185,"context_line":"            for host in pool.get_computehosts("}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_9eb1fd92","line":182,"range":{"start_line":182,"start_character":0,"end_line":182,"end_character":32},"in_reply_to":"df140735_5e4805cb","updated":"2017-05-30 08:57:39.000000000","message":"Done","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"07bbdabc09337d0cfc2c311245bc1b89eab1fb1c","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                    host_reservation[\u0027aggregate_id\u0027]):"},{"line_number":187,"context_line":"                for server in self.nova.servers.list("},{"line_number":188,"context_line":"                        search_opts\u003d{\"host\": host}):"},{"line_number":189,"context_line":"                    eventlet.spawn_n("},{"line_number":190,"context_line":"                        self.nova.servers.create_image(server\u003dserver))"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def on_end(self, resource_id):"},{"line_number":193,"context_line":"        \"\"\"Remove the hosts from the pool.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_9ed0ddf9","line":190,"range":{"start_line":189,"start_character":0,"end_line":190,"end_character":70},"updated":"2017-05-30 02:38:54.000000000","message":"Do you know if Nova accepts Delete Server API requests for servers which are in \"creating_image\" status or not?  If not, on_end method needs to stop the image creation first, then delete instances on the hosts.","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"6eec1ee65aa6017e447d9d8e53fffad70cdf1b7a","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                    host_reservation[\u0027aggregate_id\u0027]):"},{"line_number":187,"context_line":"                for server in self.nova.servers.list("},{"line_number":188,"context_line":"                        search_opts\u003d{\"host\": host}):"},{"line_number":189,"context_line":"                    eventlet.spawn_n("},{"line_number":190,"context_line":"                        self.nova.servers.create_image(server\u003dserver))"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    def on_end(self, resource_id):"},{"line_number":193,"context_line":"        \"\"\"Remove the hosts from the pool.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"df140735_ca88cb20","line":190,"range":{"start_line":189,"start_character":0,"end_line":190,"end_character":70},"in_reply_to":"df140735_9ed0ddf9","updated":"2017-05-30 08:57:39.000000000","message":"I\u0027ve tested and found that a server is deleted even if the create_image is processing. The create_image fails in that case.","commit_id":"75da354f0415e9eb5982e1317ebd884a3185b103"},{"author":{"_account_id":13192,"name":"Souville","display_name":"Bertrand Souville","email":"souville@docomolab-euro.com","username":"bertys"},"change_message_id":"c35d73cdb25d029ed6181344723c143feb708789","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            pool \u003d nova.ReservationPool()"},{"line_number":194,"context_line":"            for host in pool.get_computehosts("},{"line_number":195,"context_line":"                    host_reservation[\u0027aggregate_id\u0027]):"},{"line_number":196,"context_line":"                for server in self.nova.servers.list("},{"line_number":197,"context_line":"                        search_opts\u003d{\"host\": host}):"},{"line_number":198,"context_line":"                    eventlet.spawn_n("},{"line_number":199,"context_line":"                        self.nova.servers.create_image(server\u003dserver))"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_c34eeb6d","line":197,"range":{"start_line":196,"start_character":16,"end_line":197,"end_character":52},"updated":"2017-06-27 08:35:09.000000000","message":"Shall we include status of server (e.g. ACTIVE) as well?\nhttps://developer.openstack.org/api-ref/compute/?expanded\u003dcreate-image-createimage-action-detail","commit_id":"b05b3082e8efaf851363fbbb0edc8cff8841be88"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"02224df8a5b7231f8aa1c8d4e2f45c536762b4e7","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            pool \u003d nova.ReservationPool()"},{"line_number":194,"context_line":"            for host in pool.get_computehosts("},{"line_number":195,"context_line":"                    host_reservation[\u0027aggregate_id\u0027]):"},{"line_number":196,"context_line":"                for server in self.nova.servers.list("},{"line_number":197,"context_line":"                        search_opts\u003d{\"host\": host}):"},{"line_number":198,"context_line":"                    eventlet.spawn_n("},{"line_number":199,"context_line":"                        self.nova.servers.create_image(server\u003dserver))"},{"line_number":200,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_e3519c64","line":197,"range":{"start_line":196,"start_character":16,"end_line":197,"end_character":52},"in_reply_to":"5f201791_c34eeb6d","updated":"2017-06-29 08:20:24.000000000","message":"I\u0027ve added that, thanks!","commit_id":"b05b3082e8efaf851363fbbb0edc8cff8841be88"},{"author":{"_account_id":13192,"name":"Souville","display_name":"Bertrand Souville","email":"souville@docomolab-euro.com","username":"bertys"},"change_message_id":"c35d73cdb25d029ed6181344723c143feb708789","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                    host_reservation[\u0027aggregate_id\u0027]):"},{"line_number":196,"context_line":"                for server in self.nova.servers.list("},{"line_number":197,"context_line":"                        search_opts\u003d{\"host\": host}):"},{"line_number":198,"context_line":"                    eventlet.spawn_n("},{"line_number":199,"context_line":"                        self.nova.servers.create_image(server\u003dserver))"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def on_end(self, resource_id):"},{"line_number":202,"context_line":"        \"\"\"Remove the hosts from the pool.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_036183d3","line":199,"range":{"start_line":198,"start_character":20,"end_line":199,"end_character":70},"updated":"2017-06-27 08:35:09.000000000","message":"Not sure if we shall do this in parallel?","commit_id":"b05b3082e8efaf851363fbbb0edc8cff8841be88"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"02224df8a5b7231f8aa1c8d4e2f45c536762b4e7","unresolved":false,"context_lines":[{"line_number":195,"context_line":"                    host_reservation[\u0027aggregate_id\u0027]):"},{"line_number":196,"context_line":"                for server in self.nova.servers.list("},{"line_number":197,"context_line":"                        search_opts\u003d{\"host\": host}):"},{"line_number":198,"context_line":"                    eventlet.spawn_n("},{"line_number":199,"context_line":"                        self.nova.servers.create_image(server\u003dserver))"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    def on_end(self, resource_id):"},{"line_number":202,"context_line":"        \"\"\"Remove the hosts from the pool.\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_c3aa2018","line":199,"range":{"start_line":198,"start_character":20,"end_line":199,"end_character":70},"in_reply_to":"5f201791_036183d3","updated":"2017-06-29 08:20:24.000000000","message":"Now that I think it\u0027s not necessary because Nova API calls are asynchronous. I\u0027ve removed spawns.","commit_id":"b05b3082e8efaf851363fbbb0edc8cff8841be88"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"a694cb2d5968ba7694a9cbce3b857512823ce116","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            for host in pool.get_computehosts("},{"line_number":185,"context_line":"                    host_reservation[\u0027aggregate_id\u0027]):"},{"line_number":186,"context_line":"                for server in self.nova.servers.list("},{"line_number":187,"context_line":"                        search_opts\u003d{\"host\": host, \"all_tenants\": 1,"},{"line_number":188,"context_line":"                                     \"status\": \"ACTIVE\"}):"},{"line_number":189,"context_line":"                        self.nova.servers.create_image(server\u003dserver)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def on_end(self, resource_id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_311de073","line":188,"range":{"start_line":187,"start_character":0,"end_line":188,"end_character":58},"updated":"2017-07-18 15:49:57.000000000","message":"There are other instance status values that we may want to snapshot, e.g. \"SHUTOFF\", \"PAUSED\", or \"SUSPENDED\".","commit_id":"963ccfe8f1382e9f62ef162a00e30e468ae46d27"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"5e0b2d731b0ecacc2b6076a5eb28caab48d2a470","unresolved":false,"context_lines":[{"line_number":184,"context_line":"            for host in pool.get_computehosts("},{"line_number":185,"context_line":"                    host_reservation[\u0027aggregate_id\u0027]):"},{"line_number":186,"context_line":"                for server in self.nova.servers.list("},{"line_number":187,"context_line":"                        search_opts\u003d{\"host\": host, \"all_tenants\": 1,"},{"line_number":188,"context_line":"                                     \"status\": \"ACTIVE\"}):"},{"line_number":189,"context_line":"                        self.nova.servers.create_image(server\u003dserver)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def on_end(self, resource_id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1f1a1f67_6cddadde","line":188,"range":{"start_line":187,"start_character":0,"end_line":188,"end_character":58},"in_reply_to":"1f1a1f67_311de073","updated":"2017-07-19 02:21:13.000000000","message":"Done","commit_id":"963ccfe8f1382e9f62ef162a00e30e468ae46d27"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"86b6f4a1916ec7e7759388c82058cca3636ca2d7","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               help\u003d\u0027Prefix for Availability Zones created by Blazar\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027before_end\u0027,"},{"line_number":48,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":49,"context_line":"               help\u003d\u0027Actions which we will use before the end of the lease\u0027)"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_e92f12f4","line":49,"range":{"start_line":49,"start_character":21,"end_line":49,"end_character":74},"updated":"2017-07-24 13:44:49.000000000","message":"Actions which will be taken before the end of the lease","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e81257a4402dec0ebb8c54e21764387d199a0837","unresolved":false,"context_lines":[{"line_number":46,"context_line":"               help\u003d\u0027Prefix for Availability Zones created by Blazar\u0027),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027before_end\u0027,"},{"line_number":48,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":49,"context_line":"               help\u003d\u0027Actions which we will use before the end of the lease\u0027)"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":12,"id":"ff346bd7_f01b6018","line":49,"range":{"start_line":49,"start_character":21,"end_line":49,"end_character":74},"in_reply_to":"ff346bd7_e92f12f4","updated":"2017-07-25 02:09:59.000000000","message":"Done","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"}],"blazar/tests/plugins/test_physical_host_plugin.py":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"0ebf88e87cae85ce5f1446836d00bced0e74b58c","unresolved":false,"context_lines":[{"line_number":636,"context_line":""},{"line_number":637,"context_line":"    def test_before_end_with_no_action(self):"},{"line_number":638,"context_line":"        host_reservation_get \u003d self.patch(self.db_api, \u0027host_reservation_get\u0027)"},{"line_number":639,"context_line":"        host_reservation_get.assert_not_called()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def test_before_end_with_snapshot(self):"},{"line_number":642,"context_line":"        self.cfg.CONF.set_override(\u0027before_end\u0027, \u0027snapshot\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_f78bee64","line":639,"updated":"2017-06-27 02:04:08.000000000","message":"Should it call before_end() here?","commit_id":"b05b3082e8efaf851363fbbb0edc8cff8841be88"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"02224df8a5b7231f8aa1c8d4e2f45c536762b4e7","unresolved":false,"context_lines":[{"line_number":636,"context_line":""},{"line_number":637,"context_line":"    def test_before_end_with_no_action(self):"},{"line_number":638,"context_line":"        host_reservation_get \u003d self.patch(self.db_api, \u0027host_reservation_get\u0027)"},{"line_number":639,"context_line":"        host_reservation_get.assert_not_called()"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"    def test_before_end_with_snapshot(self):"},{"line_number":642,"context_line":"        self.cfg.CONF.set_override(\u0027before_end\u0027, \u0027snapshot\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f1d235d_8389c827","line":639,"in_reply_to":"5f201791_f78bee64","updated":"2017-06-29 08:20:24.000000000","message":"Yes, it should. I\u0027ve added. thanks!","commit_id":"b05b3082e8efaf851363fbbb0edc8cff8841be88"}],"blazar/utils/openstack/nova.py":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"473b63bf56231459b810981c51be683426df2e81","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def create_image(self, server, image_name\u003dNone, metadata\u003dNone):"},{"line_number":174,"context_line":"        \"\"\"Snapshot a server.\"\"\""},{"line_number":175,"context_line":"        server_name \u003d self.get(nova_base.getid(server)).name"},{"line_number":176,"context_line":"        if image_name is None:"},{"line_number":177,"context_line":"            image_name \u003d CONF.nova.image_prefix + server_name"},{"line_number":178,"context_line":"        return super(ServerManager, self).create_image(server,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_320e90e5","line":175,"range":{"start_line":175,"start_character":22,"end_line":175,"end_character":60},"updated":"2017-07-21 08:28:52.000000000","message":"\u0027server\u0027 is server object. So to get server name, \u0027server.name\u0027 works, doesn\u0027t it?","commit_id":"9c96e62cb8dd43445a22e41caa12ee65234f2656"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"bbeb2c2a1cbaca941505d67aead15c5c56edcabc","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"    def create_image(self, server, image_name\u003dNone, metadata\u003dNone):"},{"line_number":174,"context_line":"        \"\"\"Snapshot a server.\"\"\""},{"line_number":175,"context_line":"        server_name \u003d self.get(nova_base.getid(server)).name"},{"line_number":176,"context_line":"        if image_name is None:"},{"line_number":177,"context_line":"            image_name \u003d CONF.nova.image_prefix + server_name"},{"line_number":178,"context_line":"        return super(ServerManager, self).create_image(server,"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff346bd7_4c407a36","line":175,"range":{"start_line":175,"start_character":22,"end_line":175,"end_character":60},"in_reply_to":"1f1a1f67_320e90e5","updated":"2017-07-24 05:42:28.000000000","message":"Yes, it does. I\u0027ve updated it. thanks!","commit_id":"9c96e62cb8dd43445a22e41caa12ee65234f2656"}],"releasenotes/notes/before-end-actions-7e53e740e006195a.yaml":[{"author":{"_account_id":8878,"name":"Masahito Muroi","email":"masahito.muroi@g.softbank.co.jp","username":"masa"},"change_message_id":"88c4af6018b20a778982f0ea9fcae6752c06a476","unresolved":false,"context_lines":[{"line_number":12,"context_line":"  - |"},{"line_number":13,"context_line":"    The API parameter *before_end_notification* has been renamed"},{"line_number":14,"context_line":"    *before_end_date* which is used for setting the time for triggering actions"},{"line_number":15,"context_line":"    before the end of a lease."},{"line_number":16,"context_line":"deprecations:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The configuration option *notify_hours_before_lease_end* in the [manager]"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"df140735_13fc16b3","line":15,"updated":"2017-06-05 14:31:55.000000000","message":"It\u0027s better to mention the change of default value from 48 hours to 60 mins.","commit_id":"252e3a4b6a6875d7eafb50d29e9b4e71acfe5865"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"721381c97d99b4d0b55eaaeed3da98c011c7c17e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"  - |"},{"line_number":13,"context_line":"    The API parameter *before_end_notification* has been renamed"},{"line_number":14,"context_line":"    *before_end_date* which is used for setting the time for triggering actions"},{"line_number":15,"context_line":"    before the end of a lease."},{"line_number":16,"context_line":"deprecations:"},{"line_number":17,"context_line":"  - |"},{"line_number":18,"context_line":"    The configuration option *notify_hours_before_lease_end* in the [manager]"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"df140735_9cd6b327","line":15,"in_reply_to":"df140735_13fc16b3","updated":"2017-06-07 08:04:52.000000000","message":"Done","commit_id":"252e3a4b6a6875d7eafb50d29e9b4e71acfe5865"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"a694cb2d5968ba7694a9cbce3b857512823ce116","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Blazar gets to support before_end actions. Actions like notification and"},{"line_number":4,"context_line":"    snapshot can be taken at the specific time prior to the end of a lease."},{"line_number":5,"context_line":"    The time which triggers actions can be specified by the API parameter"},{"line_number":6,"context_line":"    *before_end_date* and the default interval can be configured by a new"},{"line_number":7,"context_line":"    configuration option *minutes_before_end_lease* in the [manager] section."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f1a1f67_f420769d","line":4,"range":{"start_line":4,"start_character":29,"end_line":4,"end_character":32},"updated":"2017-07-18 15:49:57.000000000","message":"s/the/a/","commit_id":"963ccfe8f1382e9f62ef162a00e30e468ae46d27"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"5e0b2d731b0ecacc2b6076a5eb28caab48d2a470","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Blazar gets to support before_end actions. Actions like notification and"},{"line_number":4,"context_line":"    snapshot can be taken at the specific time prior to the end of a lease."},{"line_number":5,"context_line":"    The time which triggers actions can be specified by the API parameter"},{"line_number":6,"context_line":"    *before_end_date* and the default interval can be configured by a new"},{"line_number":7,"context_line":"    configuration option *minutes_before_end_lease* in the [manager] section."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f1a1f67_2c6c559a","line":4,"range":{"start_line":4,"start_character":29,"end_line":4,"end_character":32},"in_reply_to":"1f1a1f67_f420769d","updated":"2017-07-19 02:21:13.000000000","message":"Done","commit_id":"963ccfe8f1382e9f62ef162a00e30e468ae46d27"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"a694cb2d5968ba7694a9cbce3b857512823ce116","unresolved":false,"context_lines":[{"line_number":12,"context_line":"  - The API parameter *before_end_notification* has been renamed"},{"line_number":13,"context_line":"    *before_end_date* which is used for setting the time for triggering actions"},{"line_number":14,"context_line":"    before the end of a lease."},{"line_number":15,"context_line":"deprecations:"},{"line_number":16,"context_line":"  - The configuration option *notify_hours_before_lease_end* in the [manager]"},{"line_number":17,"context_line":"    section has been deprecated and will be removed in Queens. Use a new"},{"line_number":18,"context_line":"    configuration option *minutes_before_end_lease* instead. The default"},{"line_number":19,"context_line":"    value for the configuration option has been changed from 48 hours to 60"},{"line_number":20,"context_line":"    mins."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f1a1f67_545dea12","line":20,"range":{"start_line":15,"start_character":0,"end_line":20,"end_character":9},"updated":"2017-07-18 15:49:57.000000000","message":"This is more than a deprecation: if notify_hours_before_lease_end is still used, it would behave differently because the value is now used as minutes rather than hours.","commit_id":"963ccfe8f1382e9f62ef162a00e30e468ae46d27"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"5e0b2d731b0ecacc2b6076a5eb28caab48d2a470","unresolved":false,"context_lines":[{"line_number":12,"context_line":"  - The API parameter *before_end_notification* has been renamed"},{"line_number":13,"context_line":"    *before_end_date* which is used for setting the time for triggering actions"},{"line_number":14,"context_line":"    before the end of a lease."},{"line_number":15,"context_line":"deprecations:"},{"line_number":16,"context_line":"  - The configuration option *notify_hours_before_lease_end* in the [manager]"},{"line_number":17,"context_line":"    section has been deprecated and will be removed in Queens. Use a new"},{"line_number":18,"context_line":"    configuration option *minutes_before_end_lease* instead. The default"},{"line_number":19,"context_line":"    value for the configuration option has been changed from 48 hours to 60"},{"line_number":20,"context_line":"    mins."}],"source_content_type":"text/x-yaml","patch_set":9,"id":"1f1a1f67_6c580d87","line":20,"range":{"start_line":15,"start_character":0,"end_line":20,"end_character":9},"in_reply_to":"1f1a1f67_545dea12","updated":"2017-07-19 02:21:13.000000000","message":"I\u0027ve changed it to an upgrade note that describes the notify_hours_before_lease_end config is not used anymore.","commit_id":"963ccfe8f1382e9f62ef162a00e30e468ae46d27"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"86b6f4a1916ec7e7759388c82058cca3636ca2d7","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  - The configuration option *notify_hours_before_lease_end* in the [manager]"},{"line_number":16,"context_line":"    section has been removed. Use a new configuration option"},{"line_number":17,"context_line":"    *minutes_before_end_lease* instead. The default value for the configuration"},{"line_number":18,"context_line":"    option has been changed from 48 hours to 60 mins."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"ff346bd7_e966f251","line":18,"range":{"start_line":18,"start_character":48,"end_line":18,"end_character":52},"updated":"2017-07-24 13:44:49.000000000","message":"minutes","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"},{"author":{"_account_id":23840,"name":"Hiroaki Kobayashi","email":"kobayashi.hiroaki@lab.ntt.co.jp","username":"hiro-kobayashi"},"change_message_id":"e81257a4402dec0ebb8c54e21764387d199a0837","unresolved":false,"context_lines":[{"line_number":15,"context_line":"  - The configuration option *notify_hours_before_lease_end* in the [manager]"},{"line_number":16,"context_line":"    section has been removed. Use a new configuration option"},{"line_number":17,"context_line":"    *minutes_before_end_lease* instead. The default value for the configuration"},{"line_number":18,"context_line":"    option has been changed from 48 hours to 60 mins."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"ff346bd7_90bf74cf","line":18,"range":{"start_line":18,"start_character":48,"end_line":18,"end_character":52},"in_reply_to":"ff346bd7_e966f251","updated":"2017-07-25 02:09:59.000000000","message":"Done","commit_id":"0d52530c9a41a9e44a8dc2bfe7d4674c81047570"}]}
