)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"11bd0e1d0752bd1ae97eeb56958d053139afea05","unresolved":false,"context_lines":[{"line_number":13,"context_line":"deficiency."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-Bug: #1646323"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: Idd5f5f1a90ba6ea19989c04036c922008001aefc"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"5a74a57a_43961795","line":16,"updated":"2016-12-01 10:35:47.000000000","message":"Please add:\n\n  Implements: blueprint add-lock-action-record\n\nThen ping John or Matt to make your bp approved. But not sure if that would be possible for Otaca","commit_id":"954e372dd88f267851f67f5def8fbf3a1187a08f"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"0ed06ebf0eb63f7de08125efa70c3c3c8e0526a7","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add more actions to instance action logs"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currentlly we have recorded some actions to instance action list,"},{"line_number":10,"context_line":"but there are other actions related to the instance, that are not"},{"line_number":11,"context_line":"being well logged. This patch logs remaining instance related actions"},{"line_number":12,"context_line":"to make instance action logs more comprehensive."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1a6eadb0_885e87e7","line":9,"updated":"2016-12-20 14:27:33.000000000","message":"s/Currentlly/Currently","commit_id":"71e8af576cf69c1f79cdd6303709ead4e391e1d3"}],"nova/compute/api.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fc79c8c832d629a8183a658121dad6e2c2cc62af","unresolved":false,"context_lines":[{"line_number":3345,"context_line":"        instance.locked \u003d True"},{"line_number":3346,"context_line":"        instance.locked_by \u003d \u0027owner\u0027 if is_owner else \u0027admin\u0027"},{"line_number":3347,"context_line":"        instance.save()"},{"line_number":3348,"context_line":"        self._record_action_start(context, instance, instance_actions.LOCK)"},{"line_number":3349,"context_line":""},{"line_number":3350,"context_line":"    def is_expected_locked_by(self, context, instance):"},{"line_number":3351,"context_line":"        is_owner \u003d instance.project_id \u003d\u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_a36461e5","line":3348,"range":{"start_line":3348,"start_character":0,"end_line":3348,"end_character":75},"updated":"2016-12-02 09:52:34.000000000","message":"This should be before L3345","commit_id":"954e372dd88f267851f67f5def8fbf3a1187a08f"},{"author":{"_account_id":24224,"name":"Ankit Agarwal","email":"ankit.jsr167@gmail.com","username":"aka1293"},"change_message_id":"f56efa2fda7969a4fb15b5f2bbab2e568972293e","unresolved":false,"context_lines":[{"line_number":3345,"context_line":"        instance.locked \u003d True"},{"line_number":3346,"context_line":"        instance.locked_by \u003d \u0027owner\u0027 if is_owner else \u0027admin\u0027"},{"line_number":3347,"context_line":"        instance.save()"},{"line_number":3348,"context_line":"        self._record_action_start(context, instance, instance_actions.LOCK)"},{"line_number":3349,"context_line":""},{"line_number":3350,"context_line":"    def is_expected_locked_by(self, context, instance):"},{"line_number":3351,"context_line":"        is_owner \u003d instance.project_id \u003d\u003d context.project_id"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_f8509b60","line":3348,"range":{"start_line":3348,"start_character":0,"end_line":3348,"end_character":75},"in_reply_to":"3a71b18c_a36461e5","updated":"2016-12-03 10:19:14.000000000","message":"Suggestion: Upgrade current fix to log other instance related actions as well, such as- create snapshot, attach/detach volume, attach/detach security groups etc. Would make instance action logs more comprehensive.","commit_id":"954e372dd88f267851f67f5def8fbf3a1187a08f"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"fc79c8c832d629a8183a658121dad6e2c2cc62af","unresolved":false,"context_lines":[{"line_number":3362,"context_line":"        instance.locked \u003d False"},{"line_number":3363,"context_line":"        instance.locked_by \u003d None"},{"line_number":3364,"context_line":"        instance.save()"},{"line_number":3365,"context_line":"        self._record_action_start(context, instance, instance_actions.UNLOCK)"},{"line_number":3366,"context_line":""},{"line_number":3367,"context_line":"    @check_instance_lock"},{"line_number":3368,"context_line":"    @check_instance_cell"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a71b18c_e35e5911","line":3365,"range":{"start_line":3365,"start_character":0,"end_line":3365,"end_character":77},"updated":"2016-12-02 09:52:34.000000000","message":"ditto","commit_id":"954e372dd88f267851f67f5def8fbf3a1187a08f"},{"author":{"_account_id":24224,"name":"Ankit Agarwal","email":"ankit.jsr167@gmail.com","username":"aka1293"},"change_message_id":"4f76ec5d76d60035af6b6d37beb4c76231541617","unresolved":false,"context_lines":[{"line_number":3549,"context_line":"            raise exception.InvalidDevicePath(path\u003ddevice)"},{"line_number":3550,"context_line":""},{"line_number":3551,"context_line":"        self._record_action_start(context, instance,"},{"line_number":3552,"context_line":"                                  instance_actions.ATTACH_VOLUME)"},{"line_number":3553,"context_line":"        is_shelved_offloaded \u003d instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED"},{"line_number":3554,"context_line":"        if is_shelved_offloaded:"},{"line_number":3555,"context_line":"            return self._attach_volume_shelved_offloaded(context,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6eadb0_ca189378","line":3552,"updated":"2016-12-20 02:48:05.000000000","message":"Good idea to log \u0027volume id\u0027 along with the ATTACH_VOLUME/DETACH_VOLUME string?\nThis is because, \u0027n\u0027 number of volumes might be attached/detached to/from an instance. Looking at the action logs in Horizon, it would be helpful for the user to know, which volume got attached/detached (specially during debugging)\n\nSimilar action for create snapshot, attach/detach security groups etc.","commit_id":"7b0fa1347f9aba9cb2f504c1073983aabcd3cfd0"},{"author":{"_account_id":24224,"name":"Ankit Agarwal","email":"ankit.jsr167@gmail.com","username":"aka1293"},"change_message_id":"c5a4cfe73439cacacbc2c90da377d2b7f2de05a5","unresolved":false,"context_lines":[{"line_number":3603,"context_line":"                                    vm_states.SHELVED_OFFLOADED])"},{"line_number":3604,"context_line":"    def detach_volume(self, context, instance, volume):"},{"line_number":3605,"context_line":"        \"\"\"Detach a volume from an instance.\"\"\""},{"line_number":3606,"context_line":"        event \u003d instance_actions.DETACH_VOLUME % volume[\u0027id\u0027]"},{"line_number":3607,"context_line":"        self._record_action_start(context, instance, event)"},{"line_number":3608,"context_line":"        if instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED:"},{"line_number":3609,"context_line":"            self._detach_volume_shelved_offloaded(context, instance, volume)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_a57c4eec","line":3606,"updated":"2016-12-20 14:11:29.000000000","message":"Can make this assignment consistent across other actions as well.\ne.g. : event \u003d instance_actions.ATTACH_VOLUME % volume_id\n       self._record_action_start(context, instance, event)\n\nSimilarly for others actions- snapshot, port attach/detach etc.\n\nOR\n\nskip this assignment, and mention it in _record_action_start(), as done in other actions.\n\nGood to keep a consistent code.","commit_id":"71e8af576cf69c1f79cdd6303709ead4e391e1d3"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"0ed06ebf0eb63f7de08125efa70c3c3c8e0526a7","unresolved":false,"context_lines":[{"line_number":3603,"context_line":"                                    vm_states.SHELVED_OFFLOADED])"},{"line_number":3604,"context_line":"    def detach_volume(self, context, instance, volume):"},{"line_number":3605,"context_line":"        \"\"\"Detach a volume from an instance.\"\"\""},{"line_number":3606,"context_line":"        event \u003d instance_actions.DETACH_VOLUME % volume[\u0027id\u0027]"},{"line_number":3607,"context_line":"        self._record_action_start(context, instance, event)"},{"line_number":3608,"context_line":"        if instance.vm_state \u003d\u003d vm_states.SHELVED_OFFLOADED:"},{"line_number":3609,"context_line":"            self._detach_volume_shelved_offloaded(context, instance, volume)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a6eadb0_0855174f","line":3606,"in_reply_to":"1a6eadb0_a57c4eec","updated":"2016-12-20 14:27:33.000000000","message":"Agree with Ankit. Simply combining these two lines into a single _record_action_start() call would be a nice style improvement.","commit_id":"71e8af576cf69c1f79cdd6303709ead4e391e1d3"},{"author":{"_account_id":24224,"name":"Ankit Agarwal","email":"ankit.jsr167@gmail.com","username":"aka1293"},"change_message_id":"4d5f1a796220766582cb3a60a17bbfad70f84b5b","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"def record_action_start(context, instance, action, **kw):"},{"line_number":177,"context_line":"    objects.InstanceAction.action_start(context, instance.uuid,"},{"line_number":178,"context_line":"                                        action % kw, want_result\u003dFalse)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_32c21eea","line":177,"updated":"2016-12-21 09:14:01.000000000","message":"This is displaying the action in the following format in Horizon:\ne.g.:\n     attach-volume {\u0027volume_id\u0027: u\u00278ebce95f-0447-431b-a7cb-c3e60aa591f2\u0027}\n\nThis does not look very clean. We only need to display the id/name. \n\nShouldn\u0027t displaying \u0027action \u003cid/name\u003e\u0027 appear better?","commit_id":"e5d17c74fdbd9bd0de95d8beb184e27d8ca52e27"},{"author":{"_account_id":21479,"name":"int32bit","email":"krystism@gmail.com","username":"int32bit"},"change_message_id":"0ccc4cec17f953e6f1f5dd112459ac4ecf2b1400","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"def record_action_start(context, instance, action, **kw):"},{"line_number":177,"context_line":"    objects.InstanceAction.action_start(context, instance.uuid,"},{"line_number":178,"context_line":"                                        action % kw, want_result\u003dFalse)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_f5524666","line":177,"in_reply_to":"1a6eadb0_32c21eea","updated":"2016-12-21 11:16:12.000000000","message":"I really don\u0027t care about horizon how to display it, IMO,  we just need expose it to API, and horizon should update to fit it.","commit_id":"e5d17c74fdbd9bd0de95d8beb184e27d8ca52e27"},{"author":{"_account_id":24224,"name":"Ankit Agarwal","email":"ankit.jsr167@gmail.com","username":"aka1293"},"change_message_id":"4d5f1a796220766582cb3a60a17bbfad70f84b5b","unresolved":false,"context_lines":[{"line_number":4718,"context_line":"            raise exception.SecurityGroupExistsForInstance("},{"line_number":4719,"context_line":"                                        security_group_id\u003dsecurity_group[\u0027id\u0027],"},{"line_number":4720,"context_line":"                                        instance_id\u003dinstance_uuid)"},{"line_number":4721,"context_line":"        record_action_start(context, instance,"},{"line_number":4722,"context_line":"                            instance_actions.ADD_SECGROUP,"},{"line_number":4723,"context_line":"                            secgroup_id\u003dsecurity_group[\u0027id\u0027])"},{"line_number":4724,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_45951131","line":4721,"updated":"2016-12-21 09:14:01.000000000","message":"Tried logging security group attach/detach action. It does not appear on Horizon. \nIs it tested well? (I am sure it must be, just confirming)","commit_id":"e5d17c74fdbd9bd0de95d8beb184e27d8ca52e27"},{"author":{"_account_id":21479,"name":"int32bit","email":"krystism@gmail.com","username":"int32bit"},"change_message_id":"0ccc4cec17f953e6f1f5dd112459ac4ecf2b1400","unresolved":false,"context_lines":[{"line_number":4718,"context_line":"            raise exception.SecurityGroupExistsForInstance("},{"line_number":4719,"context_line":"                                        security_group_id\u003dsecurity_group[\u0027id\u0027],"},{"line_number":4720,"context_line":"                                        instance_id\u003dinstance_uuid)"},{"line_number":4721,"context_line":"        record_action_start(context, instance,"},{"line_number":4722,"context_line":"                            instance_actions.ADD_SECGROUP,"},{"line_number":4723,"context_line":"                            secgroup_id\u003dsecurity_group[\u0027id\u0027])"},{"line_number":4724,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1a6eadb0_d8c57f8e","line":4721,"in_reply_to":"1a6eadb0_45951131","updated":"2016-12-21 11:16:12.000000000","message":"I tested via Nova CLI, but really not horizon.","commit_id":"e5d17c74fdbd9bd0de95d8beb184e27d8ca52e27"},{"author":{"_account_id":24224,"name":"Ankit Agarwal","email":"ankit.jsr167@gmail.com","username":"aka1293"},"change_message_id":"b89bc24929bb8dac1b009010f8325b4f1939e73d","unresolved":false,"context_lines":[{"line_number":4535,"context_line":"        super(SecurityGroupAPI, self).__init__(**kwargs)"},{"line_number":4536,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":4537,"context_line":""},{"line_number":4538,"context_line":"    def _record_action_start(self, context, instance, action):"},{"line_number":4539,"context_line":"        objects.InstanceAction.action_start(context, instance.uuid,"},{"line_number":4540,"context_line":"                                            action, want_result\u003dFalse)"},{"line_number":4541,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da4df55a_5e69b9bd","line":4538,"updated":"2016-12-23 06:06:52.000000000","message":"Why is it required here? From what I can see, security group attach/detach action is not being recorded/logged here. Correct me if I am wrong.","commit_id":"08e41e2e42588cc91abc7ec5a0c092fba98027de"}],"nova/compute/instance_actions.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"17cb5b887866ba4a18ab33d5ccaa179d0b912c8f","unresolved":false,"context_lines":[{"line_number":55,"context_line":"BACKUP \u003d \u0027backup %(name)s\u0027"},{"line_number":56,"context_line":"LOCK \u003d \u0027lock\u0027"},{"line_number":57,"context_line":"UNLOCK \u003d \u0027unlock\u0027"},{"line_number":58,"context_line":"ATTACH_VOLUME \u003d \u0027attach volume %(volume_id)s\u0027"},{"line_number":59,"context_line":"DETACH_VOLUME \u003d \u0027detach volume %(volume_id)s\u0027"},{"line_number":60,"context_line":"SWAP_VOLUME \u003d \u0027swap volume %(old_volume_id)s with %(new_volume_id)s\u0027"},{"line_number":61,"context_line":"ATTACH_INTERFACE \u003d \u0027attach-interface %(port_id)s\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"da4df55a_6033f7ab","line":58,"updated":"2016-12-26 16:47:25.000000000","message":"Note the comment at line #25: \"The naming style of instance actions should be snake_case, as it will consistent with the API names.\"\n\nI get that you want to have contextual information included, but maybe it\u0027s better to store it in the message attribute of InstanceAction object?","commit_id":"549ec59485b7cb6c44b007ec4d41b7fdc2b14bf2"},{"author":{"_account_id":21479,"name":"int32bit","email":"krystism@gmail.com","username":"int32bit"},"change_message_id":"f49d50336eb01d55b09ba5448a1bfd4c3d8b198a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"BACKUP \u003d \u0027backup %(name)s\u0027"},{"line_number":56,"context_line":"LOCK \u003d \u0027lock\u0027"},{"line_number":57,"context_line":"UNLOCK \u003d \u0027unlock\u0027"},{"line_number":58,"context_line":"ATTACH_VOLUME \u003d \u0027attach volume %(volume_id)s\u0027"},{"line_number":59,"context_line":"DETACH_VOLUME \u003d \u0027detach volume %(volume_id)s\u0027"},{"line_number":60,"context_line":"SWAP_VOLUME \u003d \u0027swap volume %(old_volume_id)s with %(new_volume_id)s\u0027"},{"line_number":61,"context_line":"ATTACH_INTERFACE \u003d \u0027attach-interface %(port_id)s\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"da4df55a_95f57658","line":58,"in_reply_to":"da4df55a_6033f7ab","updated":"2016-12-27 05:31:41.000000000","message":"Yea, but I found there are several exists actions seems not follow this as well, like \u0027live-migration\u0027, \u0027changePassword\u0027, etc.\n\nI agree with you that we should store this in the message attribute, but currently I didn\u0027t find any way to pass this argument from instance action object. We need update these interfaces and propose specs.","commit_id":"549ec59485b7cb6c44b007ec4d41b7fdc2b14bf2"}],"releasenotes/notes/add-lock-action-record-c6fc3e863e86cc0a.yaml":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"11bd0e1d0752bd1ae97eeb56958d053139afea05","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"  - Add lock and unlock record to instance action list."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5a74a57a_e3d2c35a","line":2,"updated":"2016-12-01 10:35:47.000000000","message":"Don\u0027t you have to use \u0027release\u0027 here ?","commit_id":"954e372dd88f267851f67f5def8fbf3a1187a08f"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"11bd0e1d0752bd1ae97eeb56958d053139afea05","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"  - Add lock and unlock record to instance action list."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5a74a57a_e30723c7","line":4,"updated":"2016-12-01 10:35:47.000000000","message":"Please can you elaborate a little bit more, we use this information to provide release note, so without context of the patch it could be difficult to understand.","commit_id":"954e372dd88f267851f67f5def8fbf3a1187a08f"}],"releasenotes/notes/add-more-actions-to-instance-action-logs-c6fc3e863e86cc0a.yaml":[{"author":{"_account_id":24224,"name":"Ankit Agarwal","email":"ankit.jsr167@gmail.com","username":"aka1293"},"change_message_id":"a173c66547c309e62daba9c695a328c713f251ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"da4df55a_555965fd","line":14,"updated":"2016-12-26 06:43:18.000000000","message":"Please add \u0027snapshot\u0027 as well.","commit_id":"ccfafac521fbbc012f18c641728c9de1dfffc9ca"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"17cb5b887866ba4a18ab33d5ccaa179d0b912c8f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    More instance actions have been added to the instance action list to make"},{"line_number":5,"context_line":"    instance logs more comprehensive."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"da4df55a_00f06bc8","line":2,"updated":"2016-12-26 16:47:25.000000000","message":"nit: not sure this is an upgrade concern - we just add new actions that did not exist before, it\u0027s not like we change some existing ones","commit_id":"549ec59485b7cb6c44b007ec4d41b7fdc2b14bf2"},{"author":{"_account_id":21479,"name":"int32bit","email":"krystism@gmail.com","username":"int32bit"},"change_message_id":"f49d50336eb01d55b09ba5448a1bfd4c3d8b198a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    More instance actions have been added to the instance action list to make"},{"line_number":5,"context_line":"    instance logs more comprehensive."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"da4df55a_f58b22c1","line":2,"in_reply_to":"da4df55a_00f06bc8","updated":"2016-12-27 05:31:41.000000000","message":"But I think we just upgrade instance action log to support more,  really not sure my thought whether is right or not. Please let me know the better header you suggest to use, thanks.","commit_id":"549ec59485b7cb6c44b007ec4d41b7fdc2b14bf2"}]}
