)]}'
{"trove/cluster/models.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"2f67f79790a04d324ee3f8d2b2bd8c59372bf2d0","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @property"},{"line_number":214,"context_line":"    def locality(self):"},{"line_number":215,"context_line":"        if not self._locality and not self._server_group_loaded:"},{"line_number":216,"context_line":"            if self.server_group:"},{"line_number":217,"context_line":"                self._locality \u003d srv_grp.ServerGroup.get_locality("},{"line_number":218,"context_line":"                    self._server_group)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_815b08f6","line":215,"updated":"2016-06-15 20:09:10.000000000","message":"It seems like there can be (possibly timing dependent) case when \u0027self._locality\u0027 \u003d None while \u0027self._server_group_loaded\u0027 \u003d True.\nThis then causes the \u0027locality\u0027 to disappear from the cluster details. It seems to be happening with \u0027grow\u0027 and \u0027shrink\u0027 actions.\nRemoving the second condition should fix the issue. The scenario tests would no longer need to skip the check for those actions.","commit_id":"ff5e2898ade7a95f92c00084f778349d320bd744"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e8c141f20338ad8604de89f114e58e98f06b7d9f","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @property"},{"line_number":214,"context_line":"    def locality(self):"},{"line_number":215,"context_line":"        if not self._locality and not self._server_group_loaded:"},{"line_number":216,"context_line":"            if self.server_group:"},{"line_number":217,"context_line":"                self._locality \u003d srv_grp.ServerGroup.get_locality("},{"line_number":218,"context_line":"                    self._server_group)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_8f35eedc","line":215,"in_reply_to":"7aa08908_815b08f6","updated":"2016-06-15 20:13:00.000000000","message":"Done","commit_id":"ff5e2898ade7a95f92c00084f778349d320bd744"}],"trove/cluster/service.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a51e0a1f2afe5b63f9bbb982b56b9adecb14d4a7","unresolved":false,"context_lines":[{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        locality \u003d body[\u0027cluster\u0027].get(\u0027locality\u0027)"},{"line_number":176,"context_line":"        if locality:"},{"line_number":177,"context_line":"            locality_domain \u003d [\u0027affinity\u0027, \u0027anti-affinity\u0027]"},{"line_number":178,"context_line":"            locality_domain_msg \u003d (\"Invalid locality \u0027%s\u0027. \""},{"line_number":179,"context_line":"                                   \"Must be one of [\u0027%s\u0027]\" %"},{"line_number":180,"context_line":"                                   (locality,"},{"line_number":181,"context_line":"                                    \"\u0027, \u0027\".join(locality_domain)))"},{"line_number":182,"context_line":"            if locality not in locality_domain:"},{"line_number":183,"context_line":"                raise exception.BadRequest(msg\u003dlocality_domain_msg)"},{"line_number":184,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a122d0e_6b996e1f","line":181,"range":{"start_line":177,"start_character":0,"end_line":181,"end_character":66},"updated":"2016-04-22 13:52:34.000000000","message":"meta comment","commit_id":"6ff708ca989f5536239599871351387a9a1abe35"}],"trove/common/apischema.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"8e9e777fbf44065bb55acccfb2bb6617b4b74027","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                            }"},{"line_number":257,"context_line":"                        }"},{"line_number":258,"context_line":"                    },"},{"line_number":259,"context_line":"                    \"locality\": non_empty_string"},{"line_number":260,"context_line":"                }"},{"line_number":261,"context_line":"            }"},{"line_number":262,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa7ab95a_a6c9c37b","line":259,"updated":"2016-09-01 00:59:57.000000000","message":"interesting that you are able to change this and not have to change the api-ref. I assume this is because there are no examples for cluster create.","commit_id":"51f2655770f0d447ab77f892ae863212e581239a"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"1633d3f909bde1c16e608b09cb9e6e90ea169a86","unresolved":false,"context_lines":[{"line_number":256,"context_line":"                            }"},{"line_number":257,"context_line":"                        }"},{"line_number":258,"context_line":"                    },"},{"line_number":259,"context_line":"                    \"locality\": non_empty_string"},{"line_number":260,"context_line":"                }"},{"line_number":261,"context_line":"            }"},{"line_number":262,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa7ab95a_89f48f5b","line":259,"in_reply_to":"fa7ab95a_a6c9c37b","updated":"2016-09-02 00:17:20.000000000","message":"No, since the apiexamples are derived from the API tests not the scenario tests.  We may have to change that in the future.","commit_id":"51f2655770f0d447ab77f892ae863212e581239a"}],"trove/common/strategies/cluster/experimental/cassandra/api.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"8e9e777fbf44065bb55acccfb2bb6617b4b74027","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        locality \u003d srv_grp.ServerGroup.convert_to_hint(self.server_group)"},{"line_number":181,"context_line":"        new_instances \u003d self._create_cluster_instances("},{"line_number":182,"context_line":"            context, db_info.id, db_info.name, datastore, datastore_version,"},{"line_number":183,"context_line":"            instances, None, locality)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        task_api.load(context, datastore_version.manager).grow_cluster("},{"line_number":186,"context_line":"            db_info.id, [instance.id for instance in new_instances])"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa7ab95a_a61b831b","line":183,"range":{"start_line":183,"start_character":23,"end_line":183,"end_character":27},"updated":"2016-09-01 00:59:57.000000000","message":"really? I was wondering why you removed the default above.\n\nI\u0027m assuming these are the only two calls to _create_cluster_instances(), here and at line 94?","commit_id":"51f2655770f0d447ab77f892ae863212e581239a"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"1633d3f909bde1c16e608b09cb9e6e90ea169a86","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        locality \u003d srv_grp.ServerGroup.convert_to_hint(self.server_group)"},{"line_number":181,"context_line":"        new_instances \u003d self._create_cluster_instances("},{"line_number":182,"context_line":"            context, db_info.id, db_info.name, datastore, datastore_version,"},{"line_number":183,"context_line":"            instances, None, locality)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        task_api.load(context, datastore_version.manager).grow_cluster("},{"line_number":186,"context_line":"            db_info.id, [instance.id for instance in new_instances])"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa7ab95a_7453a217","line":183,"range":{"start_line":183,"start_character":23,"end_line":183,"end_character":27},"in_reply_to":"fa7ab95a_a61b831b","updated":"2016-09-02 00:17:20.000000000","message":"I had to remove the default or I\u0027d have been forced to may locality a kwarg as well.  And as you said, it wasn\u0027t even being used.","commit_id":"51f2655770f0d447ab77f892ae863212e581239a"}],"trove/common/strategies/cluster/experimental/redis/api.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"8e9e777fbf44065bb55acccfb2bb6617b4b74027","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from trove.common import cfg"},{"line_number":22,"context_line":"from trove.common import exception"},{"line_number":23,"context_line":"from trove.common import remote"},{"line_number":24,"context_line":"from trove.common import server_group as srv_grp"},{"line_number":25,"context_line":"from trove.common.strategies.cluster import base"},{"line_number":26,"context_line":"from trove.extensions.mgmt.clusters.views import MgmtClusterView"},{"line_number":27,"context_line":"from trove.instance import models as inst_models"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa7ab95a_66cdfbb6","line":24,"range":{"start_line":24,"start_character":41,"end_line":24,"end_character":48},"updated":"2016-09-01 00:59:57.000000000","message":"really? server_group was too long :)","commit_id":"51f2655770f0d447ab77f892ae863212e581239a"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"1633d3f909bde1c16e608b09cb9e6e90ea169a86","unresolved":false,"context_lines":[{"line_number":21,"context_line":"from trove.common import cfg"},{"line_number":22,"context_line":"from trove.common import exception"},{"line_number":23,"context_line":"from trove.common import remote"},{"line_number":24,"context_line":"from trove.common import server_group as srv_grp"},{"line_number":25,"context_line":"from trove.common.strategies.cluster import base"},{"line_number":26,"context_line":"from trove.extensions.mgmt.clusters.views import MgmtClusterView"},{"line_number":27,"context_line":"from trove.instance import models as inst_models"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa7ab95a_946bc6b8","line":24,"range":{"start_line":24,"start_character":41,"end_line":24,"end_character":48},"in_reply_to":"fa7ab95a_66cdfbb6","updated":"2016-09-02 00:17:20.000000000","message":"I believe in one file this caused a conflict (shadowing a variable or something like that) so I continued the trend to be consistent.  Of course I might also have resolved the conflict and forgot to change the name back. ;)","commit_id":"51f2655770f0d447ab77f892ae863212e581239a"}],"trove/tests/scenario/runners/cluster_actions_runners.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"2f67f79790a04d324ee3f8d2b2bd8c59372bf2d0","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        cluster \u003d self.auth_client.clusters.grow(cluster_id,"},{"line_number":236,"context_line":"                                                 added_instance_defs)"},{"line_number":237,"context_line":"        self._assert_cluster_action(cluster_id, expected_task_name,"},{"line_number":238,"context_line":"                                    expected_http_code, check_locality\u003dFalse)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        self.assert_equal(len(added_instance_defs),"},{"line_number":241,"context_line":"                          len(cluster.instances) - initial_instance_count,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_fcc27233","line":238,"range":{"start_line":238,"start_character":54,"end_line":238,"end_character":76},"updated":"2016-06-15 20:09:10.000000000","message":"This should no longer be required.","commit_id":"ff5e2898ade7a95f92c00084f778349d320bd744"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e8c141f20338ad8604de89f114e58e98f06b7d9f","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        cluster \u003d self.auth_client.clusters.grow(cluster_id,"},{"line_number":236,"context_line":"                                                 added_instance_defs)"},{"line_number":237,"context_line":"        self._assert_cluster_action(cluster_id, expected_task_name,"},{"line_number":238,"context_line":"                                    expected_http_code, check_locality\u003dFalse)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"        self.assert_equal(len(added_instance_defs),"},{"line_number":241,"context_line":"                          len(cluster.instances) - initial_instance_count,"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_2f4b1a61","line":238,"range":{"start_line":238,"start_character":54,"end_line":238,"end_character":76},"in_reply_to":"7aa08908_fcc27233","updated":"2016-06-15 20:13:00.000000000","message":"Done","commit_id":"ff5e2898ade7a95f92c00084f778349d320bd744"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"2f67f79790a04d324ee3f8d2b2bd8c59372bf2d0","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                         for instance in removed_instances])"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        self._assert_cluster_action(cluster_id, expected_task_name,"},{"line_number":268,"context_line":"                                    expected_http_code, check_locality\u003dFalse)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        self._assert_cluster_states(cluster_id, [\u0027NONE\u0027])"},{"line_number":271,"context_line":"        cluster \u003d self.auth_client.clusters.get(cluster_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_5cb3c6e9","line":268,"range":{"start_line":268,"start_character":54,"end_line":268,"end_character":76},"updated":"2016-06-15 20:09:10.000000000","message":"ditto","commit_id":"ff5e2898ade7a95f92c00084f778349d320bd744"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e8c141f20338ad8604de89f114e58e98f06b7d9f","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                         for instance in removed_instances])"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        self._assert_cluster_action(cluster_id, expected_task_name,"},{"line_number":268,"context_line":"                                    expected_http_code, check_locality\u003dFalse)"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        self._assert_cluster_states(cluster_id, [\u0027NONE\u0027])"},{"line_number":271,"context_line":"        cluster \u003d self.auth_client.clusters.get(cluster_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_0f50de09","line":268,"range":{"start_line":268,"start_character":54,"end_line":268,"end_character":76},"in_reply_to":"7aa08908_5cb3c6e9","updated":"2016-06-15 20:13:00.000000000","message":"Done","commit_id":"ff5e2898ade7a95f92c00084f778349d320bd744"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"2f67f79790a04d324ee3f8d2b2bd8c59372bf2d0","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        self.auth_client.clusters.delete(cluster_id)"},{"line_number":305,"context_line":"        self._assert_cluster_action(cluster_id, expected_task_name,"},{"line_number":306,"context_line":"                                    expected_http_code, check_locality\u003dFalse)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        self.assert_all_gone(cluster_instances, expected_last_instance_state)"},{"line_number":309,"context_line":"        self._assert_cluster_gone(cluster_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_5c01066a","line":306,"range":{"start_line":306,"start_character":54,"end_line":306,"end_character":76},"updated":"2016-06-15 20:09:10.000000000","message":"We still need this one though. Apparently the group is deleted with the cluster and once it\u0027s gone the \u0027locality\u0027 property also dissapears from the cluster as it is computed dynamically from the group.","commit_id":"ff5e2898ade7a95f92c00084f778349d320bd744"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"e8c141f20338ad8604de89f114e58e98f06b7d9f","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        self.auth_client.clusters.delete(cluster_id)"},{"line_number":305,"context_line":"        self._assert_cluster_action(cluster_id, expected_task_name,"},{"line_number":306,"context_line":"                                    expected_http_code, check_locality\u003dFalse)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        self.assert_all_gone(cluster_instances, expected_last_instance_state)"},{"line_number":309,"context_line":"        self._assert_cluster_gone(cluster_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7aa08908_ef491262","line":306,"range":{"start_line":306,"start_character":54,"end_line":306,"end_character":76},"in_reply_to":"7aa08908_5c01066a","updated":"2016-06-15 20:13:00.000000000","message":"I\u0027ll put a comment here to make that clear.","commit_id":"ff5e2898ade7a95f92c00084f778349d320bd744"}]}
