)]}'
{"nova/api/openstack/compute/contrib/server_groups.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"db5e083a4ff465feb2442bf3e280ea3312dd618c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        server_group[\u0027members\u0027] \u003d members"},{"line_number":72,"context_line":"        return server_group"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _validate_policy(self, policy):"},{"line_number":75,"context_line":"        \"\"\"Validate the policy."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        Validates that there is only one policy configured, as all the"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_bb3565f8","line":74,"updated":"2015-01-15 15:53:59.000000000","message":"nit: policy are still list ,so no need to change name","commit_id":"20e69c89936f88a2ec33c8e6e865507e38bcdb11"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"7e5cc5ffc5c5154c17e0179dc358715b267fafd8","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        server_group[\u0027members\u0027] \u003d members"},{"line_number":72,"context_line":"        return server_group"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _validate_policy(self, policy):"},{"line_number":75,"context_line":"        \"\"\"Validate the policy."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        Validates that there is only one policy configured, as all the"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_cc043916","line":74,"in_reply_to":"3a961159_bb3565f8","updated":"2015-01-15 16:31:43.000000000","message":"Fair point, it will be changed in the next patch set.","commit_id":"20e69c89936f88a2ec33c8e6e865507e38bcdb11"}],"nova/api/openstack/compute/plugins/v3/server_groups.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"db5e083a4ff465feb2442bf3e280ea3312dd618c","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"            if policy[0] not in SUPPORTED_POLICIES:"},{"line_number":91,"context_line":"                msg \u003d _(\"Invalid policies: %s\") % \u0027, \u0027.join(policy)"},{"line_number":92,"context_line":"                raise nova.exception.InvalidInput(reason\u003dmsg)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _validate_input_body(self, body, entity_name):"},{"line_number":95,"context_line":"        if not self.is_valid_body(body, entity_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_26923c9f","line":92,"updated":"2015-01-15 15:53:59.000000000","message":"I know \nhttps://review.openstack.org/#/c/131924/\ntrying to update the schema validation here\nmaybe make changes on v3 API based on it can \nmake it more simple ,thoughts?","commit_id":"20e69c89936f88a2ec33c8e6e865507e38bcdb11"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"7e5cc5ffc5c5154c17e0179dc358715b267fafd8","unresolved":false,"context_lines":[{"line_number":89,"context_line":""},{"line_number":90,"context_line":"            if policy[0] not in SUPPORTED_POLICIES:"},{"line_number":91,"context_line":"                msg \u003d _(\"Invalid policies: %s\") % \u0027, \u0027.join(policy)"},{"line_number":92,"context_line":"                raise nova.exception.InvalidInput(reason\u003dmsg)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def _validate_input_body(self, body, entity_name):"},{"line_number":95,"context_line":"        if not self.is_valid_body(body, entity_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a961159_a11c5678","line":92,"in_reply_to":"3a961159_26923c9f","updated":"2015-01-15 16:31:43.000000000","message":"Sure, it looks nice, I also have experience with JSONSchema, so I definitely support that direction. As this patch is in a chain, then this will be applyed during a rebase process, when that patch or this one gets merged.","commit_id":"20e69c89936f88a2ec33c8e6e865507e38bcdb11"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"454b65cb8001ab512fe9af19ccdec2707698ac18","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"ALIAS \u003d \"os-server-groups\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"authorize \u003d extensions.os_compute_authorizer(ALIAS)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":48,"id":"3a50d1a3_05206d9a","side":"PARENT","line":36,"updated":"2015-07-26 07:51:45.000000000","message":"unrelated change","commit_id":"08dd0455165978267d0ed247b1d0926fa0cc0cc2"}],"nova/api/openstack/compute/schemas/server_groups.py":[{"author":{"_account_id":5511,"name":"Nikola Dipanov","email":"ndipanov@redhat.com","username":"ndipanov"},"change_message_id":"c20b4c5c4d07aa225a1af08acdc28c81f86aa183","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                \u0027policies\u0027: {"},{"line_number":50,"context_line":"                    \u0027type\u0027: \u0027array\u0027,"},{"line_number":51,"context_line":"                    \u0027items\u0027: [{\u0027enum\u0027: [\u0027anti-affinity\u0027, \u0027affinity\u0027,"},{"line_number":52,"context_line":"                                        \u0027soft-anti-affinity\u0027,"},{"line_number":53,"context_line":"                                        \u0027soft-affinity\u0027]}],"},{"line_number":54,"context_line":"                    \u0027uniqueItems\u0027: True,"},{"line_number":55,"context_line":"                    \u0027additionalItems\u0027: False,"},{"line_number":56,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":63,"id":"fa69d971_eefc4540","line":53,"range":{"start_line":52,"start_character":41,"end_line":53,"end_character":57},"updated":"2015-12-31 10:35:04.000000000","message":"I guess we could have just added this to the copy of the old dict, as it would be a bit clearer what the diff is bu not a huge deal I guess.","commit_id":"0e32e6ad77b5576d137d91873b021a92d3115f64"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5147126c1680d89addce6f49a7d358c11b09c869","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                \u0027policies\u0027: {"},{"line_number":50,"context_line":"                    \u0027type\u0027: \u0027array\u0027,"},{"line_number":51,"context_line":"                    \u0027items\u0027: [{\u0027enum\u0027: [\u0027anti-affinity\u0027, \u0027affinity\u0027,"},{"line_number":52,"context_line":"                                        \u0027soft-anti-affinity\u0027,"},{"line_number":53,"context_line":"                                        \u0027soft-affinity\u0027]}],"},{"line_number":54,"context_line":"                    \u0027uniqueItems\u0027: True,"},{"line_number":55,"context_line":"                    \u0027additionalItems\u0027: False,"},{"line_number":56,"context_line":"                }"}],"source_content_type":"text/x-python","patch_set":63,"id":"fa69d971_11d21901","line":53,"range":{"start_line":52,"start_character":41,"end_line":53,"end_character":57},"in_reply_to":"fa69d971_eefc4540","updated":"2015-12-31 12:09:56.000000000","message":"really good suggest, now the change is much cleaner","commit_id":"0e32e6ad77b5576d137d91873b021a92d3115f64"}],"nova/api/openstack/compute/server_groups.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"43d988848d6a4a1e0117ddfb8bf76a1ee9e7f7c3","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @wsgi.Controller.api_version(\"2.1\")"},{"line_number":135,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":136,"context_line":"    @validation.schema(schema.create, \"2.1\", \"2.12\")"},{"line_number":137,"context_line":"    @validation.schema(schema.create_v215, \"2.15\")"},{"line_number":138,"context_line":"    def create(self, req, body):"},{"line_number":139,"context_line":"        \"\"\"Creates a new server group.\"\"\""}],"source_content_type":"text/x-python","patch_set":64,"id":"fa69d971_b5299c39","line":136,"range":{"start_line":136,"start_character":48,"end_line":136,"end_character":50},"updated":"2016-01-04 02:32:14.000000000","message":"Here should be (\"2.1\", \"2.14\") for covering 2.13-2.14.","commit_id":"4e20b7c44e95bc0a1f8c1e86e311d4a5c635b4e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"62300d01004bcced85c63ee4531387e0c38c6532","unresolved":false,"context_lines":[{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    @wsgi.Controller.api_version(\"2.1\")"},{"line_number":135,"context_line":"    @extensions.expected_errors((400, 403))"},{"line_number":136,"context_line":"    @validation.schema(schema.create, \"2.1\", \"2.12\")"},{"line_number":137,"context_line":"    @validation.schema(schema.create_v215, \"2.15\")"},{"line_number":138,"context_line":"    def create(self, req, body):"},{"line_number":139,"context_line":"        \"\"\"Creates a new server group.\"\"\""}],"source_content_type":"text/x-python","patch_set":64,"id":"fa69d971_1b03f60e","line":136,"range":{"start_line":136,"start_character":48,"end_line":136,"end_character":50},"in_reply_to":"fa69d971_b5299c39","updated":"2016-01-04 07:22:57.000000000","message":"Done","commit_id":"4e20b7c44e95bc0a1f8c1e86e311d4a5c635b4e0"}],"nova/api/openstack/rest_api_version_history.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9a59f896155734c159d8caa64bd50b1cd6bb1957","unresolved":false,"context_lines":[{"line_number":136,"context_line":"----"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"  From this version of the API users can choose \u0027soft-affinity\u0027 and"},{"line_number":139,"context_line":"  \u0027soft-anti-affinity\u0027 rules too for server-groups."}],"source_content_type":"text/x-rst","patch_set":59,"id":"5a710552_b9e3df04","line":139,"updated":"2015-12-15 17:23:56.000000000","message":"Since you\u0027ve got \"From\" at the beginning of the sentence this \"too\" is not required (and even if you did want to keep it, it would go on the end: \"rules for servers groups too\", but just leave it out).","commit_id":"00d660d1764d38e4ceedd2de361b5fd68a1d7db6"}],"nova/tests/functional/test_server_group.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"43d988848d6a4a1e0117ddfb8bf76a1ee9e7f7c3","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            existing_groups \u003d self.api.get_server_groups()"},{"line_number":160,"context_line":"            self.assertIn(created_group, existing_groups)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        existing_groups \u003d self.api.get_server_groups()"},{"line_number":163,"context_line":"        self.assertEqual(len(groups), len(existing_groups))"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":64,"id":"fa69d971_35160cf2","side":"PARENT","line":161,"updated":"2016-01-04 02:32:14.000000000","message":"nit: unnecessary removal.","commit_id":"dc5612e0487e5ce39b66873741eef236f531f4d7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"62300d01004bcced85c63ee4531387e0c38c6532","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"            existing_groups \u003d self.api.get_server_groups()"},{"line_number":160,"context_line":"            self.assertIn(created_group, existing_groups)"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        existing_groups \u003d self.api.get_server_groups()"},{"line_number":163,"context_line":"        self.assertEqual(len(groups), len(existing_groups))"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-python","patch_set":64,"id":"fa69d971_5b472e4b","side":"PARENT","line":161,"in_reply_to":"fa69d971_35160cf2","updated":"2016-01-04 07:22:57.000000000","message":"Done","commit_id":"dc5612e0487e5ce39b66873741eef236f531f4d7"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"43d988848d6a4a1e0117ddfb8bf76a1ee9e7f7c3","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        existing_groups \u003d self.api.get_server_groups()"},{"line_number":163,"context_line":"        self.assertEqual(len(groups), len(existing_groups))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        for group in created_groups:"},{"line_number":166,"context_line":"            self.api.delete_server_group(group[\u0027id\u0027])"},{"line_number":167,"context_line":"            existing_groups \u003d self.api.get_server_groups()"}],"source_content_type":"text/x-python","patch_set":64,"id":"fa69d971_d5d3f036","side":"PARENT","line":164,"updated":"2016-01-04 02:32:14.000000000","message":"ditto","commit_id":"dc5612e0487e5ce39b66873741eef236f531f4d7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"62300d01004bcced85c63ee4531387e0c38c6532","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        existing_groups \u003d self.api.get_server_groups()"},{"line_number":163,"context_line":"        self.assertEqual(len(groups), len(existing_groups))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        for group in created_groups:"},{"line_number":166,"context_line":"            self.api.delete_server_group(group[\u0027id\u0027])"},{"line_number":167,"context_line":"            existing_groups \u003d self.api.get_server_groups()"}],"source_content_type":"text/x-python","patch_set":64,"id":"fa69d971_7b423240","side":"PARENT","line":164,"in_reply_to":"fa69d971_d5d3f036","updated":"2016-01-04 07:22:57.000000000","message":"Done","commit_id":"dc5612e0487e5ce39b66873741eef236f531f4d7"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"43d988848d6a4a1e0117ddfb8bf76a1ee9e7f7c3","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        server_after_failed_evac \u003d self._wait_for_state_change(servers[1],"},{"line_number":375,"context_line":"                                                               \u0027ACTIVE\u0027)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        # assert that after a failed evac the server active on the same host"},{"line_number":378,"context_line":"        # as before"},{"line_number":379,"context_line":"        self.assertEqual(server_after_failed_evac[\u0027OS-EXT-SRV-ATTR:host\u0027],"}],"source_content_type":"text/x-python","patch_set":64,"id":"fa69d971_f5d63426","side":"PARENT","line":376,"updated":"2016-01-04 02:32:14.000000000","message":"ditto","commit_id":"dc5612e0487e5ce39b66873741eef236f531f4d7"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"62300d01004bcced85c63ee4531387e0c38c6532","unresolved":false,"context_lines":[{"line_number":373,"context_line":""},{"line_number":374,"context_line":"        server_after_failed_evac \u003d self._wait_for_state_change(servers[1],"},{"line_number":375,"context_line":"                                                               \u0027ACTIVE\u0027)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        # assert that after a failed evac the server active on the same host"},{"line_number":378,"context_line":"        # as before"},{"line_number":379,"context_line":"        self.assertEqual(server_after_failed_evac[\u0027OS-EXT-SRV-ATTR:host\u0027],"}],"source_content_type":"text/x-python","patch_set":64,"id":"fa69d971_bb574a01","side":"PARENT","line":376,"in_reply_to":"fa69d971_f5d63426","updated":"2016-01-04 07:22:57.000000000","message":"Done","commit_id":"dc5612e0487e5ce39b66873741eef236f531f4d7"}]}
