)]}'
{"trove/guestagent/datastore/experimental/mariadb/manager.py":[{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"b9bb251657542a00836d3228dac4faf5b05dc01c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"class Manager(manager_base.BaseMySqlManager):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self):"},{"line_number":40,"context_line":"        super(Manager, self).__init__()"},{"line_number":41,"context_line":"        self.mysql_app_status \u003d importutils.import_class(MYSQL_APP_STATUS)"},{"line_number":42,"context_line":"        self.mysql_app \u003d importutils.import_class(MYSQL_APP)"},{"line_number":43,"context_line":"        self.mysql_admin \u003d importutils.import_class(MYSQL_ADMIN)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_63ba89c2","line":40,"updated":"2015-08-27 19:40:14.000000000","message":"Same approach used for MySQL should be used here. Instantiate mysql_app, mysql_app_status, mysql_admin and pass it to the base class.","commit_id":"de6b1d9792e8d04782e9c907444cbcb74f055f8f"},{"author":{"_account_id":10440,"name":"Alex Tomic","email":"atomic777@gmail.com","username":"atomic77"},"change_message_id":"d342d983c2fdc2d60cc6d9b64ccb31f8798f4999","unresolved":false,"context_lines":[{"line_number":37,"context_line":"class Manager(manager_base.BaseMySqlManager):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self):"},{"line_number":40,"context_line":"        super(Manager, self).__init__()"},{"line_number":41,"context_line":"        self.mysql_app_status \u003d importutils.import_class(MYSQL_APP_STATUS)"},{"line_number":42,"context_line":"        self.mysql_app \u003d importutils.import_class(MYSQL_APP)"},{"line_number":43,"context_line":"        self.mysql_admin \u003d importutils.import_class(MYSQL_ADMIN)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_efcaf86d","line":40,"in_reply_to":"da20952f_63ba89c2","updated":"2015-08-27 21:58:49.000000000","message":"We were focused on stabilizing the mysql manager/service code yesterday that we forgot to change these as well, will send that up now.","commit_id":"de6b1d9792e8d04782e9c907444cbcb74f055f8f"}],"trove/guestagent/datastore/experimental/percona/manager.py":[{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"b9bb251657542a00836d3228dac4faf5b05dc01c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"class Manager(manager_base.BaseMySqlManager):"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self):"},{"line_number":40,"context_line":"        super(Manager, self).__init__()"},{"line_number":41,"context_line":"        self.mysql_app_status \u003d importutils.import_class(MYSQL_APP_STATUS)"},{"line_number":42,"context_line":"        self.mysql_app \u003d importutils.import_class(MYSQL_APP)"},{"line_number":43,"context_line":"        self.mysql_admin \u003d importutils.import_class(MYSQL_ADMIN)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_e3c69948","line":40,"updated":"2015-08-27 19:40:14.000000000","message":"Same approach used for MySQL should be used here. Instantiate mysql_app, mysql_app_status, mysql_admin and pass it to the base class.","commit_id":"de6b1d9792e8d04782e9c907444cbcb74f055f8f"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"b56d7893cd203f73fe355b710c2382d69b658276","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        self.replication_strategy \u003d REPLICATION_STRATEGY"},{"line_number":46,"context_line":"        self.replication_namespace \u003d REPLICATION_NAMESPACE"},{"line_number":47,"context_line":"        self.manager \u003d MANAGER"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_b7d73a4a","line":47,"updated":"2015-08-28 23:53:59.000000000","message":"this should use the super class method rather than injecting the data.\n\nI\u0027d be ok marking this a bug so that we can move forward though.","commit_id":"fe6168ef21f6aac60482019028925e1a18af854d"},{"author":{"_account_id":10440,"name":"Alex Tomic","email":"atomic777@gmail.com","username":"atomic77"},"change_message_id":"1f7a0f2dd90e950a88e92088da3f74de196e581b","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        self.replication_strategy \u003d REPLICATION_STRATEGY"},{"line_number":46,"context_line":"        self.replication_namespace \u003d REPLICATION_NAMESPACE"},{"line_number":47,"context_line":"        self.manager \u003d MANAGER"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_1a23ab57","line":47,"in_reply_to":"da20952f_b7d73a4a","updated":"2015-08-29 00:40:23.000000000","message":"This is an oversight, looks like I only fixed MariaDB. Maybe it would make sense to fix this as part of the rebase for percona cluster?","commit_id":"fe6168ef21f6aac60482019028925e1a18af854d"}],"trove/guestagent/datastore/mysql/manager.py":[{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"100626a12d5dbe9591d5d6223e4c8a9e5bef25fd","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __init__(self):"},{"line_number":39,"context_line":"        super(Manager, self).__init__()"},{"line_number":40,"context_line":"        self.mysql_app_status \u003d importutils.import_class(MYSQL_APP_STATUS)"},{"line_number":41,"context_line":"        self.mysql_app \u003d importutils.import_class(MYSQL_APP)"},{"line_number":42,"context_line":"        self.mysql_admin \u003d importutils.import_class(MYSQL_ADMIN)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.replication_strategy \u003d REPLICATION_STRATEGY"},{"line_number":45,"context_line":"        self.replication_namespace \u003d REPLICATION_NAMESPACE"},{"line_number":46,"context_line":"        self.manager \u003d MANAGER"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_e25b372d","line":46,"range":{"start_line":40,"start_character":8,"end_line":46,"end_character":30},"updated":"2015-08-26 17:58:32.000000000","message":"We should just instantiate these (common classes and strategies) here and pass them to the super constructor as objects \u003d\u003e the derived class (such as this) needs to do the initialization/instantiation because not every GA initializes its inner objects the same way (same parameters etc).\n\nAlso, the super-class is going to need them to work properly so it should not be relying on the base class to inject them all but should rather require them to be passed by to its constructor.","commit_id":"413d438ccc7596465845be5f1d9061016c6d33d4"},{"author":{"_account_id":13355,"name":"Edmond Kotowski","email":"ekotowski@gmail.com","username":"ekotowski"},"change_message_id":"477a162fc55200b17849b96e438c1b495f4f201e","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.replication_strategy \u003d REPLICATION_STRATEGY"},{"line_number":45,"context_line":"        self.replication_namespace \u003d REPLICATION_NAMESPACE"},{"line_number":46,"context_line":"        self.manager \u003d MANAGER"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_e725805c","line":46,"in_reply_to":"da20952f_e25b372d","updated":"2015-08-26 21:28:05.000000000","message":"Agreed inject all of these into the class because the base class is not correct unless these are set. With them in the init the object can be more immutable.","commit_id":"413d438ccc7596465845be5f1d9061016c6d33d4"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"3f8dce71891d3816ed1de136d9acf557d99f051b","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        mysql_app_status \u003d importutils.import_class(MYSQL_APP_STATUS)"},{"line_number":41,"context_line":"        mysql_admin \u003d importutils.import_class(MYSQL_ADMIN)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        super(Manager, self).__init__(mysql_app, mysql_app_status,"},{"line_number":44,"context_line":"                                      mysql_admin, REPLICATION_STRATEGY,"},{"line_number":45,"context_line":"                                      REPLICATION_NAMESPACE,"},{"line_number":46,"context_line":"                                      REPLICATION_STRATEGY_CLASS, MANAGER)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_641e1c65","line":43,"updated":"2015-08-27 16:09:42.000000000","message":"This is better, but these are still classes. You have to instantiate them here and pass in the objects because the base class does not necessarily know how to instantiate them properly...","commit_id":"de6b1d9792e8d04782e9c907444cbcb74f055f8f"},{"author":{"_account_id":14576,"name":"Petr Malik","email":"pmalik@tesora.com","username":"pmalik"},"change_message_id":"ea0f36b7c40dd30df25c1fdd9b53b12cf8ddd13a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        mysql_app_status \u003d importutils.import_class(MYSQL_APP_STATUS)"},{"line_number":41,"context_line":"        mysql_admin \u003d importutils.import_class(MYSQL_ADMIN)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        super(Manager, self).__init__(mysql_app, mysql_app_status,"},{"line_number":44,"context_line":"                                      mysql_admin, REPLICATION_STRATEGY,"},{"line_number":45,"context_line":"                                      REPLICATION_NAMESPACE,"},{"line_number":46,"context_line":"                                      REPLICATION_STRATEGY_CLASS, MANAGER)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da20952f_b597808f","line":43,"in_reply_to":"da20952f_641e1c65","updated":"2015-08-27 17:02:04.000000000","message":"Just import the auxiliary classes here like normal and instantiate the App, Status and Admin in the constructor. Pass the instantiated objects into the base which then stores them in internal \u0027private\u0027 variables (possibly exposing them via read-only properties) and uses those instances.\n\nThere is really no need to re-create the App/Admin class for every method invocation (like the current master code does) - those objects store only immutable states, so re creating them does not add anything other than some minor performance overhead and extra code.\n\nThe problem with the current design is that, there is no way how the base class can know that, some derived datastore needs to, say, instantiate its Status with a client passed into its \u0027constructor\u0027 (some datastores are like that). That\u0027s why the instantiation of the auxiliary objects has to happen here in the derived class itself.","commit_id":"de6b1d9792e8d04782e9c907444cbcb74f055f8f"}]}
