)]}'
{"nova/api/openstack/compute/plugins/v3/server_password.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"2fd71178e1a4ee970051eff37006ab96e1f5a4f5","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"ALIAS \u003d \u0027os-server-password\u0027"},{"line_number":26,"context_line":"authorize \u003d extensions.extension_authorizer(\u0027compute\u0027, \u0027v3:\u0027 + ALIAS)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class ServerPasswordController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_ff5fee72","side":"PARENT","line":26,"updated":"2015-01-15 05:46:39.000000000","message":"we can\u0027t separate rule for each api now, because the spec didn\u0027t get apprvoed yet. https://review.openstack.org/127863, let wait for a moment.","commit_id":"9ca7425811e07ee3ba2e10f3a04fcf9e9ca1f8a9"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"cf94eb9d4a3a35ece45cb2e2af250d7834a884c2","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def index(self, req, server_id):"},{"line_number":36,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":37,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":38,"context_line":"        authorize(context, target\u003dinstance)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        passw \u003d password.extract_password(instance)"},{"line_number":41,"context_line":"        return {\u0027password\u0027: passw or \u0027\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_6f48f387","line":38,"updated":"2015-01-29 06:58:59.000000000","message":"We don\u0027t need to pass target to authrize() now, please see the comment on https://review.openstack.org/#/c/143393/","commit_id":"1d698734700e983633da08417de16b95247734f0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"03fa24486fa6cfc2835dcf4772783665c836f751","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def index(self, req, server_id):"},{"line_number":36,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":37,"context_line":"        instance \u003d common.get_instance(self.compute_api, context, server_id)"},{"line_number":38,"context_line":"        authorize(context, target\u003dinstance)"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        passw \u003d password.extract_password(instance)"},{"line_number":41,"context_line":"        return {\u0027password\u0027: passw or \u0027\u0027}"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_98071e1c","line":38,"in_reply_to":"fa81d914_6f48f387","updated":"2015-01-29 15:05:46.000000000","message":"yes, we change the plan","commit_id":"1d698734700e983633da08417de16b95247734f0"}],"nova/tests/unit/api/openstack/compute/contrib/test_server_password.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"82668ee5f0b71ff5d7042a746a779d6d12ac99ce","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    delete_call \u003d \u0027self.controller.delete\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"class ServerPasswordPolicyEnforcement(ServerPasswordTestV21,"},{"line_number":81,"context_line":"                                      common.TestPolicyEnforcementBase):"},{"line_number":82,"context_line":"    def setUp(self):"},{"line_number":83,"context_line":"        super(ServerPasswordPolicyEnforcement, self).setUp()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_614fa7be","line":80,"updated":"2015-01-16 16:18:25.000000000","message":"ditto\n\nI think we need V21 suffix to indicate it\u0027s a V21 only check\nit\u0027s consistent to previous classes","commit_id":"1d698734700e983633da08417de16b95247734f0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"03fa24486fa6cfc2835dcf4772783665c836f751","unresolved":false,"context_lines":[{"line_number":80,"context_line":"class ServerPasswordPolicyEnforcement(ServerPasswordTestV21,"},{"line_number":81,"context_line":"                                      common.TestPolicyEnforcementBase):"},{"line_number":82,"context_line":"    def setUp(self):"},{"line_number":83,"context_line":"        super(ServerPasswordPolicyEnforcement, self).setUp()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @common.TestPolicyEnforcementBase.policy_enforcement_failed_test("},{"line_number":86,"context_line":"        \"compute_extension:v3:os-server-password\", \"project:non_fake\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa81d914_4b14ee43","line":83,"updated":"2015-01-29 15:05:46.000000000","message":"this is useless","commit_id":"1d698734700e983633da08417de16b95247734f0"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b4ca3b5fe2015002f8cd770c36e0a9d883d93d3c","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def setUp(self):"},{"line_number":83,"context_line":"        super(ServerPasswordPolicyEnforcementV21, self).setUp()"},{"line_number":84,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_password_policy_failed(self):"},{"line_number":87,"context_line":"        rule_name \u003d \"compute_extension:v3:os-server-password\""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_22dfbf3b","line":84,"updated":"2015-02-17 22:02:51.000000000","message":"inherit from ServerPasswordTestV21\nthen why create this?\n\nuse this one? \nself.fake_req \u003d fakes.HTTPRequest.blank(\u0027\u0027)","commit_id":"e032c677e1d55211227664f9b5d21513b3b3ea70"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"b5b48bedc9f1e821bfb7e194323abe408adf74fe","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def setUp(self):"},{"line_number":83,"context_line":"        super(ServerPasswordPolicyEnforcementV21, self).setUp()"},{"line_number":84,"context_line":"        self.req \u003d fakes.HTTPRequest.blank(\u0027\u0027)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_password_policy_failed(self):"},{"line_number":87,"context_line":"        rule_name \u003d \"compute_extension:v3:os-server-password\""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_3ae80610","line":84,"in_reply_to":"da86d52c_22dfbf3b","updated":"2015-02-23 06:19:20.000000000","message":"thanks, jichenjc, my bad, it should inherit from nodbtest.","commit_id":"e032c677e1d55211227664f9b5d21513b3b3ea70"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b4ca3b5fe2015002f8cd770c36e0a9d883d93d3c","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        self.assertEqual("},{"line_number":105,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":106,"context_line":"            exc.format_message())"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_a24e4f36","line":106,"updated":"2015-02-17 22:02:51.000000000","message":"I didn\u0027t catch up the common code merged or not\nbut I think the function are very similar\n\nonly function name is different, consolidate them , possible?","commit_id":"e032c677e1d55211227664f9b5d21513b3b3ea70"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"b5b48bedc9f1e821bfb7e194323abe408adf74fe","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"        self.assertEqual("},{"line_number":105,"context_line":"            \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":106,"context_line":"            exc.format_message())"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba7be1f8_5ae3fa32","line":106,"in_reply_to":"da86d52c_a24e4f36","updated":"2015-02-23 06:19:20.000000000","message":"Done","commit_id":"e032c677e1d55211227664f9b5d21513b3b3ea70"},{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"f8d0ec2df446264cfe7269cac30b9aa3719fa516","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self._test_policy_failed(self.controller.index, rule_name)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def test_clear_password_policy_failed(self):"},{"line_number":102,"context_line":"        rule_name \u003d \"compute_extension:v3:os-server-password\""},{"line_number":103,"context_line":"        self._test_policy_failed(self.controller.clear, rule_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_84ab301c","line":102,"updated":"2015-02-24 04:43:49.000000000","message":"All tests use the same rule_name, so it seems unnecessary to pass \"rule_name\" as the argument to _test_policy_failed for simple code.","commit_id":"e794dbe5d118b1383d48d56f9125cdcf4636b632"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"059c882f175ca02e56a33566af91a5540959d018","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        self._test_policy_failed(self.controller.index, rule_name)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    def test_clear_password_policy_failed(self):"},{"line_number":102,"context_line":"        rule_name \u003d \"compute_extension:v3:os-server-password\""},{"line_number":103,"context_line":"        self._test_policy_failed(self.controller.clear, rule_name)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba7be1f8_9da27349","line":102,"in_reply_to":"ba7be1f8_84ab301c","updated":"2015-02-25 01:26:59.000000000","message":"rule_name will be separated in feature.","commit_id":"e794dbe5d118b1383d48d56f9125cdcf4636b632"}]}
