)]}'
{"trove/configuration/models.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"16e7d0ecfcf72fa4f4edf2541778c0964f03d5d9","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        return datastore_version"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @staticmethod"},{"line_number":128,"context_line":"    def load_configuration_datastore_and_version(context, configuration):"},{"line_number":129,"context_line":"        datastore_version \u003d dstore_models.DatastoreVersion.load_by_uuid("},{"line_number":130,"context_line":"            configuration.datastore_version_id)"},{"line_number":131,"context_line":"        datastore \u003d dstore_models.Datastore.load("}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_14668129","line":128,"updated":"2014-06-18 00:35:35.000000000","message":"what\u0027s context in this case?\n\noptionally, see comment on service.py and change this method to accept context and id. You can then simplify this and the previous method that really share some common code.","commit_id":"5ad058ab655a39d27f3b20d4470608d97bf73842"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"0f6c3a7a00c1065d02c8278d976a002458bd3610","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        return datastore_version"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @staticmethod"},{"line_number":128,"context_line":"    def load_configuration_datastore_and_version(context, configuration):"},{"line_number":129,"context_line":"        datastore_version \u003d dstore_models.DatastoreVersion.load_by_uuid("},{"line_number":130,"context_line":"            configuration.datastore_version_id)"},{"line_number":131,"context_line":"        datastore \u003d dstore_models.Datastore.load("}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_088658db","line":128,"in_reply_to":"1ae5cdf2_14668129","updated":"2014-06-18 09:10:05.000000000","message":"Disagee. Why should i ask DB for another configuration object when i\u0027m able to pass already pulled one?","commit_id":"5ad058ab655a39d27f3b20d4470608d97bf73842"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"16e7d0ecfcf72fa4f4edf2541778c0964f03d5d9","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    def load_configuration_datastore_and_version(context, configuration):"},{"line_number":129,"context_line":"        datastore_version \u003d dstore_models.DatastoreVersion.load_by_uuid("},{"line_number":130,"context_line":"            configuration.datastore_version_id)"},{"line_number":131,"context_line":"        datastore \u003d dstore_models.Datastore.load("},{"line_number":132,"context_line":"            datastore_version.datastore_id)"},{"line_number":133,"context_line":"        return datastore, datastore_version"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_b4578d25","line":131,"updated":"2014-06-18 00:35:35.000000000","message":"this is datastore_name, right? why not call it that?","commit_id":"5ad058ab655a39d27f3b20d4470608d97bf73842"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"0f6c3a7a00c1065d02c8278d976a002458bd3610","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    def load_configuration_datastore_and_version(context, configuration):"},{"line_number":129,"context_line":"        datastore_version \u003d dstore_models.DatastoreVersion.load_by_uuid("},{"line_number":130,"context_line":"            configuration.datastore_version_id)"},{"line_number":131,"context_line":"        datastore \u003d dstore_models.Datastore.load("},{"line_number":132,"context_line":"            datastore_version.datastore_id)"},{"line_number":133,"context_line":"        return datastore, datastore_version"},{"line_number":134,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_080f3889","line":131,"in_reply_to":"1ae5cdf2_b4578d25","updated":"2014-06-18 09:10:05.000000000","message":"because i\u0027m using name and id, that\u0027s why i\u0027m returning exact objects instead of it\u0027s attributes.","commit_id":"5ad058ab655a39d27f3b20d4470608d97bf73842"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"8ca49bdbc9ff5855e54143f20cc43fc82d541fed","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        configs, marker \u003d Configurations.load(context)"},{"line_number":76,"context_line":"        config_descr_set \u003d []"},{"line_number":77,"context_line":"        for config in configs:"},{"line_number":78,"context_line":"            d, v \u003d Configuration.load_configuration_datastore_and_version("},{"line_number":79,"context_line":"                config)"},{"line_number":80,"context_line":"            config_descr_set.append(ConfigurationDescriptor("},{"line_number":81,"context_line":"                config, d, v"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_267ec9e4","line":78,"updated":"2014-06-26 12:47:11.000000000","message":"nit - consider using more descriptive variable names such as store, ver... its pretty obvious what d and v are, but IMO best practice is to use something more descriptive.","commit_id":"d483aedead8267fbd7134bfd88196c3f453afde8"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"872385ef9994a08643a753b9e8fc50f4700f792e","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        next_marker \u003d data_view.next_page_marker"},{"line_number":71,"context_line":"        return data_view.collection, next_marker"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    @staticmethod"},{"line_number":74,"context_line":"    def load_set_of_configuration_datastores_and_versions(context):"},{"line_number":75,"context_line":"        configs, marker \u003d Configurations.load(context)"},{"line_number":76,"context_line":"        config_descr_set \u003d []"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_058863c5","line":73,"updated":"2014-07-08 23:58:15.000000000","message":"I find this is a lot of work for just displaying the datastore and version. Why not just create a datastore and datastore_version properties in DBConfiguration and have them queried up by the view? That way you dont have to do all these unnecessary work","commit_id":"3bacc412fa83677e2fc4d778c51445a489c638cc"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"872385ef9994a08643a753b9e8fc50f4700f792e","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"class DBConfiguration(dbmodels.DatabaseModelBase):"},{"line_number":227,"context_line":"    _data_fields \u003d [\u0027name\u0027, \u0027description\u0027, \u0027tenant_id\u0027, \u0027datastore_version_id\u0027,"},{"line_number":228,"context_line":"                    \u0027deleted\u0027, \u0027deleted_at\u0027]"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_c0aad984","line":227,"updated":"2014-07-08 23:58:15.000000000","message":"Add datastore and version properties here.","commit_id":"3bacc412fa83677e2fc4d778c51445a489c638cc"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"ad405c373f47bf58bfa7287cc349eb25baffb4c3","unresolved":false,"context_lines":[{"line_number":199,"context_line":"                    \u0027deleted\u0027, \u0027deleted_at\u0027, \u0027created\u0027, \u0027updated\u0027]"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    @property"},{"line_number":202,"context_line":"    def datastore(self):"},{"line_number":203,"context_line":"        datastore_version \u003d dstore_models.DatastoreVersion.load_by_uuid("},{"line_number":204,"context_line":"            self.datastore_version_id)"},{"line_number":205,"context_line":"        datastore \u003d dstore_models.Datastore.load("}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_ed8edc26","line":202,"updated":"2014-07-09 16:58:37.000000000","message":"Much better.. Thanks!","commit_id":"59b20e409b795782fd0d4006b0f4b8a41c89c745"}],"trove/configuration/service.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"16e7d0ecfcf72fa4f4edf2541778c0964f03d5d9","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def show(self, req, tenant_id, id):"},{"line_number":49,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":50,"context_line":"        configuration \u003d models.Configuration.load(context, id)"},{"line_number":51,"context_line":"        configuration_items \u003d models.Configuration.load_items(context, id)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        return wsgi.Result(views.DetailedConfigurationView("}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_0f774ca0","side":"PARENT","line":50,"updated":"2014-06-18 00:35:35.000000000","message":"given that at the one place where you want to call load_configuration_datastore_and_version(), you have id available (and you use it to get configuration), I would suggest changing load_configuration_datastore_and_version to accept context and id. That way, you can simplify the code in models.py.","commit_id":"22a88859e472a870595751029b610e250357dd63"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"0f6c3a7a00c1065d02c8278d976a002458bd3610","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def show(self, req, tenant_id, id):"},{"line_number":49,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":50,"context_line":"        configuration \u003d models.Configuration.load(context, id)"},{"line_number":51,"context_line":"        configuration_items \u003d models.Configuration.load_items(context, id)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        return wsgi.Result(views.DetailedConfigurationView("}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_a8ed6490","side":"PARENT","line":50,"in_reply_to":"1ae5cdf2_0f774ca0","updated":"2014-06-18 09:10:05.000000000","message":"Completely disagee. No need to change interface of the method. Why should API ask backend for another copy of already pulled configuration model? IMHO That\u0027s why it\u0027s very useful to pass configuration object instead of only it\u0027s ID","commit_id":"22a88859e472a870595751029b610e250357dd63"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"ad405c373f47bf58bfa7287cc349eb25baffb4c3","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        cfg_group_items \u003d models.Configuration.create_items(cfg_group.id,"},{"line_number":108,"context_line":"                                                            values)"},{"line_number":109,"context_line":"        view_data \u003d views.DetailedConfigurationView("},{"line_number":110,"context_line":"            cfg_group, cfg_group_items, datastore, datastore_version)"},{"line_number":111,"context_line":"        return wsgi.Result(view_data.data(), 200)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def delete(self, req, tenant_id, id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_0d6310b2","line":110,"updated":"2014-07-09 16:58:37.000000000","message":"This is not needed and shouldnt be there. I wonder how you are not getting a runtime error here","commit_id":"59b20e409b795782fd0d4006b0f4b8a41c89c745"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"9b70706debaea2695f79de127d446eac159e471e","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":50,"context_line":"        configuration \u003d models.Configuration.load(context, id)"},{"line_number":51,"context_line":"        configuration_items \u003d models.Configuration.load_items(context, id)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        configuration.instance_count \u003d instances_models.DBInstance.find_all("},{"line_number":54,"context_line":"            tenant_id\u003dcontext.tenant,"},{"line_number":55,"context_line":"            configuration_id\u003dconfiguration.id,"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_487779d4","side":"PARENT","line":52,"updated":"2014-07-11 00:05:29.000000000","message":"Did you mean to remove this line?","commit_id":"7e170cc14e413103d71b43ef1c4730df75994be6"}],"trove/configuration/views.py":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"13b016d0f44b41341c33acd25a29c36eeecd3d5e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.datastore_version \u003d models.DatastoreVersion.load_by_uuid("},{"line_number":26,"context_line":"            self.configuration.datastore_version_id)"},{"line_number":27,"context_line":"        self.datastore \u003d models.Datastore.load("},{"line_number":28,"context_line":"            self.datastore_version.datastore_id)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def data(self):"},{"line_number":31,"context_line":"        configuration_dict \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_456bde1d","line":28,"updated":"2014-06-11 08:22:29.000000000","message":"This breaks MVC. Why not populate this in the model, so that the view can use it?","commit_id":"7c03574689a62ab413ab9bc8f3eebb0151294e3e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f7534602966f4ebeaca003ffcd218515dcc758ed","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        self.datastore_version \u003d models.DatastoreVersion.load_by_uuid("},{"line_number":26,"context_line":"            self.configuration.datastore_version_id)"},{"line_number":27,"context_line":"        self.datastore \u003d models.Datastore.load("},{"line_number":28,"context_line":"            self.datastore_version.datastore_id)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def data(self):"},{"line_number":31,"context_line":"        configuration_dict \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_4a004634","line":28,"in_reply_to":"1ae5cdf2_456bde1d","updated":"2014-06-11 10:17:01.000000000","message":"Of course, it can be done there.","commit_id":"7c03574689a62ab413ab9bc8f3eebb0151294e3e"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"13b016d0f44b41341c33acd25a29c36eeecd3d5e","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        self.datastore_version \u003d models.DatastoreVersion.load_by_uuid("},{"line_number":89,"context_line":"            self.configuration.datastore_version_id)"},{"line_number":90,"context_line":"        self.datastore \u003d models.Datastore.load("},{"line_number":91,"context_line":"            self.datastore_version.datastore_id)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def data(self):"},{"line_number":94,"context_line":"        values \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_65745afe","line":91,"updated":"2014-06-11 08:22:29.000000000","message":"This breaks MVC. Why not populate this in the model, so that the view can use it?","commit_id":"7c03574689a62ab413ab9bc8f3eebb0151294e3e"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"c5ee2eebe13ecac308f30754db958fa149b11d27","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ConfigurationView(object):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def __init__(self, configuration, datastore\u003dNone, datastore_version\u003dNone):"},{"line_number":24,"context_line":"        self.configuration \u003d configuration"},{"line_number":25,"context_line":"        self.datastore_version \u003d datastore_version"},{"line_number":26,"context_line":"        self.datastore \u003d datastore"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_17d3f05f","line":23,"updated":"2014-06-17 19:58:12.000000000","message":"trove configuration list doesn\u0027t seem to show the 2 new columns. I believe it is because line 59 below isn\u0027t passing the ds-name or ds-version-name. In this case, they will be set to None and not included in the dict send back to client.","commit_id":"5ad058ab655a39d27f3b20d4470608d97bf73842"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"0f6c3a7a00c1065d02c8278d976a002458bd3610","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ConfigurationView(object):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def __init__(self, configuration, datastore\u003dNone, datastore_version\u003dNone):"},{"line_number":24,"context_line":"        self.configuration \u003d configuration"},{"line_number":25,"context_line":"        self.datastore_version \u003d datastore_version"},{"line_number":26,"context_line":"        self.datastore \u003d datastore"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_e86ccc0a","line":23,"in_reply_to":"1ae5cdf2_17d3f05f","updated":"2014-06-18 09:10:05.000000000","message":"If you\u0027ve read the bug-report, you should know that we\u0027d like to show datastore/version only at __detail__ view - \"show\" command, no need to send datastore/version on \"list\" command","commit_id":"5ad058ab655a39d27f3b20d4470608d97bf73842"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"1f9276038a589a4f2be2fa8206a61a756e783d4f","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"class ConfigurationView(object):"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"    def __init__(self, configuration, datastore\u003dNone, datastore_version\u003dNone):"},{"line_number":24,"context_line":"        self.configuration \u003d configuration"},{"line_number":25,"context_line":"        self.datastore_version \u003d datastore_version"},{"line_number":26,"context_line":"        self.datastore \u003d datastore"}],"source_content_type":"text/x-python","patch_set":6,"id":"1ae5cdf2_a4a27ff9","line":23,"in_reply_to":"1ae5cdf2_e86ccc0a","updated":"2014-06-20 22:13:57.000000000","message":"Okay, let\u0027s try to take a step back and not be so confrontational / aggressive with comments on the reviews. We\u0027re all trying to make Trove better here. :)\n\nThe bug report is at https://bugs.launchpad.net/trove/+bug/1326584 and the title clearly states \"Both ConfigurationView and DetailedConfigurationView for configuration-groups return only the Datastore Version ID and not human the readable Datastore Name / Version\".\n\nSo according to the bug report, we want to fix this issue for both the views. \n\nEven if the bug report specified just the one view, I\u0027d recommend using your discretion to implement a solution that makes the best sense for Trove (the bug report can be updated accordingly).","commit_id":"5ad058ab655a39d27f3b20d4470608d97bf73842"},{"author":{"_account_id":5367,"name":"boden","email":"bodenvmw@gmail.com","username":"boden"},"change_message_id":"8ca49bdbc9ff5855e54143f20cc43fc82d541fed","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            \"datastore_version_id\": self.configuration.datastore_version_id,"},{"line_number":34,"context_line":"        }"},{"line_number":35,"context_line":"        if self.datastore_version and self.datastore:"},{"line_number":36,"context_line":"            d_dv \u003d {"},{"line_number":37,"context_line":"                \"datastore_name\": self.datastore.name,"},{"line_number":38,"context_line":"                \"datastore_version_name\": self.datastore_version.name"},{"line_number":39,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_e68b01be","line":36,"updated":"2014-06-26 12:47:11.000000000","message":"nit - would it be more concise to just return an in-line map rather than define d_dv and never really use it?\n\ne.g.\n\nconfiguration_dict.update({\u0027datastore_name\u0027 : self.datastore.name, ...)","commit_id":"d483aedead8267fbd7134bfd88196c3f453afde8"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"ad405c373f47bf58bfa7287cc349eb25baffb4c3","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def data_for_configuration(self, configuration):"},{"line_number":57,"context_line":"        view \u003d ConfigurationView("},{"line_number":58,"context_line":"            configuration.config)"},{"line_number":59,"context_line":"        return view.data()[\u0027configuration\u0027]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_0de230d5","line":58,"updated":"2014-07-09 16:58:37.000000000","message":"Does this work? I dont think there is a \u0027config\u0027 attribute in \u0027configuration\u0027","commit_id":"59b20e409b795782fd0d4006b0f4b8a41c89c745"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"9b70706debaea2695f79de127d446eac159e471e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return {\"configurations\": data}"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def data_for_configuration(self, configuration):"},{"line_number":57,"context_line":"        view \u003d ConfigurationView("},{"line_number":58,"context_line":"            configuration)"},{"line_number":59,"context_line":"        return view.data()[\u0027configuration\u0027]"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_c84aa982","line":57,"updated":"2014-07-11 00:05:29.000000000","message":"we can put this back to one line","commit_id":"3556066567773938041ab2817d20ce764b6c4c38"}]}
