)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e1a976229e352bedef3974502861cf60be9149cd","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The rescue api should honor enable_instance_password conf"},{"line_number":10,"context_line":"setting just like server creation and rebuild does, this"},{"line_number":11,"context_line":"patch fixes both v2 and v3."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-bug #1213866"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ie8422979940bbde8c5749fcd3d6c735e88f78c6a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAS3%2F%2FeXU%3D","line":12,"updated":"2013-09-26 05:17:35.000000000","message":"Also need +DocImpact","commit_id":"1079f2473520fa28112c2b0cea4d410a48185912"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"7c7af76680284f7a9319d0891f80ce84141d1000","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The rescue api should honor enable_instance_password conf"},{"line_number":10,"context_line":"setting just like server creation and rebuild does, this"},{"line_number":11,"context_line":"patch fixes both v2 and v3."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-bug #1213866"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ie8422979940bbde8c5749fcd3d6c735e88f78c6a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAS3%2F%2FeW4%3D","line":12,"in_reply_to":"AAAAS3%2F%2FeXU%3D","updated":"2013-09-26 05:19:55.000000000","message":"Done","commit_id":"1079f2473520fa28112c2b0cea4d410a48185912"}],"nova/api/openstack/compute/contrib/rescue.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7e75a08ffd9c18a26bddc95167c7168a85e45ebb","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if CONF.enable_instance_password:"},{"line_number":74,"context_line":"            return {\u0027adminPass\u0027: password}"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            return {}"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"},{"line_number":79,"context_line":"    def _unrescue(self, req, id, body):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2FeUU%3D","line":76,"updated":"2013-09-26 05:52:36.000000000","message":"return webob.Response(status_int\u003d202) at here?","commit_id":"e63684d099240c2209a62aa469b006804062b928"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"c86d61fa2d72b5f18563270af9fb88fa1dc1afd4","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if CONF.enable_instance_password:"},{"line_number":74,"context_line":"            return {\u0027adminPass\u0027: password}"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            return {}"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"},{"line_number":79,"context_line":"    def _unrescue(self, req, id, body):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2FeM4%3D","line":76,"in_reply_to":"AAAAS3%2F%2FeUU%3D","updated":"2013-09-26 06:13:28.000000000","message":"same as previous.","commit_id":"e63684d099240c2209a62aa469b006804062b928"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"4afc6c752518e0b3b8f1b18b62b318aedf16d8ac","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if CONF.enable_instance_password:"},{"line_number":74,"context_line":"            return {\u0027adminPass\u0027: password}"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            return {}"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"},{"line_number":79,"context_line":"    def _unrescue(self, req, id, body):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2FeFs%3D","line":76,"in_reply_to":"AAAAS3%2F%2FeUU%3D","updated":"2013-09-26 07:06:17.000000000","message":"we can\u0027t change a success code for the V2 API, but we can change it for the V3 API","commit_id":"e63684d099240c2209a62aa469b006804062b928"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"028fdd992670f20b90ecffc3248512d3521f9141","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if CONF.enable_instance_password:"},{"line_number":74,"context_line":"            return {\u0027adminPass\u0027: password}"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            return webob.Response(status_int\u003d200)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"},{"line_number":79,"context_line":"    def _unrescue(self, req, id, body):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2FeAM%3D","line":76,"updated":"2013-09-26 08:02:58.000000000","message":"Thinking about this a bit more I\u0027m not sure we should making any change here to the V2 API at all. See \n\nhttps://wiki.openstack.org/wiki/APIChangeGuidelines\n\nThe instance password could well be bogus and misleading but other than doesn\u0027t actually cause any harm. but by removing it we could potentially break apps which depend on this being returned. So I\u0027m thinking the lesser evil is just to leave it for the V2 API but would like to know what other reviewers think","commit_id":"0417c824419d68f1ffa34b8c22972d3f66fdccc0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2a2674dab7b80c96e042bacc2aa83ace304c5b38","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if CONF.enable_instance_password:"},{"line_number":74,"context_line":"            return {\u0027adminPass\u0027: password}"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            return webob.Response(status_int\u003d200)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"},{"line_number":79,"context_line":"    def _unrescue(self, req, id, body):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fd%2FI%3D","line":76,"in_reply_to":"AAAAS3%2F%2FeAM%3D","updated":"2013-09-26 08:15:51.000000000","message":"agree with Chris","commit_id":"0417c824419d68f1ffa34b8c22972d3f66fdccc0"}],"nova/api/openstack/compute/plugins/v3/rescue.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7e75a08ffd9c18a26bddc95167c7168a85e45ebb","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if CONF.enable_instance_password:"},{"line_number":76,"context_line":"            return {\u0027admin_pass\u0027: password}"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return {}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @extensions.expected_errors((404, 409))"},{"line_number":81,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2FeUY%3D","line":78,"updated":"2013-09-26 05:52:36.000000000","message":"return webob.Response(status_int\u003d202) at here?","commit_id":"e63684d099240c2209a62aa469b006804062b928"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"c86d61fa2d72b5f18563270af9fb88fa1dc1afd4","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if CONF.enable_instance_password:"},{"line_number":76,"context_line":"            return {\u0027admin_pass\u0027: password}"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return {}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @extensions.expected_errors((404, 409))"},{"line_number":81,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2FeNE%3D","line":78,"in_reply_to":"AAAAS3%2F%2FeUY%3D","updated":"2013-09-26 06:13:28.000000000","message":"after searching the existing code, I know your point, but it\u0027s slightly different in this case I think current way is none invasive, looks better to me, besides the current way avoid to hard code response code as well as webbob implementation, thoughts?","commit_id":"e63684d099240c2209a62aa469b006804062b928"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"028fdd992670f20b90ecffc3248512d3521f9141","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if CONF.enable_instance_password:"},{"line_number":76,"context_line":"            return {\u0027admin_pass\u0027: password}"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return webob.Response(status_int\u003d204)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @extensions.expected_errors((404, 409))"},{"line_number":81,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2FeAo%3D","line":78,"updated":"2013-09-26 08:02:58.000000000","message":"So I see now that rescue is an rpc cast. Like unrescue it should be returning 202 and should do so regardless of whether the instance password is returned or not. So you can just do a return {} here. And use wsgi.response(202) decorator for the function.\n\nYou still can\u0027t change the V2 API though.","commit_id":"0417c824419d68f1ffa34b8c22972d3f66fdccc0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a223ca1645ccf0c4df958a8d20ace09a3dfe00aa","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if CONF.enable_instance_password:"},{"line_number":76,"context_line":"            return {\u0027admin_pass\u0027: password}"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return webob.Response(status_int\u003d204)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @extensions.expected_errors((404, 409))"},{"line_number":81,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2FeAQ%3D","line":78,"updated":"2013-09-26 08:00:31.000000000","message":"There should be \u0027202\u0027, rescue is async. And should we add api sample for this case? for we can generate api spec. @Chris, any idea?","commit_id":"0417c824419d68f1ffa34b8c22972d3f66fdccc0"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"a7b3b34cb05644573d0f4af796e5841e7a7d831f","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if CONF.enable_instance_password:"},{"line_number":76,"context_line":"            return {\u0027admin_pass\u0027: password}"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return webob.Response(status_int\u003d204)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @extensions.expected_errors((404, 409))"},{"line_number":81,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fd5E%3D","line":78,"in_reply_to":"AAAAS3%2F%2Fd%2BI%3D","updated":"2013-09-26 08:36:53.000000000","message":"return {} is more consistency with the enable password from client perspective IMHO","commit_id":"0417c824419d68f1ffa34b8c22972d3f66fdccc0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2a2674dab7b80c96e042bacc2aa83ace304c5b38","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        if CONF.enable_instance_password:"},{"line_number":76,"context_line":"            return {\u0027admin_pass\u0027: password}"},{"line_number":77,"context_line":"        else:"},{"line_number":78,"context_line":"            return webob.Response(status_int\u003d204)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    @extensions.expected_errors((404, 409))"},{"line_number":81,"context_line":"    @wsgi.action(\u0027unrescue\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fd%2BI%3D","line":78,"in_reply_to":"AAAAS3%2F%2FeAo%3D","updated":"2013-09-26 08:15:51.000000000","message":"Ops, Chris is right, we should use wsgi.response(202). sorry for that. But why return \u0027{}\u0027, not just \u0027return\u0027? Looks like return no content is better.","commit_id":"0417c824419d68f1ffa34b8c22972d3f66fdccc0"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e1a976229e352bedef3974502861cf60be9149cd","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.BoolOpt(\u0027enable_instance_password\u0027,"},{"line_number":46,"context_line":"                default\u003dTrue,"},{"line_number":47,"context_line":"                help\u003d\u0027Allows use of instance password during \u0027"},{"line_number":48,"context_line":"                     \u0027server creation or rescue\u0027),"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":"CONF \u003d cfg.CONF"},{"line_number":51,"context_line":"CONF.register_opts(server_opts)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FeXY%3D","line":48,"updated":"2013-09-26 05:17:35.000000000","message":"It\u0027s a pre-existing problem but I think this help message is horribly misleading. enable_instance_password doesn\u0027t appear to control whether someone can set the instance password (assuming the hypervisor supports it) but only controls whether or not the instance password (either set or randomly generated) is returned by the API call.\n\nSo how about:\n\n\"Enables returning of the instance password by the relevant server API calls such as create, rebuild or rescue\"","commit_id":"1079f2473520fa28112c2b0cea4d410a48185912"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"7c7af76680284f7a9319d0891f80ce84141d1000","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    cfg.BoolOpt(\u0027enable_instance_password\u0027,"},{"line_number":46,"context_line":"                default\u003dTrue,"},{"line_number":47,"context_line":"                help\u003d\u0027Allows use of instance password during \u0027"},{"line_number":48,"context_line":"                     \u0027server creation or rescue\u0027),"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":"CONF \u003d cfg.CONF"},{"line_number":51,"context_line":"CONF.register_opts(server_opts)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAS3%2F%2FeXA%3D","line":48,"in_reply_to":"AAAAS3%2F%2FeXY%3D","updated":"2013-09-26 05:19:55.000000000","message":"agree, thanks.","commit_id":"1079f2473520fa28112c2b0cea4d410a48185912"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"028fdd992670f20b90ecffc3248512d3521f9141","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                default\u003dTrue,"},{"line_number":47,"context_line":"                help\u003d\u0027Enables returning of the instance password by the\u0027"},{"line_number":48,"context_line":"                     \u0027 relevant server API calls such as create, rebuild\u0027"},{"line_number":49,"context_line":"                     \u0027 or rescue\u0027),"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":"CONF \u003d cfg.CONF"},{"line_number":52,"context_line":"CONF.register_opts(server_opts)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fd%2Fg%3D","line":49,"updated":"2013-09-26 08:02:58.000000000","message":"Apologies, just thinking that perhaps should add:\n\n\"If the hypervisor does not support password injection then the password returned will not be correct.\"","commit_id":"0417c824419d68f1ffa34b8c22972d3f66fdccc0"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"a7b3b34cb05644573d0f4af796e5841e7a7d831f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                default\u003dTrue,"},{"line_number":47,"context_line":"                help\u003d\u0027Enables returning of the instance password by the\u0027"},{"line_number":48,"context_line":"                     \u0027 relevant server API calls such as create, rebuild\u0027"},{"line_number":49,"context_line":"                     \u0027 or rescue\u0027),"},{"line_number":50,"context_line":"]"},{"line_number":51,"context_line":"CONF \u003d cfg.CONF"},{"line_number":52,"context_line":"CONF.register_opts(server_opts)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAS3%2F%2Fd6w%3D","line":49,"in_reply_to":"AAAAS3%2F%2Fd%2Fg%3D","updated":"2013-09-26 08:36:53.000000000","message":"Done","commit_id":"0417c824419d68f1ffa34b8c22972d3f66fdccc0"}],"nova/tests/api/openstack/compute/plugins/v3/test_rescue.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7e75a08ffd9c18a26bddc95167c7168a85e45ebb","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        resp \u003d req.get_response(self.app)"},{"line_number":82,"context_line":"        self.assertEqual(resp.status_int, 200)"},{"line_number":83,"context_line":"        resp_json \u003d jsonutils.loads(resp.body)"},{"line_number":84,"context_line":"        self.assertTrue(\u0027admin_Pass\u0027 not in resp_json)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_rescue_of_rescued_instance(self):"},{"line_number":87,"context_line":"        body \u003d dict(rescue\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2FeUM%3D","line":84,"updated":"2013-09-26 05:52:36.000000000","message":"\u0027admin_Pass\u0027 should be \u0027admin_pass\u0027","commit_id":"e63684d099240c2209a62aa469b006804062b928"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"c86d61fa2d72b5f18563270af9fb88fa1dc1afd4","unresolved":false,"context_lines":[{"line_number":81,"context_line":"        resp \u003d req.get_response(self.app)"},{"line_number":82,"context_line":"        self.assertEqual(resp.status_int, 200)"},{"line_number":83,"context_line":"        resp_json \u003d jsonutils.loads(resp.body)"},{"line_number":84,"context_line":"        self.assertTrue(\u0027admin_Pass\u0027 not in resp_json)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_rescue_of_rescued_instance(self):"},{"line_number":87,"context_line":"        body \u003d dict(rescue\u003dNone)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2FeTY%3D","line":84,"in_reply_to":"AAAAS3%2F%2FeUM%3D","updated":"2013-09-26 06:13:28.000000000","message":"nice catch, thanks.","commit_id":"e63684d099240c2209a62aa469b006804062b928"}]}
