)]}'
{"nova/api/openstack/compute/plugins/v3/servers.py":[{"author":{"_account_id":9533,"name":"Eiichi Aikawa","email":"aikawa@mxk.nes.nec.co.jp","username":"EiichiAikawa"},"change_message_id":"cd5bfcb78d1d38f0f769adc7a28cddbb1f94810b","unresolved":false,"context_lines":[{"line_number":469,"context_line":"    @validation.schema(schema_server_create)"},{"line_number":470,"context_line":"    def create(self, req, body):"},{"line_number":471,"context_line":"        \"\"\"Creates a new server for a given user.\"\"\""},{"line_number":472,"context_line":"        if not self.is_valid_body(body, \u0027server\u0027):"},{"line_number":473,"context_line":"            raise exc.HTTPBadRequest(_(\"The request body is invalid\"))"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F92GM%3D","line":472,"updated":"2014-02-03 11:41:04.000000000","message":"I think this and next line should be deleted.","commit_id":"1f2cdd6f775efccea306f0ac49ca84078111168a"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"611f45e4c0daafe0a84f861208a49353a84d2dd9","unresolved":false,"context_lines":[{"line_number":469,"context_line":"    @validation.schema(schema_server_create)"},{"line_number":470,"context_line":"    def create(self, req, body):"},{"line_number":471,"context_line":"        \"\"\"Creates a new server for a given user.\"\"\""},{"line_number":472,"context_line":"        if not self.is_valid_body(body, \u0027server\u0027):"},{"line_number":473,"context_line":"            raise exc.HTTPBadRequest(_(\"The request body is invalid\"))"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9yFk%3D","line":472,"in_reply_to":"AAAAUH%2F92GM%3D","updated":"2014-02-04 00:22:54.000000000","message":"It\u0027s out of scope and this should be done in https://review.openstack.org/#/c/67824\nisn\u0027t it? But, in above patch, this code remains at latest source...","commit_id":"1f2cdd6f775efccea306f0ac49ca84078111168a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"29e9e77fef125069442f76655e64c0f641d4582c","unresolved":false,"context_lines":[{"line_number":469,"context_line":"    @validation.schema(schema_server_create)"},{"line_number":470,"context_line":"    def create(self, req, body):"},{"line_number":471,"context_line":"        \"\"\"Creates a new server for a given user.\"\"\""},{"line_number":472,"context_line":"        if not self.is_valid_body(body, \u0027server\u0027):"},{"line_number":473,"context_line":"            raise exc.HTTPBadRequest(_(\"The request body is invalid\"))"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F9yEo%3D","line":472,"in_reply_to":"AAAAUH%2F9yFk%3D","updated":"2014-02-04 00:25:50.000000000","message":"This validation works with this patch, and I think this patch should remove this as Eiichi said.\nI will update this patch later.","commit_id":"1f2cdd6f775efccea306f0ac49ca84078111168a"},{"author":{"_account_id":9533,"name":"Eiichi Aikawa","email":"aikawa@mxk.nes.nec.co.jp","username":"EiichiAikawa"},"change_message_id":"cd5bfcb78d1d38f0f769adc7a28cddbb1f94810b","unresolved":false,"context_lines":[{"line_number":661,"context_line":"    @validation.schema(schema_server_update)"},{"line_number":662,"context_line":"    def update(self, req, id, body):"},{"line_number":663,"context_line":"        \"\"\"Update server then pass on to version-specific controller.\"\"\""},{"line_number":664,"context_line":"        if not self.is_valid_body(body, \u0027server\u0027):"},{"line_number":665,"context_line":"            raise exc.HTTPBadRequest(_(\"The request body is invalid\"))"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        ctxt \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAUH%2F92F0%3D","line":664,"updated":"2014-02-03 11:41:04.000000000","message":"ditto","commit_id":"1f2cdd6f775efccea306f0ac49ca84078111168a"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"8b9b46159d7800489e87093aae175870cab85541","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        # Look for API schema of server create extension"},{"line_number":175,"context_line":"        self.create_schema_manager \u003d \\"},{"line_number":176,"context_line":"            stevedore.enabled.EnabledExtensionManager("},{"line_number":177,"context_line":"                namespace\u003dself.EXTENSION_CREATE_NAMESPACE,"},{"line_number":178,"context_line":"                check_func\u003d_check_load_extension(\u0027get_server_create_schema\u0027),"},{"line_number":179,"context_line":"                invoke_on_load\u003dTrue,"},{"line_number":180,"context_line":"                invoke_kwds\u003d{\"extension_info\": self.extension_info},"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_f6908399","line":177,"updated":"2014-08-05 23:01:49.000000000","message":"@Chris\n\n \u003e I think you might be missing new setup.cfg entries?\n\nOn this patch, nova searches extension schema from each extension method and its namespace is the same as the existing extension loading mechanism. so I\u0027m not sure that the other necessary setup.cfg entries.","commit_id":"d1d37d1b052039641c121f4a049cf11c43368758"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"e4f8b708643fa21f521467095bdeff32f8a1efa4","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        # Look for API schema of server create extension"},{"line_number":175,"context_line":"        self.create_schema_manager \u003d \\"},{"line_number":176,"context_line":"            stevedore.enabled.EnabledExtensionManager("},{"line_number":177,"context_line":"                namespace\u003dself.EXTENSION_CREATE_NAMESPACE,"},{"line_number":178,"context_line":"                check_func\u003d_check_load_extension(\u0027get_server_create_schema\u0027),"},{"line_number":179,"context_line":"                invoke_on_load\u003dTrue,"},{"line_number":180,"context_line":"                invoke_kwds\u003d{\"extension_info\": self.extension_info},"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_3763d6df","line":177,"in_reply_to":"baada198_f6908399","updated":"2014-08-06 00:07:09.000000000","message":"Ah I see now - that makes sense","commit_id":"d1d37d1b052039641c121f4a049cf11c43368758"}],"nova/api/openstack/compute/schemas/v3/keypairs.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"aa3f1190a533716fa2f9887546393f960f1cb659","unresolved":false,"context_lines":[{"line_number":35,"context_line":"server_create \u003d {"},{"line_number":36,"context_line":"    \u0027key_name\u0027: {"},{"line_number":37,"context_line":"        \u0027type\u0027: \u0027string\u0027, \u0027minLength\u0027: 1, \u0027maxLength\u0027: 255,"},{"line_number":38,"context_line":"        \u0027pattern\u0027: \u0027^[a-zA-Z0-9 _-]+$\u0027"},{"line_number":39,"context_line":"    },"},{"line_number":40,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F9bkw%3D","line":38,"updated":"2014-02-06 23:19:47.000000000","message":"need to rebase.\nhere should be changed to parmeter_type.name.","commit_id":"3bd21e25edc3ff9626373cc8483f01f50f7447ca"}],"nova/api/openstack/compute/schemas/v3/servers.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"f4274f1102d0cd9d87b219209048b2ede7729aaa","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    \u0027required\u0027: [\u0027server\u0027],"},{"line_number":33,"context_line":"    # TODO(oomichi): ditto, enable here after all extension schema"},{"line_number":34,"context_line":"    # patches are merged."},{"line_number":35,"context_line":"    # \u0027additionalProperties\u0027: False,"},{"line_number":36,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_2e8231ff","line":35,"updated":"2014-08-01 09:20:26.000000000","message":"I think we didn\u0027t have siblings attribute with server root attribute? But it isn\u0027t big problem.","commit_id":"d1d37d1b052039641c121f4a049cf11c43368758"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9311dc90ad234a5035b05cf437583224164a0b92","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    \u0027required\u0027: [\u0027server\u0027],"},{"line_number":33,"context_line":"    # TODO(oomichi): ditto, enable here after all extension schema"},{"line_number":34,"context_line":"    # patches are merged."},{"line_number":35,"context_line":"    # \u0027additionalProperties\u0027: False,"},{"line_number":36,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_c1d2f8ce","line":35,"in_reply_to":"baada198_2e8231ff","updated":"2014-08-05 10:32:55.000000000","message":"unfortunately we will with the v2 api","commit_id":"d1d37d1b052039641c121f4a049cf11c43368758"}],"nova/tests/api/openstack/compute/plugins/v3/test_availability_zone.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"eb51b1f3250260f71b07950e75388d08f2d4fdc6","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        if override_controller:"},{"line_number":417,"context_line":"            server \u003d override_controller.create(req, body\u003dbody).obj[\u0027server\u0027]"},{"line_number":418,"context_line":"        else:"},{"line_number":419,"context_line":"            server \u003d self.controller.create(req, body\u003dbody).obj[\u0027server\u0027]"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def test_create_instance_with_availability_zone_disabled(self):"},{"line_number":422,"context_line":"        availability_zone \u003d [{\u0027availability_zone\u0027: \u0027foo\u0027}]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2B%2BcM%3D","line":419,"updated":"2014-01-20 08:00:33.000000000","message":"Why we need use \u0027body\u003dbody\u0027 instead of body?","commit_id":"b5f3531b1d3519716c31d3fd9537bf229e547d72"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"6f5d4c860161d0762f751bd8066e73b387cc0158","unresolved":false,"context_lines":[{"line_number":416,"context_line":"        if override_controller:"},{"line_number":417,"context_line":"            server \u003d override_controller.create(req, body\u003dbody).obj[\u0027server\u0027]"},{"line_number":418,"context_line":"        else:"},{"line_number":419,"context_line":"            server \u003d self.controller.create(req, body\u003dbody).obj[\u0027server\u0027]"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"    def test_create_instance_with_availability_zone_disabled(self):"},{"line_number":422,"context_line":"        availability_zone \u003d [{\u0027availability_zone\u0027: \u0027foo\u0027}]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2B%2BL4%3D","line":419,"in_reply_to":"AAAAUH%2F%2B%2BcM%3D","updated":"2014-01-20 08:46:07.000000000","message":"Hi Alex, thanks for your review.\n\nIf we don\u0027t change this, a validation fails at https://github.com/openstack/nova/blob/master/nova/api/validation/__init__.py#L41 , because it cannot find \u0027body\u0027 from kwargs.\n\n_process_stack() of nova\u0027s wsgi passes kwargs, includes \"body\" like:\n\n {\u0027body\u0027: {u\u0027server\u0027: {u\u0027name\u0027: u\u0027my-server\u0027, [..]}}}\n\nto API method. So this changes is for fitting the arguments to the wsgi behavior.\n\nI got the same question from Chris on the other review.\nSo I should/will write it on the commit log.","commit_id":"b5f3531b1d3519716c31d3fd9537bf229e547d72"}]}
