)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"d56381bbad1e585e089d1671f96ea24e62debaa6","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Add ability to CRUD configuration parameters"},{"line_number":12,"context_line":"adding a manage cmd to import the config params"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"partially implements blueprint configuration-parameters-in-db"},{"line_number":15,"context_line":"Change-Id: I51d5281ba8922dc19c74e7c6e972f40e45416d50"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1ae5cdf2_656683bd","line":14,"updated":"2014-06-23 19:04:16.000000000","message":"Need to add : after implements I believe. You can refer https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_GIT_commit_message_structure. Thanks.","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"2b0dd740c4031fe05d5ab0c4108841cce966034e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"Add ability to CRUD configuration parameters"},{"line_number":12,"context_line":"adding a manage cmd to import the config params"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"partially implements blueprint configuration-parameters-in-db"},{"line_number":15,"context_line":"Change-Id: I51d5281ba8922dc19c74e7c6e972f40e45416d50"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"1ae5cdf2_fdaae86f","line":14,"in_reply_to":"1ae5cdf2_656683bd","updated":"2014-06-25 07:10:40.000000000","message":"it does really matter as long as it shows up as a link in gerrit.","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"}],"trove/cmd/manage.py":[{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.db_api.drop_db(CONF)"},{"line_number":84,"context_line":"        self.db_sync(repo_path)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def load_datastore_config_parameters(self,"},{"line_number":87,"context_line":"                                         datastore_version_id,"},{"line_number":88,"context_line":"                                         config_file_location):"},{"line_number":89,"context_line":"        print(datastore_version_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_7e85fb05","line":86,"updated":"2014-05-23 00:28:56.000000000","message":"i\u0027d prefer this be renamed to db_load_datastore_configuration_parameters. reasoning: the prefix of db_ to match existing db-affecting operations, plus no need to start truncating configuration to config in user and/or deployer facing interfaces.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        self.db_api.drop_db(CONF)"},{"line_number":84,"context_line":"        self.db_sync(repo_path)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def load_datastore_config_parameters(self,"},{"line_number":87,"context_line":"                                         datastore_version_id,"},{"line_number":88,"context_line":"                                         config_file_location):"},{"line_number":89,"context_line":"        print(datastore_version_id)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_175be787","line":86,"in_reply_to":"7adec928_7e85fb05","updated":"2014-05-23 21:11:23.000000000","message":"good idea. need to make sure this is updated in redstack setup as well.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        parser \u003d subparser.add_parser(\u0027db_recreate\u0027)"},{"line_number":130,"context_line":"        parser.add_argument(\u0027repo_path\u0027)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"        parser \u003d subparser.add_parser(\u0027load_datastore_config_parameters\u0027)"},{"line_number":133,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027)"},{"line_number":134,"context_line":"        parser.add_argument(\u0027config_file_location\u0027)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_9ea2c798","line":132,"updated":"2014-05-23 00:28:56.000000000","message":"rename to db_load_datastore_configuration_parameters\" (see above for explanation)","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                                            datastore_version_id,"},{"line_number":86,"context_line":"                                            config_file_location):"},{"line_number":87,"context_line":"        print(datastore_version_id)"},{"line_number":88,"context_line":"        print(config_file_location)"},{"line_number":89,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":90,"context_line":"            datastore_version_id, config_file_location)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_2ca9c8dd","line":88,"updated":"2014-06-23 19:00:40.000000000","message":"I am not quite sure why we are using print statements throughout this file instead of logging them correctly but that might be part of a different discussion. Apart from that, I think this print statement can be a little more descriptive as to what is being printed out. Thank you.","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"2b0dd740c4031fe05d5ab0c4108841cce966034e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                                            datastore_version_id,"},{"line_number":86,"context_line":"                                            config_file_location):"},{"line_number":87,"context_line":"        print(datastore_version_id)"},{"line_number":88,"context_line":"        print(config_file_location)"},{"line_number":89,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":90,"context_line":"            datastore_version_id, config_file_location)"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_5dde7c11","line":88,"in_reply_to":"1ae5cdf2_2ca9c8dd","updated":"2014-06-25 07:10:40.000000000","message":"good point i\u0027ll make it more descriptive.","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from trove.db import get_db_api"},{"line_number":28,"context_line":"from trove.openstack.common import log as logging"},{"line_number":29,"context_line":"from trove.datastore import models as datastore_models"},{"line_number":30,"context_line":"from trove.configuration import models as config_models"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_0550635e","line":30,"updated":"2014-07-29 17:01:11.000000000","message":"import ordering not correct according to hacking rules (not in ascending order)","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ab65e129cd587567d7fbf5523ef2457eb213213d","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from trove.db import get_db_api"},{"line_number":28,"context_line":"from trove.openstack.common import log as logging"},{"line_number":29,"context_line":"from trove.datastore import models as datastore_models"},{"line_number":30,"context_line":"from trove.configuration import models as config_models"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_0306941c","line":30,"in_reply_to":"baada198_0550635e","updated":"2014-07-29 21:44:04.000000000","message":"hmm i thought jenkins would have caught that in the gate?","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def db_load_datastore_config_parameters(self,"},{"line_number":85,"context_line":"                                            datastore_version_id,"},{"line_number":86,"context_line":"                                            config_file_location):"},{"line_number":87,"context_line":"        print(\"loading configs into: %s\" % datastore_version_id)"},{"line_number":88,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":89,"context_line":"            datastore_version_id, config_file_location)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_b0684122","line":87,"updated":"2014-07-25 15:45:06.000000000","message":"This output seems abit strange, i\u0027d say that when i\u0027ll see something like \"loading configs into\" i would expect to see filepath or exact values.Am i missing something?","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def db_load_datastore_config_parameters(self,"},{"line_number":85,"context_line":"                                            datastore_version_id,"},{"line_number":86,"context_line":"                                            config_file_location):"},{"line_number":87,"context_line":"        print(\"loading configs into: %s\" % datastore_version_id)"},{"line_number":88,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":89,"context_line":"            datastore_version_id, config_file_location)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_65a67fad","line":87,"in_reply_to":"baada198_33b0833f","updated":"2014-07-29 17:01:11.000000000","message":"could we change the print to \"loading config parameters for datastore version: %s\"? that would be a bit more clear.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ab65e129cd587567d7fbf5523ef2457eb213213d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def db_load_datastore_config_parameters(self,"},{"line_number":85,"context_line":"                                            datastore_version_id,"},{"line_number":86,"context_line":"                                            config_file_location):"},{"line_number":87,"context_line":"        print(\"loading configs into: %s\" % datastore_version_id)"},{"line_number":88,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":89,"context_line":"            datastore_version_id, config_file_location)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_6333d0f7","line":87,"in_reply_to":"baada198_65a67fad","updated":"2014-07-29 21:44:04.000000000","message":"i\u0027ll take it.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"89dbbcd6d2c7665edd87b081758395d7bc4917da","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def db_load_datastore_config_parameters(self,"},{"line_number":85,"context_line":"                                            datastore_version_id,"},{"line_number":86,"context_line":"                                            config_file_location):"},{"line_number":87,"context_line":"        print(\"loading configs into: %s\" % datastore_version_id)"},{"line_number":88,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":89,"context_line":"            datastore_version_id, config_file_location)"},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_33b0833f","line":87,"in_reply_to":"baada198_b0684122","updated":"2014-07-29 15:19:54.000000000","message":"this is the trove-manage cmd where we load the config params from the config_file_location into the database on the datastore version.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"1b3275981ebbe88e50ad1aaeed636a3efe4203de","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                            config_file_location):"},{"line_number":87,"context_line":"        print(\"Loading config parameters for datastore version: %s\""},{"line_number":88,"context_line":"              % datastore_version_id)"},{"line_number":89,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":90,"context_line":"            datastore_version_id, config_file_location)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def params_of(self, command_name):"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_0614d84e","line":89,"updated":"2014-08-06 10:43:10.000000000","message":"if a parameter is deleted via configuration-parameter-delete, but still exists in config_file_location, no updates are committed.\n\nex: if the min_size for a parameter changes from 1 to 5, the row in the database will keep min_size as 1 (instead of updating it to 5), simply by virtue of deleted\u003d1. i feel a bit uneasy about this, but i can\u0027t actually think of a real life example in which this is problematic. any thoughts?","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"3bdd470639ca8ba6040ec2ba64e51805bb38476d","unresolved":false,"context_lines":[{"line_number":86,"context_line":"                                            config_file_location):"},{"line_number":87,"context_line":"        print(\"Loading config parameters for datastore version: %s\""},{"line_number":88,"context_line":"              % datastore_version_id)"},{"line_number":89,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":90,"context_line":"            datastore_version_id, config_file_location)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def params_of(self, command_name):"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_7bc30589","line":89,"in_reply_to":"baada198_0614d84e","updated":"2014-08-20 20:24:34.000000000","message":"overcome by events.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":152,"context_line":"            \u0027db_recreate\u0027, description\u003d\u0027Drop the database and recreate it.\u0027)"},{"line_number":153,"context_line":"        parser.add_argument(\u0027repo_path\u0027, help\u003drepo_path_help)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        parser \u003d subparser.add_parser(\u0027db_load_datastore_config_parameters\u0027)"},{"line_number":156,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027)"},{"line_number":157,"context_line":"        parser.add_argument(\u0027config_file_location\u0027)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_8ad39000","line":155,"updated":"2014-08-06 09:53:21.000000000","message":"should have description; description can be:\n\ndescription\u003d\u0027Loads configuration group parameter validation rules for a datastore-version into the database.\u0027","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        parser.add_argument(\u0027repo_path\u0027, help\u003drepo_path_help)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        parser \u003d subparser.add_parser(\u0027db_load_datastore_config_parameters\u0027)"},{"line_number":156,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027)"},{"line_number":157,"context_line":"        parser.add_argument(\u0027config_file_location\u0027)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    cfg.custom_parser(\u0027action\u0027, actions)"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_2ac9a47a","line":156,"updated":"2014-08-06 09:53:21.000000000","message":"needs help text; help can be:\n\nhelp\u003d\u0027ID of the datastore-version.\u0027","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":154,"context_line":""},{"line_number":155,"context_line":"        parser \u003d subparser.add_parser(\u0027db_load_datastore_config_parameters\u0027)"},{"line_number":156,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027)"},{"line_number":157,"context_line":"        parser.add_argument(\u0027config_file_location\u0027)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    cfg.custom_parser(\u0027action\u0027, actions)"},{"line_number":160,"context_line":"    cfg.parse_args(sys.argv)"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_ea940c38","line":157,"updated":"2014-08-06 09:53:21.000000000","message":"needs help text; help can be (make sure to follow pep8 line length):\n\nhelp\u003d\u0027Fully qualified file path to the configuration group parameter validation rules.\u0027","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"77c1d03f69871fb7fbc2fc961baf81db1c452b5b","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        parser \u003d subparser.add_parser(\u0027db_load_datastore_config_parameters\u0027)"},{"line_number":156,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027)"},{"line_number":157,"context_line":"        parser.add_argument(\u0027config_file_location\u0027)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    cfg.custom_parser(\u0027action\u0027, actions)"},{"line_number":160,"context_line":"    cfg.parse_args(sys.argv)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_49b0a3fd","line":158,"updated":"2014-08-06 11:02:04.000000000","message":"+1 to comments for subparsers","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"}],"trove/common/apischema.py":[{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"22c55fed020a53cff29c7e65032c22608704fce1","unresolved":false,"context_lines":[{"line_number":445,"context_line":"        }"},{"line_number":446,"context_line":"    },"},{"line_number":447,"context_line":"}"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"account \u003d {"},{"line_number":450,"context_line":"    \u0027create\u0027: {"},{"line_number":451,"context_line":"        \"type\": \"object\","}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F4Os%3D","line":448,"updated":"2014-03-13 07:29:47.000000000","message":"add the other CRUD methods","commit_id":"aa971d7537e096102a5cbe98afb7b7e6f24af08e"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"523d6b6a767d7fb19d3e022498fd4ac4af0aa46e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"configuration_integer_size \u003d {"},{"line_number":40,"context_line":"    \"type\": \"string\","},{"line_number":41,"context_line":"    \"maxLength\": 40,"},{"line_number":42,"context_line":"    \"pattern\": \"[0-9]+\""},{"line_number":43,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_de4a8f54","line":40,"updated":"2014-05-22 23:50:10.000000000","message":"why is this string vs. integer?\n\nbecause if i provide:\n\n    {\"configuration-parameter\": {\"name\": \"auston\", \"restart_required\": 0, \"min_size\": 1, \"max_size\": 10, \"data_type\": \"integer\"}}\n\ni get:\n\n    {\"badRequest\": {\"message\": \"Validation error: configuration-parameter[\u0027max_size\u0027] 10 is not of type \u0027string\u0027; configuration-parameter[\u0027min_size\u0027] 1 is not of type \u0027string\u0027\", \"code\": 400}","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"configuration_integer_size \u003d {"},{"line_number":40,"context_line":"    \"type\": \"string\","},{"line_number":41,"context_line":"    \"maxLength\": 40,"},{"line_number":42,"context_line":"    \"pattern\": \"[0-9]+\""},{"line_number":43,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_3771c3e0","line":40,"in_reply_to":"7adec928_de4a8f54","updated":"2014-05-23 21:11:23.000000000","message":"the min_size and max_size are stored as a string because the max size is longer than the int size and truncates.\n\nExample:\nmysql option max_heap_table_size for 64 bit\nRange\t16384 .. 1844674407370954752\n\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_heap_table_size\n\nThats why i make sure its pattern is just numbers.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":454,"context_line":"    \"create\": {"},{"line_number":455,"context_line":"        \"name\": \"configuration_parameter:create\","},{"line_number":456,"context_line":"        \"type\": \"object\","},{"line_number":457,"context_line":"        \"required\": [\"configuration-parameter\"],"},{"line_number":458,"context_line":"        \"properties\": {"},{"line_number":459,"context_line":"            \"configuration-parameter\": {"},{"line_number":460,"context_line":"                \"type\": \"object\","}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_deac4f8f","line":457,"updated":"2014-05-23 00:28:56.000000000","message":"should be configuration_parameter vs. configuration-parameter (due to established pattern of underscore vs. hyphen)","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":454,"context_line":"    \"create\": {"},{"line_number":455,"context_line":"        \"name\": \"configuration_parameter:create\","},{"line_number":456,"context_line":"        \"type\": \"object\","},{"line_number":457,"context_line":"        \"required\": [\"configuration-parameter\"],"},{"line_number":458,"context_line":"        \"properties\": {"},{"line_number":459,"context_line":"            \"configuration-parameter\": {"},{"line_number":460,"context_line":"                \"type\": \"object\","}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_8e4ef9bf","line":457,"in_reply_to":"7adec928_deac4f8f","updated":"2014-05-23 21:11:23.000000000","message":"so it should be fine to make this change since its a new call but it makes the payload a little different from the configuration-parameter-list. Should this be a concern?","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        \"type\": \"object\","},{"line_number":457,"context_line":"        \"required\": [\"configuration-parameter\"],"},{"line_number":458,"context_line":"        \"properties\": {"},{"line_number":459,"context_line":"            \"configuration-parameter\": {"},{"line_number":460,"context_line":"                \"type\": \"object\","},{"line_number":461,"context_line":"                \"required\": [\"name\", \"restart_required\", \"data_type\"],"},{"line_number":462,"context_line":"                \"properties\": {"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_fea74ba5","line":459,"updated":"2014-05-23 00:28:56.000000000","message":"should be configuration_parameter vs. configuration-parameter (due to established pattern of underscore vs. hyphen)","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d07409523795cd44700e589dee14af6b6690d394","unresolved":false,"context_lines":[{"line_number":456,"context_line":"        \"type\": \"object\","},{"line_number":457,"context_line":"        \"required\": [\"configuration-parameter\"],"},{"line_number":458,"context_line":"        \"properties\": {"},{"line_number":459,"context_line":"            \"configuration-parameter\": {"},{"line_number":460,"context_line":"                \"type\": \"object\","},{"line_number":461,"context_line":"                \"required\": [\"name\", \"restart_required\", \"data_type\"],"},{"line_number":462,"context_line":"                \"properties\": {"}],"source_content_type":"text/x-python","patch_set":12,"id":"3ae8d1ca_a645b518","line":459,"in_reply_to":"7adec928_fea74ba5","updated":"2014-05-29 05:03:26.000000000","message":"so i have a slight dilemma with this request. I know this is a \"new\" call and should use the underscore BUT this sorta changes the consistency of the interactions with the other configuration parameter results since they are under contract now. \n\nI\u0027m torn if this should be underscore or dash but i\u0027m leaning more toward dash for uniformity. Thoughts?","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":469,"context_line":"            }"},{"line_number":470,"context_line":"        }"},{"line_number":471,"context_line":"    },"},{"line_number":472,"context_line":"    \"modify\": {"},{"line_number":473,"context_line":"        \"name\": \"configuration_parameter:modify\","},{"line_number":474,"context_line":"        \"type\": \"object\","},{"line_number":475,"context_line":"        \"required\": [\"configuration-parameter\"],"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_5ee75fe4","line":472,"updated":"2014-05-23 00:28:56.000000000","message":"i don\u0027t see \"modify\" anchored to any route.. is this dead code?","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"98cc5ccfcbcc5b55330a3f854556f1882639b856","unresolved":false,"context_lines":[{"line_number":469,"context_line":"            }"},{"line_number":470,"context_line":"        }"},{"line_number":471,"context_line":"    },"},{"line_number":472,"context_line":"    \"modify\": {"},{"line_number":473,"context_line":"        \"name\": \"configuration_parameter:modify\","},{"line_number":474,"context_line":"        \"type\": \"object\","},{"line_number":475,"context_line":"        \"required\": [\"configuration-parameter\"],"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_7e47bb77","line":472,"in_reply_to":"7adec928_5ee75fe4","updated":"2014-05-23 00:40:52.000000000","message":"disregard, it\u0027s used in the python-troveclient patchs-set you\u0027ve provided.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":472,"context_line":"    \"modify\": {"},{"line_number":473,"context_line":"        \"name\": \"configuration_parameter:modify\","},{"line_number":474,"context_line":"        \"type\": \"object\","},{"line_number":475,"context_line":"        \"required\": [\"configuration-parameter\"],"},{"line_number":476,"context_line":"        \"properties\": {"},{"line_number":477,"context_line":"            \"configuration-parameter\": {"},{"line_number":478,"context_line":"                \"type\": \"object\","}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_1eb6b7dc","line":475,"updated":"2014-05-23 00:28:56.000000000","message":"should be configuration_parameter vs. configuration-parameter (due to established pattern of underscore vs. hyphen)","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":474,"context_line":"        \"type\": \"object\","},{"line_number":475,"context_line":"        \"required\": [\"configuration-parameter\"],"},{"line_number":476,"context_line":"        \"properties\": {"},{"line_number":477,"context_line":"            \"configuration-parameter\": {"},{"line_number":478,"context_line":"                \"type\": \"object\","},{"line_number":479,"context_line":"                \"required\": [\"name\", \"restart_required\", \"data_type\"],"},{"line_number":480,"context_line":"                \"properties\": {"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_3eb9b3cb","line":477,"updated":"2014-05-23 00:28:56.000000000","message":"should be configuration_parameter vs. configuration-parameter (due to established pattern of underscore vs. hyphen)","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"boolean_string \u003d {"},{"line_number":28,"context_line":"    \"type\": \"integer\","},{"line_number":29,"context_line":"    \"minimum\": 0,"},{"line_number":30,"context_line":"    \"maximum\": 1"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_2af1b696","line":28,"updated":"2014-07-29 17:01:11.000000000","message":"why is this called boolean_string when the type is integer?\n\nthis could alternatively be:\n\n    boolean_string \u003d {\n       \"type\": \"string\",\n       \"minLength\": 1,\n       \"pattern\": \"0|1\"\n    }\n\nconsidering every other field is a string (even min/max_size, despite being integer-like), this might be a more \"consistent\" option.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ab65e129cd587567d7fbf5523ef2457eb213213d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"boolean_string \u003d {"},{"line_number":28,"context_line":"    \"type\": \"integer\","},{"line_number":29,"context_line":"    \"minimum\": 0,"},{"line_number":30,"context_line":"    \"maximum\": 1"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_2370f8a3","line":28,"in_reply_to":"baada198_2af1b696","updated":"2014-07-29 21:44:04.000000000","message":"sounds good.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":469,"context_line":"            }"},{"line_number":470,"context_line":"        }"},{"line_number":471,"context_line":"    },"},{"line_number":472,"context_line":"    \"modify\": {"},{"line_number":473,"context_line":"        \"name\": \"configuration_parameter:modify\","},{"line_number":474,"context_line":"        \"type\": \"object\","},{"line_number":475,"context_line":"        \"required\": [\"configuration-parameter\"],"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_ea36de50","line":472,"updated":"2014-07-29 17:01:11.000000000","message":"why introduce the verb \"modify\" when \"update\" or \"patch\" would do? i\u0027m guessing that if a parameter used to have min/max size, but on the modify if it\u0027s not included it\u0027d be dropped, so i\u0027d advocate for this to be called \"update\" (since it\u0027s a purge/replace).","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"9609590be8632ce87916268dde6aa9c762d337e0","unresolved":false,"context_lines":[{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"boolean_string \u003d {"},{"line_number":28,"context_line":"    \"type\": \"integer\","},{"line_number":29,"context_line":"    \"minLength\": 1,"},{"line_number":30,"context_line":"    \"pattern\": \"1|0\""},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":20,"id":"baada198_947e556c","line":28,"updated":"2014-07-29 22:31:58.000000000","message":"i think you forgot \"type\": \"string\" ;)","commit_id":"0772e3796570196b937499f05fa57babbf67ef1a"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"7e4ac7eb900b1aadd6282e3ff8b2fb8626726273","unresolved":false,"context_lines":[{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"boolean_string \u003d {"},{"line_number":28,"context_line":"    \"type\": \"integer\","},{"line_number":29,"context_line":"    \"minLength\": 1,"},{"line_number":30,"context_line":"    \"pattern\": \"1|0\""},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":20,"id":"baada198_cf19137c","line":28,"in_reply_to":"baada198_947e556c","updated":"2014-07-30 05:21:44.000000000","message":"hmmmmm... this change and a few of the other ones just caused lots of the tests to break. I think this validation might be a bit of a problem. Hit me up when you have a chance i want to chat about this.","commit_id":"0772e3796570196b937499f05fa57babbf67ef1a"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"f9277c53ff4548a6d032e4da8fd78113de807b79","unresolved":false,"context_lines":[{"line_number":25,"context_line":"}"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"boolean_string \u003d {"},{"line_number":28,"context_line":"    \"type\": \"integer\","},{"line_number":29,"context_line":"    \"minLength\": 1,"},{"line_number":30,"context_line":"    \"pattern\": \"1|0\""},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":20,"id":"baada198_c4c7ed0f","line":28,"in_reply_to":"baada198_cf19137c","updated":"2014-07-31 18:56:38.000000000","message":"i\u0027m ok reverting this to version 19.","commit_id":"0772e3796570196b937499f05fa57babbf67ef1a"}],"trove/common/configurations.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from trove.openstack.common import log as logging"},{"line_number":18,"context_line":"from six.moves import configparser"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class MySQLConfParser(object):"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_d0a4d54d","line":20,"updated":"2014-07-25 15:45:06.000000000","message":"please remove this one, since there are no logging calls","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from trove.openstack.common import log as logging"},{"line_number":18,"context_line":"from six.moves import configparser"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class MySQLConfParser(object):"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_0a695226","line":20,"in_reply_to":"baada198_d0a4d54d","updated":"2014-07-29 17:01:11.000000000","message":"+1 (plus remove the logging import)","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"}],"trove/configuration/models.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4f280672ac1126bc010ba42ce8667305a334edcd","unresolved":false,"context_lines":[{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    @classmethod"},{"line_number":252,"context_line":"    def load_parameter(cls, config_id):"},{"line_number":253,"context_line":"        config_parameter \u003d get_db_api().find_by(cls,"},{"line_number":254,"context_line":"                                                config_id)"},{"line_number":255,"context_line":"        return config_parameter"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWn%2F%2F5DQ%3D","line":253,"updated":"2014-04-08 17:29:15.000000000","message":"i guess it\u0027ll be more safe if this code will be coverd by the try-except block","commit_id":"aa971d7537e096102a5cbe98afb7b7e6f24af08e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4f280672ac1126bc010ba42ce8667305a334edcd","unresolved":false,"context_lines":[{"line_number":257,"context_line":"    @classmethod"},{"line_number":258,"context_line":"    def load_parameter_by_name(cls, config_name):"},{"line_number":259,"context_line":"        config_parameter \u003d get_db_api().find_by(cls,"},{"line_number":260,"context_line":"                                                name\u003dconfig_name)"},{"line_number":261,"context_line":"        return config_parameter"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWn%2F%2F5DM%3D","line":260,"updated":"2014-04-08 17:29:15.000000000","message":"same","commit_id":"aa971d7537e096102a5cbe98afb7b7e6f24af08e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"eda86029601f4a8305355079fc2244293baa5c32","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    def does_configuration_need_restart(self):"},{"line_number":187,"context_line":"        config_items \u003d Configuration.load_items(self.context,"},{"line_number":188,"context_line":"                                                id\u003dself.configuration_id)"},{"line_number":189,"context_line":"        LOG.debug(\"config_items: %s\" % config_items)"},{"line_number":190,"context_line":"        for i in config_items:"},{"line_number":191,"context_line":"            LOG.debug(\"config item: %s\" % i)"},{"line_number":192,"context_line":"            details \u003d DatastoreConfigurationParameters.load_parameter_by_name("}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FDSA%3D","line":189,"updated":"2014-04-24 11:18:52.000000000","message":"translation is required","commit_id":"3143cf6239bab96ac7d0a28b7b9074ad08fc7fe6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"eda86029601f4a8305355079fc2244293baa5c32","unresolved":false,"context_lines":[{"line_number":188,"context_line":"                                                id\u003dself.configuration_id)"},{"line_number":189,"context_line":"        LOG.debug(\"config_items: %s\" % config_items)"},{"line_number":190,"context_line":"        for i in config_items:"},{"line_number":191,"context_line":"            LOG.debug(\"config item: %s\" % i)"},{"line_number":192,"context_line":"            details \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":193,"context_line":"                i.configuration_key)"},{"line_number":194,"context_line":"            LOG.debug(\"parameter details: %s\" % details)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FDR8%3D","line":191,"updated":"2014-04-24 11:18:52.000000000","message":"translation is required","commit_id":"3143cf6239bab96ac7d0a28b7b9074ad08fc7fe6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"eda86029601f4a8305355079fc2244293baa5c32","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        LOG.debug(\"config_items: %s\" % config_items)"},{"line_number":190,"context_line":"        for i in config_items:"},{"line_number":191,"context_line":"            LOG.debug(\"config item: %s\" % i)"},{"line_number":192,"context_line":"            details \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":193,"context_line":"                i.configuration_key)"},{"line_number":194,"context_line":"            LOG.debug(\"parameter details: %s\" % details)"},{"line_number":195,"context_line":"            if not details:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FDRw%3D","line":192,"updated":"2014-04-24 11:18:52.000000000","message":"try-except is required","commit_id":"3143cf6239bab96ac7d0a28b7b9074ad08fc7fe6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"eda86029601f4a8305355079fc2244293baa5c32","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            LOG.debug(\"config item: %s\" % i)"},{"line_number":192,"context_line":"            details \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":193,"context_line":"                i.configuration_key)"},{"line_number":194,"context_line":"            LOG.debug(\"parameter details: %s\" % details)"},{"line_number":195,"context_line":"            if not details:"},{"line_number":196,"context_line":"                raise exception.NotFound(uuid\u003di.configuration_key)"},{"line_number":197,"context_line":"            if bool(details.restart_required):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FDRs%3D","line":194,"updated":"2014-04-24 11:18:52.000000000","message":"translation is required","commit_id":"3143cf6239bab96ac7d0a28b7b9074ad08fc7fe6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"eda86029601f4a8305355079fc2244293baa5c32","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                                                    name\u003dconfig_name)"},{"line_number":274,"context_line":"        except exception.NotFound:"},{"line_number":275,"context_line":"            raise exception.NotFound(uuid\u003dconfig_name)"},{"line_number":276,"context_line":"        return config_parameter"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"def create_datastore_configuration_parameter(name, datastore_version_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAXH%2F%2FDQY%3D","line":276,"updated":"2014-04-24 11:18:52.000000000","message":"config_parameter should be set as None before try-except block","commit_id":"3143cf6239bab96ac7d0a28b7b9074ad08fc7fe6"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"7e2251a85e34b1ed064098065d910a08ed4e87e5","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        LOG.debug(_(\"config_items: %s\") % config_items)"},{"line_number":188,"context_line":"        for i in config_items:"},{"line_number":189,"context_line":"            LOG.debug(_(\"config item: %s\") % i)"},{"line_number":190,"context_line":"            details \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":191,"context_line":"                i.configuration_key)"},{"line_number":192,"context_line":"            LOG.debug(_(\"parameter details: %s\") % details)"},{"line_number":193,"context_line":"            if not details:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXX%2F%2F1RI%3D","line":190,"updated":"2014-04-25 22:37:01.000000000","message":"Instead of traversing thru every param from the DB to check a flag, can you modify your query to get all the params and then use a function like all() to tests the flag? That way you dont have to go to the DB n times.","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"bf0a5e1dfd51f1a613f1a51df0585afef4757be3","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        LOG.debug(_(\"config_items: %s\") % config_items)"},{"line_number":188,"context_line":"        for i in config_items:"},{"line_number":189,"context_line":"            LOG.debug(_(\"config item: %s\") % i)"},{"line_number":190,"context_line":"            details \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":191,"context_line":"                i.configuration_key)"},{"line_number":192,"context_line":"            LOG.debug(_(\"parameter details: %s\") % details)"},{"line_number":193,"context_line":"            if not details:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_cd093c2e","line":190,"in_reply_to":"AAAAXX%2F%2F1RI%3D","updated":"2014-04-29 20:30:01.000000000","message":"gotcha","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"abec8fde80fa719318839f7bfe1574b7c18e8316","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        config_items \u003d ConfigurationParameter.find_all(configuration_id\u003did,"},{"line_number":153,"context_line":"                                                       deleted\u003dFalse).all()"},{"line_number":154,"context_line":"        rules \u003d configurations.get_validation_rules("},{"line_number":155,"context_line":"            datastore_manager\u003ddatastore.manager)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        def _get_rule(key):"},{"line_number":158,"context_line":"            LOG.debug(_(\"finding rule with key : %s\") % key)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_13eeb08b","line":155,"updated":"2014-05-22 23:29:10.000000000","message":"trove/common/configurations.py was not included in this patch, which means configurations.get_validation_rules() is still loading validation-rules.json vs. consulting the database table.\n\nhttps://github.com/openstack/trove/blob/6d051af5d9c2428d5df8e552635f755cf3212afa/trove/common/configurations.py#L48-L52\n\nhow to reproduce: load the configuration parameters in the database, then move mysql/validation-rules.json to mysql/bak-validation-rules.json and attempt to do a \u0027trove configuration-create\u0027. you\u0027ll see:\n\n    2014-05-22 23:20:57.294 ERROR trove.common.configurations [req-c04028e9-71d5-4254-91e8-20dc55484867 20e873926cae45d98c9a0d0ad492c36e 24619b078a8b4dfca9b86844017c0fdf] This     operation is not supported for this datastore at this time\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations Traceback (most recent call last):\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/opt/stack/trove/trove/common/configurations.py\", line 51, in get_validation_rules\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     template \u003d ENV.get_template(config_location)\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/usr/lib/python2.7/dist-packages/jinja2/environment.py\", line 719, in get_template\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     return self._load_template(name, self.make_globals(globals))\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/usr/lib/python2.7/dist-packages/jinja2/environment.py\", line 693, in _load_template\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     template \u003d self.loader.load(self, name, globals)\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/usr/lib/python2.7/dist-packages/jinja2/loaders.py\", line 115, in load\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     source, filename, uptodate \u003d self.get_source(environment, name)\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/usr/lib/python2.7/dist-packages/jinja2/loaders.py\", line 377, in get_source\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     raise TemplateNotFound(template)\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations TemplateNotFound: mysql/validation-rules.json\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        config_items \u003d ConfigurationParameter.find_all(configuration_id\u003did,"},{"line_number":153,"context_line":"                                                       deleted\u003dFalse).all()"},{"line_number":154,"context_line":"        rules \u003d configurations.get_validation_rules("},{"line_number":155,"context_line":"            datastore_manager\u003ddatastore.manager)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        def _get_rule(key):"},{"line_number":158,"context_line":"            LOG.debug(_(\"finding rule with key : %s\") % key)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_ba721a0f","line":155,"in_reply_to":"7adec928_13eeb08b","updated":"2014-05-23 21:11:23.000000000","message":"Damn i thought i removed those references. Good catch to change the name of the file.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ee83621e3f38bf4853da18c37c4db22864db2097","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        config_items \u003d ConfigurationParameter.find_all(configuration_id\u003did,"},{"line_number":153,"context_line":"                                                       deleted\u003dFalse).all()"},{"line_number":154,"context_line":"        rules \u003d configurations.get_validation_rules("},{"line_number":155,"context_line":"            datastore_manager\u003ddatastore.manager)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        def _get_rule(key):"},{"line_number":158,"context_line":"            LOG.debug(_(\"finding rule with key : %s\") % key)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3ae8d1ca_c1dd4b72","line":155,"in_reply_to":"7adec928_ba721a0f","updated":"2014-05-29 15:44:49.000000000","message":"I removed all the code from common.configurations that reads this file now so it should not be a problem.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"9144f7319cfa44f7d8a75c2b1b19f3aaf34a1251","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    get_db_api().configure_db(CONF)"},{"line_number":340,"context_line":"    datastore_version \u003d DatastoreVersion.load_by_uuid(datastore_version_id)"},{"line_number":341,"context_line":"    config \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":342,"context_line":"        datastore_version_id, id)"},{"line_number":343,"context_line":"    config.name \u003d name"},{"line_number":344,"context_line":"    config.datastore_version_id \u003d datastore_version.id"},{"line_number":345,"context_line":"    config.restart_required \u003d restart_required"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_e8e2919e","line":342,"updated":"2014-06-14 10:50:56.000000000","message":"its load_parameter_by_name, but i see an id being passed? should the arg be \"name\", or is this just unfortunate naming?","commit_id":"ee94011ea939cec1c32cfe003332f2af02bbfb85"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"920e3e3dba6629bfef5d8d66c21518f0b2c7162a","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    get_db_api().configure_db(CONF)"},{"line_number":340,"context_line":"    datastore_version \u003d DatastoreVersion.load_by_uuid(datastore_version_id)"},{"line_number":341,"context_line":"    config \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":342,"context_line":"        datastore_version_id, id)"},{"line_number":343,"context_line":"    config.name \u003d name"},{"line_number":344,"context_line":"    config.datastore_version_id \u003d datastore_version.id"},{"line_number":345,"context_line":"    config.restart_required \u003d restart_required"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_5517c2ed","line":342,"in_reply_to":"1ae5cdf2_c1157d9c","updated":"2014-06-20 05:22:18.000000000","message":"I noticed the modify and delete were excess code because i originally had thought this would be done through the trove-manage command but that\u0027s not the case and now its just a mgmt API call to CRUD the configuration parameters now.\n\nThis stuff is removed.","commit_id":"ee94011ea939cec1c32cfe003332f2af02bbfb85"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"a1d7734a53ab074bd310336ef7405169f1108591","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    get_db_api().configure_db(CONF)"},{"line_number":340,"context_line":"    datastore_version \u003d DatastoreVersion.load_by_uuid(datastore_version_id)"},{"line_number":341,"context_line":"    config \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":342,"context_line":"        datastore_version_id, id)"},{"line_number":343,"context_line":"    config.name \u003d name"},{"line_number":344,"context_line":"    config.datastore_version_id \u003d datastore_version.id"},{"line_number":345,"context_line":"    config.restart_required \u003d restart_required"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_c1157d9c","line":342,"in_reply_to":"1ae5cdf2_e8e2919e","updated":"2014-06-16 20:39:10.000000000","message":"This is a naming thing. Its technically the name of the configuration_parameter but passed through because {id} is what we use in the route.\n\nI think i should change that to be more clear in the code.","commit_id":"ee94011ea939cec1c32cfe003332f2af02bbfb85"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        for item in config_items:"},{"line_number":164,"context_line":"            rule \u003d find_parameter_details(str(item.configuration_key))"},{"line_number":165,"context_line":"            if rule.data_type \u003d\u003d \u0027boolean\u0027:"},{"line_number":166,"context_line":"                item.configuration_value \u003d bool(int(item.configuration_value))"},{"line_number":167,"context_line":"            elif rule.data_type \u003d\u003d \u0027integer\u0027:"},{"line_number":168,"context_line":"                item.configuration_value \u003d int(item.configuration_value)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_ac0798c8","line":165,"updated":"2014-06-23 19:00:40.000000000","message":"Since find_parameter_details can return \u0027None\u0027, shouldnt we check for that first here.","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":187,"context_line":"            self.configuration_id)"},{"line_number":188,"context_line":"        config_items \u003d Configuration.load_items(self.context,"},{"line_number":189,"context_line":"                                                id\u003dself.configuration_id)"},{"line_number":190,"context_line":"        LOG.debug(\"config_items: %s\" % config_items)"},{"line_number":191,"context_line":"        detail_list \u003d DatastoreConfigurationParameters.load_parameters("},{"line_number":192,"context_line":"            datastore_v.id)"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_8c29fc3c","line":190,"updated":"2014-06-23 19:00:40.000000000","message":"Does this message need translation?","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            return None"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        for i in config_items:"},{"line_number":201,"context_line":"            LOG.debug(\"config item: %s\" % i)"},{"line_number":202,"context_line":"            details \u003d find_parameter_details(i.configuration_key)"},{"line_number":203,"context_line":"            LOG.debug(\"parameter details: %s\" % details)"},{"line_number":204,"context_line":"            if not details:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_0c1dec10","line":201,"updated":"2014-06-23 19:00:40.000000000","message":"Do these debug messages need translation?","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"2b0dd740c4031fe05d5ab0c4108841cce966034e","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            return None"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        for i in config_items:"},{"line_number":201,"context_line":"            LOG.debug(\"config item: %s\" % i)"},{"line_number":202,"context_line":"            details \u003d find_parameter_details(i.configuration_key)"},{"line_number":203,"context_line":"            LOG.debug(\"parameter details: %s\" % details)"},{"line_number":204,"context_line":"            if not details:"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_58d4ca1e","line":201,"in_reply_to":"1ae5cdf2_0c1dec10","updated":"2014-06-25 07:10:40.000000000","message":"no debug lines should be translated.","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"def load_datastore_configuration_parameters(datastore_version_id, config_file):"},{"line_number":340,"context_line":"    with open(config_file) as f:"},{"line_number":341,"context_line":"        config \u003d json.load(f)"},{"line_number":342,"context_line":"        for param in config[\u0027configuration-parameters\u0027]:"},{"line_number":343,"context_line":"            create_or_update_datastore_configuration_parameter("}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_8c281cf0","line":340,"updated":"2014-06-23 19:00:40.000000000","message":"Shouldnt we place this whole block within a try except statement? I could be missing something but are we checking anywhere else whether the config_file location given is valid? Thank you.","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"2b0dd740c4031fe05d5ab0c4108841cce966034e","unresolved":false,"context_lines":[{"line_number":337,"context_line":""},{"line_number":338,"context_line":""},{"line_number":339,"context_line":"def load_datastore_configuration_parameters(datastore_version_id, config_file):"},{"line_number":340,"context_line":"    with open(config_file) as f:"},{"line_number":341,"context_line":"        config \u003d json.load(f)"},{"line_number":342,"context_line":"        for param in config[\u0027configuration-parameters\u0027]:"},{"line_number":343,"context_line":"            create_or_update_datastore_configuration_parameter("}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_b8794e32","line":340,"in_reply_to":"1ae5cdf2_8c281cf0","updated":"2014-06-25 07:10:40.000000000","message":"This is called from the `trove manage` cmd so its caught and printed to the shell.","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    @staticmethod"},{"line_number":148,"context_line":"    def load_items(context, id):"},{"line_number":149,"context_line":"        datastore_v \u003d Configuration.load_configuration_datastore_version("},{"line_number":150,"context_line":"            context,"},{"line_number":151,"context_line":"            id)"},{"line_number":152,"context_line":"        config_items \u003d ConfigurationParameter.find_all(configuration_id\u003did,"},{"line_number":153,"context_line":"                                                       deleted\u003dFalse).all()"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_503fe5de","line":150,"updated":"2014-07-25 15:45:06.000000000","message":"could you please move `id` attribute to the same line with `context` ?","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    @staticmethod"},{"line_number":148,"context_line":"    def load_items(context, id):"},{"line_number":149,"context_line":"        datastore_v \u003d Configuration.load_configuration_datastore_version("},{"line_number":150,"context_line":"            context,"},{"line_number":151,"context_line":"            id)"},{"line_number":152,"context_line":"        config_items \u003d ConfigurationParameter.find_all(configuration_id\u003did,"},{"line_number":153,"context_line":"                                                       deleted\u003dFalse).all()"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_6ade4edc","line":150,"in_reply_to":"baada198_503fe5de","updated":"2014-07-29 17:01:11.000000000","message":"although i\u0027d prefer this as well, if it\u0027s not being flagged by pep/flake8, and it\u0027s not specifically mentioned in the hacking rules, we shouldn\u0027t try and enforce our own personal style rules.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        for item in config_items:"},{"line_number":164,"context_line":"            rule \u003d find_parameter_details(str(item.configuration_key))"},{"line_number":165,"context_line":"            if not rule:"},{"line_number":166,"context_line":"                continue"},{"line_number":167,"context_line":"            if rule.data_type \u003d\u003d \u0027boolean\u0027:"},{"line_number":168,"context_line":"                item.configuration_value \u003d bool(int(item.configuration_value))"},{"line_number":169,"context_line":"            elif rule.data_type \u003d\u003d \u0027integer\u0027:"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_b6691ac2","line":166,"updated":"2014-07-25 15:45:06.000000000","message":"Correct me if i\u0027m wrong.\n\nIf rule equals to None - next few calls would fail with AttributeError since NoneType has no `data_type` attribute.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        for item in config_items:"},{"line_number":164,"context_line":"            rule \u003d find_parameter_details(str(item.configuration_key))"},{"line_number":165,"context_line":"            if not rule:"},{"line_number":166,"context_line":"                continue"},{"line_number":167,"context_line":"            if rule.data_type \u003d\u003d \u0027boolean\u0027:"},{"line_number":168,"context_line":"                item.configuration_value \u003d bool(int(item.configuration_value))"},{"line_number":169,"context_line":"            elif rule.data_type \u003d\u003d \u0027integer\u0027:"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_6a7acebb","line":166,"in_reply_to":"baada198_b6691ac2","updated":"2014-07-29 17:01:11.000000000","message":"the continue statement forces control back to the top, so we\u0027re good here.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    def does_configuration_need_restart(self):"},{"line_number":187,"context_line":"        datastore_v \u003d Configuration.load_configuration_datastore_version("},{"line_number":188,"context_line":"            self.context,"},{"line_number":189,"context_line":"            self.configuration_id)"},{"line_number":190,"context_line":"        config_items \u003d Configuration.load_items(self.context,"},{"line_number":191,"context_line":"                                                id\u003dself.configuration_id)"},{"line_number":192,"context_line":"        LOG.debug(\"config_items: %s\" % config_items)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_b6ee7a1f","line":189,"updated":"2014-07-25 15:45:06.000000000","message":"could you please move `self.configuration_id` to the previous line?","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        detail_list \u003d DatastoreConfigurationParameters.load_parameters("},{"line_number":194,"context_line":"            datastore_v.id)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        def find_parameter_details(name):"},{"line_number":197,"context_line":"            for item in detail_list:"},{"line_number":198,"context_line":"                if item.name \u003d\u003d name:"},{"line_number":199,"context_line":"                    return item"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_16d9e682","line":196,"updated":"2014-07-25 15:45:06.000000000","message":"it seems that this method appear more than one time, could you please extract this method and make it shared?","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ab65e129cd587567d7fbf5523ef2457eb213213d","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        detail_list \u003d DatastoreConfigurationParameters.load_parameters("},{"line_number":194,"context_line":"            datastore_v.id)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        def find_parameter_details(name):"},{"line_number":197,"context_line":"            for item in detail_list:"},{"line_number":198,"context_line":"                if item.name \u003d\u003d name:"},{"line_number":199,"context_line":"                    return item"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_43732ce8","line":196,"in_reply_to":"baada198_16d9e682","updated":"2014-07-29 21:44:04.000000000","message":"yeah i think that sounds like a good idea.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            LOG.debug(\"parameter details: %s\" % details)"},{"line_number":206,"context_line":"            if not details:"},{"line_number":207,"context_line":"                raise exception.NotFound(uuid\u003di.configuration_key)"},{"line_number":208,"context_line":"            if bool(details.restart_required):"},{"line_number":209,"context_line":"                return True"},{"line_number":210,"context_line":"        return False"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_7636a2b5","line":208,"range":{"start_line":208,"start_character":12,"end_line":208,"end_character":17},"updated":"2014-07-25 15:45:06.000000000","message":"i guess this could be simplified - return bool(details.restart_required) - in any cases it will return True or False (exactly what you need).\n\nThoughts ?","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            LOG.debug(\"parameter details: %s\" % details)"},{"line_number":206,"context_line":"            if not details:"},{"line_number":207,"context_line":"                raise exception.NotFound(uuid\u003di.configuration_key)"},{"line_number":208,"context_line":"            if bool(details.restart_required):"},{"line_number":209,"context_line":"                return True"},{"line_number":210,"context_line":"        return False"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_e50a8f1f","line":208,"in_reply_to":"baada198_7636a2b5","updated":"2014-07-29 17:01:11.000000000","message":"+1","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"3b2fecf61142eff409c983ab8d4bec33200edddf","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            LOG.debug(\"parameter details: %s\" % details)"},{"line_number":206,"context_line":"            if not details:"},{"line_number":207,"context_line":"                raise exception.NotFound(uuid\u003di.configuration_key)"},{"line_number":208,"context_line":"            if bool(details.restart_required):"},{"line_number":209,"context_line":"                return True"},{"line_number":210,"context_line":"        return False"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_34d66954","line":208,"in_reply_to":"baada198_838f04cd","updated":"2014-07-29 22:32:06.000000000","message":"good call craig, hastily +1\u0027d on accord of the prior comment. this should not be changed.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ab65e129cd587567d7fbf5523ef2457eb213213d","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            LOG.debug(\"parameter details: %s\" % details)"},{"line_number":206,"context_line":"            if not details:"},{"line_number":207,"context_line":"                raise exception.NotFound(uuid\u003di.configuration_key)"},{"line_number":208,"context_line":"            if bool(details.restart_required):"},{"line_number":209,"context_line":"                return True"},{"line_number":210,"context_line":"        return False"},{"line_number":211,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_838f04cd","line":208,"in_reply_to":"baada198_e50a8f1f","updated":"2014-07-29 21:44:04.000000000","message":"No i think this would not get the result that we wish out of this method.\n\nThis is a loop and we should only return something inside of it if there we find a \"details.restart_required\" that is true. if we exhaust all the items then we can return false.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"class DatastoreConfigurationParameters(dbmodels.DatabaseModelBase):"},{"line_number":259,"context_line":"    \"\"\"Model for storing the configuration parameters on a datastore.\"\"\""},{"line_number":260,"context_line":"    _auto_generated_attrs \u003d [\u0027id\u0027]"},{"line_number":261,"context_line":"    _data_fields \u003d ["},{"line_number":262,"context_line":"        \u0027name\u0027,"},{"line_number":263,"context_line":"        \u0027datastore_version_id\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_b653dadc","line":260,"updated":"2014-07-25 15:45:06.000000000","message":"According to DatabaseModelBase spec you don\u0027t need to add this line, id attribute will generated automaticaly.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"class DatastoreConfigurationParameters(dbmodels.DatabaseModelBase):"},{"line_number":259,"context_line":"    \"\"\"Model for storing the configuration parameters on a datastore.\"\"\""},{"line_number":260,"context_line":"    _auto_generated_attrs \u003d [\u0027id\u0027]"},{"line_number":261,"context_line":"    _data_fields \u003d ["},{"line_number":262,"context_line":"        \u0027name\u0027,"},{"line_number":263,"context_line":"        \u0027datastore_version_id\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_c03d7990","line":260,"in_reply_to":"baada198_b653dadc","updated":"2014-07-29 17:01:11.000000000","message":"+1","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ab65e129cd587567d7fbf5523ef2457eb213213d","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"class DatastoreConfigurationParameters(dbmodels.DatabaseModelBase):"},{"line_number":259,"context_line":"    \"\"\"Model for storing the configuration parameters on a datastore.\"\"\""},{"line_number":260,"context_line":"    _auto_generated_attrs \u003d [\u0027id\u0027]"},{"line_number":261,"context_line":"    _data_fields \u003d ["},{"line_number":262,"context_line":"        \u0027name\u0027,"},{"line_number":263,"context_line":"        \u0027datastore_version_id\u0027,"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_6ef2d7e4","line":260,"in_reply_to":"baada198_c03d7990","updated":"2014-07-29 21:44:04.000000000","message":"magical","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def load_parameters(cls, datastore_version_id, show_deleted\u003dFalse):"},{"line_number":276,"context_line":"        try:"},{"line_number":277,"context_line":"            if show_deleted:"},{"line_number":278,"context_line":"                return get_db_api().find_all("},{"line_number":279,"context_line":"                    cls,"},{"line_number":280,"context_line":"                    datastore_version_id\u003ddatastore_version_id"},{"line_number":281,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_56643eb2","line":278,"updated":"2014-07-25 15:45:06.000000000","message":"in both cases you would need to use get_db_api(), you could extract it to class-visible parameter and re-use it.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"3b2fecf61142eff409c983ab8d4bec33200edddf","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def load_parameters(cls, datastore_version_id, show_deleted\u003dFalse):"},{"line_number":276,"context_line":"        try:"},{"line_number":277,"context_line":"            if show_deleted:"},{"line_number":278,"context_line":"                return get_db_api().find_all("},{"line_number":279,"context_line":"                    cls,"},{"line_number":280,"context_line":"                    datastore_version_id\u003ddatastore_version_id"},{"line_number":281,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_14c0857c","line":278,"in_reply_to":"baada198_2e00df65","updated":"2014-07-29 22:32:06.000000000","message":"i\u0027m indifferent.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ab65e129cd587567d7fbf5523ef2457eb213213d","unresolved":false,"context_lines":[{"line_number":275,"context_line":"    def load_parameters(cls, datastore_version_id, show_deleted\u003dFalse):"},{"line_number":276,"context_line":"        try:"},{"line_number":277,"context_line":"            if show_deleted:"},{"line_number":278,"context_line":"                return get_db_api().find_all("},{"line_number":279,"context_line":"                    cls,"},{"line_number":280,"context_line":"                    datastore_version_id\u003ddatastore_version_id"},{"line_number":281,"context_line":"                )"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_2e00df65","line":278,"in_reply_to":"baada198_56643eb2","updated":"2014-07-29 21:44:04.000000000","message":"that would make this line look worse i think since its a classmethod.\n\n    db \u003d get_db_api()\n    ...\n    return DatastoreConfigurationParameters.db.find_all(...)","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        config.min_size \u003d min_size"},{"line_number":340,"context_line":"        config.data_type \u003d data_type"},{"line_number":341,"context_line":"        get_db_api().save(config)"},{"line_number":342,"context_line":"    except Exception:"},{"line_number":343,"context_line":"        config \u003d DatastoreConfigurationParameters("},{"line_number":344,"context_line":"            id\u003dutils.generate_uuid(),"},{"line_number":345,"context_line":"            name\u003dname,"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_962fb6f5","line":342,"updated":"2014-07-25 15:45:06.000000000","message":"i think this here should be used \u0027ModelNotFound\u0027 instead of \u0027Exception\u0027","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        config.min_size \u003d min_size"},{"line_number":340,"context_line":"        config.data_type \u003d data_type"},{"line_number":341,"context_line":"        get_db_api().save(config)"},{"line_number":342,"context_line":"    except Exception:"},{"line_number":343,"context_line":"        config \u003d DatastoreConfigurationParameters("},{"line_number":344,"context_line":"            id\u003dutils.generate_uuid(),"},{"line_number":345,"context_line":"            name\u003dname,"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_452b3b95","line":342,"in_reply_to":"baada198_962fb6f5","updated":"2014-07-29 17:01:11.000000000","message":"agreed; catching it generically is dangerous here because it could be due to constraints.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"ff05f81fd1a960cb697f5799257b0a764e226641","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                overrides[i.configuration_key] \u003d i.configuration_value"},{"line_number":184,"context_line":"        return overrides"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def does_configuration_need_restart(self):"},{"line_number":187,"context_line":"        datastore_v \u003d Configuration.load_configuration_datastore_version("},{"line_number":188,"context_line":"            self.context,"},{"line_number":189,"context_line":"            self.configuration_id)"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_29d44f1e","line":186,"updated":"2014-08-06 11:01:27.000000000","message":"if you:\n\n(1) create an instance\n\n(2) create a configuration-group with wait_timeout\u003d123\n\n(3) attach the configuration group to the instance\n\n(4) configuration-parameter-delete wait_timeout from that datastore-version\n\nand then attempt to do a configuration-detach on that instance, it will fail in this method because DatastoreConfigurationParameters.load_parameters() is not permitting deleted\u003d1.\n\n    [req-81f40fb7-2ac6-4c37-805a-d91c362eaf73 8a26b74b920d40d5a1547394073935ba 31aaa7810bc34daaad8ba88593c56c30] Exception during message handling\n    Traceback (most recent call last):\n      File \"/opt/stack/trove/trove/openstack/common/rpc/amqp.py\", line 440, in _process_data\n        **args)\n      File \"/opt/stack/trove/trove/openstack/common/rpc/dispatcher.py\", line 172, in dispatch\n        result \u003d getattr(proxyobj, method)(ctxt, **kwargs)\n      File \"/opt/stack/trove/trove/taskmanager/manager.py\", line 99, in unassign_configuration\n        instance_tasks.unassign_configuration(flavor, configuration_id)\n      File \"/opt/stack/trove/trove/taskmanager/models.py\", line 923, in unassign_configuration\n        self.update_overrides(overrides, remove\u003dTrue)\n      File \"/opt/stack/trove/trove/taskmanager/models.py\", line 855, in update_overrides\n        need_restart \u003d config.does_configuration_need_restart()\n      File \"/opt/stack/trove/trove/configuration/models.py\", line 202, in does_configuration_need_restart\n        raise exception.NotFound(uuid\u003di.configuration_key)\n    NotFound: Resource wait_timeout cannot be found.\n\n\nthe user doesn\u0027t see this, because it happens in the taskmanager; so the configuration-detach claims success via the CLI/UI, but it\u0027s never actually detached.\n\nnote: different flavors of this problem exist. another example would be to use the configuration-group above (with the deleted parameter), and try to attach to a different existing instance, or boot a new instance with it. for these cases, a helpful message noting that the parameter is no longer supported is expected, but for a detach, it should just *work*.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"87aa2bed4e2f9f0f9683e72cee1dfc8a4fed6d00","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                overrides[i.configuration_key] \u003d i.configuration_value"},{"line_number":184,"context_line":"        return overrides"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def does_configuration_need_restart(self):"},{"line_number":187,"context_line":"        datastore_v \u003d Configuration.load_configuration_datastore_version("},{"line_number":188,"context_line":"            self.context,"},{"line_number":189,"context_line":"            self.configuration_id)"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_ef16d3f0","line":186,"in_reply_to":"1abeadc6_d576aaa3","updated":"2014-08-26 06:11:09.000000000","message":"i just tested this case and i did not see an error like above. The default was set back and the overrides.cnf file was not on the guest after detaching the configuration.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"3bdd470639ca8ba6040ec2ba64e51805bb38476d","unresolved":false,"context_lines":[{"line_number":183,"context_line":"                overrides[i.configuration_key] \u003d i.configuration_value"},{"line_number":184,"context_line":"        return overrides"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def does_configuration_need_restart(self):"},{"line_number":187,"context_line":"        datastore_v \u003d Configuration.load_configuration_datastore_version("},{"line_number":188,"context_line":"            self.context,"},{"line_number":189,"context_line":"            self.configuration_id)"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_d576aaa3","line":186,"in_reply_to":"baada198_29d44f1e","updated":"2014-08-20 20:24:34.000000000","message":"i will add a test case for this but i need to make sure to get *all* config params (even deleted ones).","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"3bdd470639ca8ba6040ec2ba64e51805bb38476d","unresolved":false,"context_lines":[{"line_number":345,"context_line":"        datastore_version_id)"},{"line_number":346,"context_line":"    try:"},{"line_number":347,"context_line":"        config \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":348,"context_line":"            datastore_version_id, name)"},{"line_number":349,"context_line":"        config.restart_required \u003d restart_required"},{"line_number":350,"context_line":"        config.max_size \u003d max_size"},{"line_number":351,"context_line":"        config.min_size \u003d min_size"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_7576b6d8","line":348,"updated":"2014-08-20 20:24:34.000000000","message":"add \", show_deleted\u003dTrue)\".","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                                id\u003dself.configuration_id)"},{"line_number":192,"context_line":"        LOG.debug(\"config_items: %s\" % config_items)"},{"line_number":193,"context_line":"        detail_list \u003d DatastoreConfigurationParameters.load_parameters("},{"line_number":194,"context_line":"            datastore_v.id, show_deleted\u003dTrue)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        for i in config_items:"},{"line_number":197,"context_line":"            LOG.debug(\"config item: %s\" % i)"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_8620734a","line":194,"updated":"2014-08-28 17:11:18.000000000","message":"Just wondering about the show_deleted\u003dTrue... Are you checking deleted parameters because the act of deleting a parameter that requires a restart means a restart is required (since it was modified (via delete))? Makes sense so far. But does this mean that we will forever require a restart, even in the scenario where all non-deleted parameters of a config don\u0027t require a restart?","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d8221ec44f42e4309abaa2189c8125e6394e4f6e","unresolved":false,"context_lines":[{"line_number":191,"context_line":"                                                id\u003dself.configuration_id)"},{"line_number":192,"context_line":"        LOG.debug(\"config_items: %s\" % config_items)"},{"line_number":193,"context_line":"        detail_list \u003d DatastoreConfigurationParameters.load_parameters("},{"line_number":194,"context_line":"            datastore_v.id, show_deleted\u003dTrue)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        for i in config_items:"},{"line_number":197,"context_line":"            LOG.debug(\"config item: %s\" % i)"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_55327b5e","line":194,"in_reply_to":"1abeadc6_8620734a","updated":"2014-08-28 18:38:49.000000000","message":"yes for older config groups that a user may have created before the param was deleted. any new grps will not run into this case.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    \"\"\"Model for storing the configuration parameters on a datastore.\"\"\""},{"line_number":256,"context_line":"    _auto_generated_attrs \u003d [\u0027id\u0027]"},{"line_number":257,"context_line":"    _data_fields \u003d ["},{"line_number":258,"context_line":"        \u0027name\u0027,"},{"line_number":259,"context_line":"        \u0027datastore_version_id\u0027,"},{"line_number":260,"context_line":"        \u0027restart_required\u0027,"},{"line_number":261,"context_line":"        \u0027max_size\u0027,"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_695a48f3","line":258,"updated":"2014-08-28 17:11:18.000000000","message":"An observation: In DBConfigurationParameter, the \"configuration key\" field is named \"configuration_key.\" In DBDatastoreConfigurationParameters, the \"configuration key\" field is named \"name.\" Why are they named differently?","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d8221ec44f42e4309abaa2189c8125e6394e4f6e","unresolved":false,"context_lines":[{"line_number":255,"context_line":"    \"\"\"Model for storing the configuration parameters on a datastore.\"\"\""},{"line_number":256,"context_line":"    _auto_generated_attrs \u003d [\u0027id\u0027]"},{"line_number":257,"context_line":"    _data_fields \u003d ["},{"line_number":258,"context_line":"        \u0027name\u0027,"},{"line_number":259,"context_line":"        \u0027datastore_version_id\u0027,"},{"line_number":260,"context_line":"        \u0027restart_required\u0027,"},{"line_number":261,"context_line":"        \u0027max_size\u0027,"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_95ced381","line":258,"in_reply_to":"1abeadc6_695a48f3","updated":"2014-08-28 18:38:49.000000000","message":"this is so that the labels match the names from the api output.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        \"\"\"Create a configuration parameter for a datastore version.\"\"\""},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        # Do we already have a parameter in the db?"},{"line_number":280,"context_line":"        # yes: and its deleted then modify the param"},{"line_number":281,"context_line":"        # yes: and its not deleted then error on create."},{"line_number":282,"context_line":"        # no: then just create the new param"},{"line_number":283,"context_line":"        ds_v_id \u003d kwargs.get(\u0027datastore_version_id\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_66d357d5","line":280,"updated":"2014-08-28 17:11:18.000000000","message":"Is there a precedent for this \"row-reuse?\" If the point of a soft-delete is to preserve it for historical purposes (is that the point?) then this reuse is destructive. Just a thought.\n\nEDIT: I now see there\u0027s a UniqueConstraint on (datastore_version_id, name).","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"6575b8b695717d1e6988170559f6bfb27dc202d1","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        \"\"\"Create a configuration parameter for a datastore version.\"\"\""},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        # Do we already have a parameter in the db?"},{"line_number":280,"context_line":"        # yes: and its deleted then modify the param"},{"line_number":281,"context_line":"        # yes: and its not deleted then error on create."},{"line_number":282,"context_line":"        # no: then just create the new param"},{"line_number":283,"context_line":"        ds_v_id \u003d kwargs.get(\u0027datastore_version_id\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_d5304beb","line":280,"in_reply_to":"1abeadc6_66d357d5","updated":"2014-08-28 18:11:35.000000000","message":"this is purposeful; the precedent was datastore/datastore-version, agent heartbeat, etc.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    @staticmethod"},{"line_number":309,"context_line":"    def delete(version_id, config_param_id):"},{"line_number":310,"context_line":"        config_param \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":311,"context_line":"            version_id, config_param_id)"},{"line_number":312,"context_line":"        config_param.deleted \u003d True"},{"line_number":313,"context_line":"        config_param.deleted_at \u003d datetime.utcnow()"},{"line_number":314,"context_line":"        config_param.save()"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_893a44cb","line":311,"updated":"2014-08-28 17:11:18.000000000","message":"I\u0027m not understanding how passing in the config_param_id works for the load_parameter_by_name call.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d8221ec44f42e4309abaa2189c8125e6394e4f6e","unresolved":false,"context_lines":[{"line_number":308,"context_line":"    @staticmethod"},{"line_number":309,"context_line":"    def delete(version_id, config_param_id):"},{"line_number":310,"context_line":"        config_param \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":311,"context_line":"            version_id, config_param_id)"},{"line_number":312,"context_line":"        config_param.deleted \u003d True"},{"line_number":313,"context_line":"        config_param.deleted_at \u003d datetime.utcnow()"},{"line_number":314,"context_line":"        config_param.save()"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_957c1322","line":311,"in_reply_to":"1abeadc6_893a44cb","updated":"2014-08-28 18:38:49.000000000","message":"hmm i think the naming is a bit off. from the api we parse the uri for the {id} which is actually the name of the param. in this method we could change it to config_param_name","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":329,"context_line":"            raise exception.NotFound(uuid\u003ddatastore_version_id)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    @classmethod"},{"line_number":332,"context_line":"    def load_parameter(cls, config_id, show_deleted\u003dFalse):"},{"line_number":333,"context_line":"        try:"},{"line_number":334,"context_line":"            if show_deleted:"},{"line_number":335,"context_line":"                return DBDatastoreConfigurationParameters.find_by("}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_2905b010","line":332,"updated":"2014-08-28 17:11:18.000000000","message":"If I\u0027m reading this right, may I suggest that config_id be renamed to config_param_id?","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d8221ec44f42e4309abaa2189c8125e6394e4f6e","unresolved":false,"context_lines":[{"line_number":329,"context_line":"            raise exception.NotFound(uuid\u003ddatastore_version_id)"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"    @classmethod"},{"line_number":332,"context_line":"    def load_parameter(cls, config_id, show_deleted\u003dFalse):"},{"line_number":333,"context_line":"        try:"},{"line_number":334,"context_line":"            if show_deleted:"},{"line_number":335,"context_line":"                return DBDatastoreConfigurationParameters.find_by("}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_3595ff32","line":332,"in_reply_to":"1abeadc6_2905b010","updated":"2014-08-28 18:38:49.000000000","message":"no this should be using the actual id.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":343,"context_line":"            raise exception.NotFound(uuid\u003dconfig_id)"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    @classmethod"},{"line_number":346,"context_line":"    def load_parameter_by_name(cls, datastore_version_id, config_name,"},{"line_number":347,"context_line":"                               show_deleted\u003dFalse):"},{"line_number":348,"context_line":"        try:"},{"line_number":349,"context_line":"            if show_deleted:"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_a93e20b6","line":346,"updated":"2014-08-28 17:11:18.000000000","message":"May I suggest config_name be renamed to config_parameter_name?","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d8221ec44f42e4309abaa2189c8125e6394e4f6e","unresolved":false,"context_lines":[{"line_number":343,"context_line":"            raise exception.NotFound(uuid\u003dconfig_id)"},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"    @classmethod"},{"line_number":346,"context_line":"    def load_parameter_by_name(cls, datastore_version_id, config_name,"},{"line_number":347,"context_line":"                               show_deleted\u003dFalse):"},{"line_number":348,"context_line":"        try:"},{"line_number":349,"context_line":"            if show_deleted:"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_5596fb3e","line":346,"in_reply_to":"1abeadc6_a93e20b6","updated":"2014-08-28 18:38:49.000000000","message":"i\u0027d agree.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"}],"trove/configuration/service.py":[{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"abec8fde80fa719318839f7bfe1574b7c18e8316","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        return items"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    @staticmethod"},{"line_number":173,"context_line":"    def _validate_configuration(values, datastore_manager\u003dNone):"},{"line_number":174,"context_line":"        rules \u003d configurations.get_validation_rules("},{"line_number":175,"context_line":"            datastore_manager\u003ddatastore_manager)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_b3397c41","line":173,"updated":"2014-05-22 23:29:10.000000000","message":"trove/common/configurations.py was not included in this patch, which means configurations.get_validation_rules() is still loading validation-rules.json vs. consulting the database table.\n\nhttps://github.com/openstack/trove/blob/6d051af5d9c2428d5df8e552635f755cf3212afa/trove/common/configurations.py#L48-L52\n\nhow to reproduce: load the configuration parameters in the database, then move mysql/validation-rules.json to mysql/bak-validation-rules.json and attempt to do a \u0027trove configuration-create\u0027. you\u0027ll see:\n\n    2014-05-22 23:20:57.294 ERROR trove.common.configurations [req-c04028e9-71d5-4254-91e8-20dc55484867 20e873926cae45d98c9a0d0ad492c36e 24619b078a8b4dfca9b86844017c0fdf] This     operation is not supported for this datastore at this time\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations Traceback (most recent call last):\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/opt/stack/trove/trove/common/configurations.py\", line 51, in get_validation_rules\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     template \u003d ENV.get_template(config_location)\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/usr/lib/python2.7/dist-packages/jinja2/environment.py\", line 719, in get_template\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     return self._load_template(name, self.make_globals(globals))\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/usr/lib/python2.7/dist-packages/jinja2/environment.py\", line 693, in _load_template\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     template \u003d self.loader.load(self, name, globals)\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/usr/lib/python2.7/dist-packages/jinja2/loaders.py\", line 115, in load\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     source, filename, uptodate \u003d self.get_source(environment, name)\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations   File \"/usr/lib/python2.7/dist-packages/jinja2/loaders.py\", line 377, in get_source\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations     raise TemplateNotFound(template)\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations TemplateNotFound: mysql/validation-rules.json\n    2014-05-22 23:20:57.294 TRACE trove.common.configurations","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        return items"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    @staticmethod"},{"line_number":173,"context_line":"    def _validate_configuration(values, datastore_manager\u003dNone):"},{"line_number":174,"context_line":"        rules \u003d configurations.get_validation_rules("},{"line_number":175,"context_line":"            datastore_manager\u003ddatastore_manager)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_eef13d6b","line":173,"in_reply_to":"7adec928_b3397c41","updated":"2014-05-23 21:11:23.000000000","message":"yeah i need to fix this stuff","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ee83621e3f38bf4853da18c37c4db22864db2097","unresolved":false,"context_lines":[{"line_number":170,"context_line":"        return items"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    @staticmethod"},{"line_number":173,"context_line":"    def _validate_configuration(values, datastore_manager\u003dNone):"},{"line_number":174,"context_line":"        rules \u003d configurations.get_validation_rules("},{"line_number":175,"context_line":"            datastore_manager\u003ddatastore_manager)"},{"line_number":176,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3ae8d1ca_21e34f34","line":173,"in_reply_to":"7adec928_eef13d6b","updated":"2014-05-29 15:44:49.000000000","message":"removed all the common.configurations stuff that reads the json file.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            rule \u003d DatastoreConfigurationParameters.load_parameter_by_name("},{"line_number":177,"context_line":"                datastore_version.id, k)"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"            if (not rule or rule.deleted):"},{"line_number":180,"context_line":"                output \u003d {\"key\": k}"},{"line_number":181,"context_line":"                msg \u003d _(\"The parameter provided for the configuration \""},{"line_number":182,"context_line":"                        \"%(key)s is not available.\") % output"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_8cc49c0f","line":179,"updated":"2014-06-23 19:00:40.000000000","message":"I dont think we need the parenthesis in the if statement here","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"1b3275981ebbe88e50ad1aaeed636a3efe4203de","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            # type checking"},{"line_number":206,"context_line":"            valueType \u003d rule.data_type"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            if not isinstance(v, ConfigurationsController._find_type("},{"line_number":209,"context_line":"                    valueType)):"},{"line_number":210,"context_line":"                output \u003d {\"key\": k, \"type\": valueType}"},{"line_number":211,"context_line":"                msg \u003d _(\"The value provided for the configuration \""}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_e6fb64bc","line":208,"updated":"2014-08-06 10:43:10.000000000","message":"this isinstance() check is not quite correct in all situations.\n\nexample:\n\nconfiguration-parameter-list shows:\n\n    \u003csnip\u003e\n    | sort_buffer_size               | integer | 32768    | 18446744073709547520 |                0 |\n    | sync_binlog                    | integer | 0        | 18446744073709547520 |                0 |\n    | wait_timeout                   | integer | 1        | 31536000             |                0 |\n    +--------------------------------+---------+----------+----------------------+------------------+\n    \u003c/snip\u003e\n\nattempting to set sync_binlog to its maximum results in:\n\n    $ trove configuration-create newgroup2 \u0027{\"sync_binlog\": 18446744073709547520}\u0027 --datastore mysql --datastore_version \"5.5\"\n    ERROR: The value provided for the configuration parameter sync_binlog is not of type integer. (HTTP 422)\n\nstack from trove-api.log:\n\n      File \"/opt/stack/trove/trove/openstack/common/wsgi.py\", line 404, in dispatch\n        return method(*args, **kwargs)\n      File \"/opt/stack/trove/trove/configuration/service.py\", line 104, in create\n        datastore_version\u003ddatastore_version)\n      File \"/opt/stack/trove/trove/configuration/service.py\", line 213, in _validate_configuration\n        raise exception.UnprocessableEntity(message\u003dmsg)\n    UnprocessableEntity: The value provided for the configuration parameter sync_binlog is not of type integer.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"87aa2bed4e2f9f0f9683e72cee1dfc8a4fed6d00","unresolved":false,"context_lines":[{"line_number":205,"context_line":"            # type checking"},{"line_number":206,"context_line":"            valueType \u003d rule.data_type"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            if not isinstance(v, ConfigurationsController._find_type("},{"line_number":209,"context_line":"                    valueType)):"},{"line_number":210,"context_line":"                output \u003d {\"key\": k, \"type\": valueType}"},{"line_number":211,"context_line":"                msg \u003d _(\"The value provided for the configuration \""}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_6fb003f5","line":208,"in_reply_to":"baada198_e6fb64bc","updated":"2014-08-26 06:11:09.000000000","message":"This was actually a known bug after my first pass on this some of our guys found. Looks like the solution with checking for isinstance(x, (int, long)) solved this one. :)","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"3bdd470639ca8ba6040ec2ba64e51805bb38476d","unresolved":false,"context_lines":[{"line_number":213,"context_line":"                raise exception.UnprocessableEntity(message\u003dmsg)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"            # integer min/max checking"},{"line_number":216,"context_line":"            if isinstance(v, int) and not isinstance(v, bool):"},{"line_number":217,"context_line":"                try:"},{"line_number":218,"context_line":"                    min_value \u003d int(rule.min_size)"},{"line_number":219,"context_line":"                except ValueError:"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_d506aa85","line":216,"updated":"2014-08-20 20:24:34.000000000","message":"isinstance(v, (int,long)) is the fix.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                raise exception.UnprocessableEntity(message\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            # type checking"},{"line_number":206,"context_line":"            valueType \u003d rule.data_type"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            if not isinstance(v, ConfigurationsController._find_type("},{"line_number":209,"context_line":"                    valueType)):"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_a9ce2058","line":206,"updated":"2014-08-28 17:11:18.000000000","message":"Any reason valueType is camel-case?","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d8221ec44f42e4309abaa2189c8125e6394e4f6e","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                raise exception.UnprocessableEntity(message\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            # type checking"},{"line_number":206,"context_line":"            valueType \u003d rule.data_type"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            if not isinstance(v, ConfigurationsController._find_type("},{"line_number":209,"context_line":"                    valueType)):"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_1513a3b8","line":206,"in_reply_to":"1abeadc6_a9ce2058","updated":"2014-08-28 18:38:49.000000000","message":"/me shruggs. maybe some copy pasta...","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"6575b8b695717d1e6988170559f6bfb27dc202d1","unresolved":false,"context_lines":[{"line_number":203,"context_line":"                raise exception.UnprocessableEntity(message\u003dmsg)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"            # type checking"},{"line_number":206,"context_line":"            valueType \u003d rule.data_type"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            if not isinstance(v, ConfigurationsController._find_type("},{"line_number":209,"context_line":"                    valueType)):"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_b53e6fb6","line":206,"in_reply_to":"1abeadc6_a9ce2058","updated":"2014-08-28 18:11:35.000000000","message":"good catch.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                except ValueError:"},{"line_number":220,"context_line":"                    raise exception.TroveError(_("},{"line_number":221,"context_line":"                        \"Invalid or unsupported min value defined in the \""},{"line_number":222,"context_line":"                        \"configuration-parameters configuration file. \""},{"line_number":223,"context_line":"                        \"Expected integer.\"))"},{"line_number":224,"context_line":"                if v \u003c min_value:"},{"line_number":225,"context_line":"                    output \u003d {\"key\": k, \"min\": min_value}"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_4932ec5e","line":222,"updated":"2014-08-28 17:11:18.000000000","message":"Is \"configuration file\" still accurate?","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"6575b8b695717d1e6988170559f6bfb27dc202d1","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                except ValueError:"},{"line_number":220,"context_line":"                    raise exception.TroveError(_("},{"line_number":221,"context_line":"                        \"Invalid or unsupported min value defined in the \""},{"line_number":222,"context_line":"                        \"configuration-parameters configuration file. \""},{"line_number":223,"context_line":"                        \"Expected integer.\"))"},{"line_number":224,"context_line":"                if v \u003c min_value:"},{"line_number":225,"context_line":"                    output \u003d {\"key\": k, \"min\": min_value}"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_f5446748","line":222,"in_reply_to":"1abeadc6_4932ec5e","updated":"2014-08-28 18:11:35.000000000","message":"yes, because the initial values for the database are loaded from the file.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                except ValueError:"},{"line_number":234,"context_line":"                    raise exception.TroveError(_("},{"line_number":235,"context_line":"                        \"Invalid or unsupported max value defined in the \""},{"line_number":236,"context_line":"                        \"configuration-parameters configuration file. \""},{"line_number":237,"context_line":"                        \"Expected integer.\"))"},{"line_number":238,"context_line":"                if v \u003e max_value:"},{"line_number":239,"context_line":"                    output \u003d {\"key\": k, \"max\": max_value}"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_297f70e1","line":236,"updated":"2014-08-28 17:11:18.000000000","message":"Same comment as line 222.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"6575b8b695717d1e6988170559f6bfb27dc202d1","unresolved":false,"context_lines":[{"line_number":233,"context_line":"                except ValueError:"},{"line_number":234,"context_line":"                    raise exception.TroveError(_("},{"line_number":235,"context_line":"                        \"Invalid or unsupported max value defined in the \""},{"line_number":236,"context_line":"                        \"configuration-parameters configuration file. \""},{"line_number":237,"context_line":"                        \"Expected integer.\"))"},{"line_number":238,"context_line":"                if v \u003e max_value:"},{"line_number":239,"context_line":"                    output \u003d {\"key\": k, \"max\": max_value}"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_b5658fe2","line":236,"in_reply_to":"1abeadc6_297f70e1","updated":"2014-08-28 18:11:35.000000000","message":"yes, because the initial values for the database are loaded from the file.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"class ParametersController(wsgi.Controller):"},{"line_number":268,"context_line":"    def index(self, req, tenant_id, datastore, id):"},{"line_number":269,"context_line":"        ds, ds_version \u003d ds_models.get_datastore_version("},{"line_number":270,"context_line":"            type\u003ddatastore, version\u003did)"},{"line_number":271,"context_line":"        rules \u003d models.DatastoreConfigurationParameters.load_parameters("}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_e9ff3800","line":268,"updated":"2014-08-28 17:11:18.000000000","message":"I realize these signatures didn\u0027t change but, in the next four methods, \"datastore version id\" appears to be referred to as both \"id\" and \"version.\" I think it would be ideal if they were named \"datastore_version_id\" (for unambiguousness and consistency).\n\nEDIT: I now realize that the first two methods are really taking \"datastore_id_or_name\" and \"datastore_version_id_or_name.\" Perhaps those would be better names for the first two and the last two could be \"datastore_version_id?\"\n\nAlong the same line, the \"name\" parameter could benefit by being renamed to \"config_param_name.\"","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"}],"trove/configuration/views.py":[{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        for p in self.configs:"},{"line_number":127,"context_line":"            param \u003d ConfigurationParameterView(p)"},{"line_number":128,"context_line":"            params.append(param.data())"},{"line_number":129,"context_line":"        return {\"configuration-parameters\": params}"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_fec2eb51","line":129,"updated":"2014-05-23 00:28:56.000000000","message":"should be configuration_parameters not configuration-parameters (underscore is the established pattern).","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        for p in self.configs:"},{"line_number":127,"context_line":"            param \u003d ConfigurationParameterView(p)"},{"line_number":128,"context_line":"            params.append(param.data())"},{"line_number":129,"context_line":"        return {\"configuration-parameters\": params}"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_cebc816f","line":129,"in_reply_to":"7adec928_fec2eb51","updated":"2014-05-23 21:11:23.000000000","message":"this is a great idea but the payload is already formatted like this as we mentioned in the #trove channel.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        ret \u003d {"},{"line_number":108,"context_line":"            \"name\": self.config.name,"},{"line_number":109,"context_line":"            \"restart_required\": self.config.restart_required,"},{"line_number":110,"context_line":"            \"type\": self.config.data_type,"},{"line_number":111,"context_line":"        }"},{"line_number":112,"context_line":"        if self.config.max_size:"},{"line_number":113,"context_line":"            ret[\"max_size\"] \u003d int(self.config.max_size)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_aac93827","line":110,"updated":"2014-06-23 19:00:40.000000000","message":"Cant we capture the database_version_id here as well?","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        if self.config.max_size:"},{"line_number":113,"context_line":"            ret[\"max_size\"] \u003d int(self.config.max_size)"},{"line_number":114,"context_line":"        if self.config.min_size:"},{"line_number":115,"context_line":"            ret[\"min_size\"] \u003d int(self.config.min_size)"},{"line_number":116,"context_line":"        return ret"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_6adf30d7","line":115,"updated":"2014-06-23 19:00:40.000000000","message":"Whatabout the deleted and deleted_at parameters?","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            \"datastore_version_id\": self.config.datastore_version_id,"},{"line_number":124,"context_line":"            \"restart_required\": self.config.restart_required,"},{"line_number":125,"context_line":"            \"type\": self.config.data_type,"},{"line_number":126,"context_line":"            \"deleted\": self.config.deleted,"},{"line_number":127,"context_line":"            \"deleted_at\": self.config.deleted_at,"},{"line_number":128,"context_line":"        }"},{"line_number":129,"context_line":"        if self.config.max_size:"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_c053b914","line":126,"updated":"2014-07-29 17:01:11.000000000","message":"deleted and deleted_at won\u0027t be returned in the non-mgmt flow, will they? (as far as i can tell, the query excludes deleted ones, making these fields not useful).","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        if self.config.max_size:"},{"line_number":130,"context_line":"            ret[\"max_size\"] \u003d int(self.config.max_size)"},{"line_number":131,"context_line":"        if self.config.min_size:"},{"line_number":132,"context_line":"            ret[\"min_size\"] \u003d int(self.config.min_size)"},{"line_number":133,"context_line":"        return ret"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_05d94384","line":132,"updated":"2014-07-29 17:01:11.000000000","message":"it seems a bit odd that inbound, min_size and max_size are supposed to be integer strings (e.g. \"123\"), but outbound they\u0027re returned as regular integers. for consistency, it should be a string in both directions.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"}],"trove/db/sqlalchemy/migrate_repo/versions/026_datastore_parameters.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"7e2251a85e34b1ed064098065d910a08ed4e87e5","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    meta,"},{"line_number":33,"context_line":"    Column(\u0027id\u0027, String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"    Column(\u0027name\u0027, String(256), nullable\u003dFalse),"},{"line_number":35,"context_line":"    Column(\u0027datastore_version_id\u0027, String(36), nullable\u003dFalse),"},{"line_number":36,"context_line":"    Column(\u0027restart_required\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":37,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":38,"context_line":"    Column(\u0027min_size\u0027, String(40)),"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXX%2F%2F1VU%3D","line":35,"updated":"2014-04-25 22:37:01.000000000","message":"Can you make this a foreign key to the datastore_version table?","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"bf0a5e1dfd51f1a613f1a51df0585afef4757be3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    meta,"},{"line_number":33,"context_line":"    Column(\u0027id\u0027, String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":34,"context_line":"    Column(\u0027name\u0027, String(256), nullable\u003dFalse),"},{"line_number":35,"context_line":"    Column(\u0027datastore_version_id\u0027, String(36), nullable\u003dFalse),"},{"line_number":36,"context_line":"    Column(\u0027restart_required\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":37,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":38,"context_line":"    Column(\u0027min_size\u0027, String(40)),"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_0d13245d","line":35,"in_reply_to":"AAAAXX%2F%2F1VU%3D","updated":"2014-04-29 20:30:01.000000000","message":"ok","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"2fb321e26c7514f673ee3d891b04d9ac01afcc73","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Rackspace"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_d8a9c725","line":2,"updated":"2014-05-22 22:49:45.000000000","message":"needs to be 027_datastore_parameters.py because 026_datastore_versions_unique_fix.py recently merged.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Rackspace"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_0eb74987","line":2,"in_reply_to":"7adec928_d8a9c725","updated":"2014-05-23 21:11:23.000000000","message":"yeah this might need to be 040_ by the time its merged :-p.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"f7b7b7eb6b2b92b3cdfed204d1b84d939a0d247e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"           primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":38,"context_line":"    Column(\u0027restart_required\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":39,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":40,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027data_type\u0027, String(256), nullable\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_381b8b81","line":40,"updated":"2014-05-22 22:56:44.000000000","message":"why have max_size/min_size as a String?","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"           primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":38,"context_line":"    Column(\u0027restart_required\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":39,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":40,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027data_type\u0027, String(256), nullable\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_d14d0474","line":40,"in_reply_to":"7adec928_381b8b81","updated":"2014-05-23 21:11:23.000000000","message":"same as from the apischema comment:\n\nthe min_size and max_size are stored as a string because the max size is longer than the int size and truncates.\n\nExample: \nmysql option max_heap_table_size for 64 bit Range\t16384 .. 1844674407370954752\n\nhttp://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_heap_table_size","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"f7b7b7eb6b2b92b3cdfed204d1b84d939a0d247e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    Column(\u0027restart_required\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":39,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":40,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027data_type\u0027, String(256), nullable\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":44,"context_line":")"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_d31c486d","line":41,"updated":"2014-05-22 22:56:44.000000000","message":"256 seems a bit excessive, let\u0027s go with 128.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    Column(\u0027restart_required\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":39,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":40,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027data_type\u0027, String(256), nullable\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":44,"context_line":")"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_8eaa7917","line":41,"in_reply_to":"7adec928_d31c486d","updated":"2014-05-23 21:11:23.000000000","message":"sounds good. I wasnt sure.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"f7b7b7eb6b2b92b3cdfed204d1b84d939a0d247e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":40,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027data_type\u0027, String(256), nullable\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":44,"context_line":")"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_f8004304","line":42,"updated":"2014-05-22 22:56:44.000000000","message":"deleted should not be defaulted (see other tables for the precedent)","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ee83621e3f38bf4853da18c37c4db22864db2097","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":40,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027data_type\u0027, String(256), nullable\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":44,"context_line":")"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3ae8d1ca_01bf33fc","line":42,"in_reply_to":"7adec928_91f29c98","updated":"2014-05-29 15:44:49.000000000","message":"but note taken and its removed.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":40,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027data_type\u0027, String(256), nullable\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":44,"context_line":")"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_91f29c98","line":42,"in_reply_to":"7adec928_f8004304","updated":"2014-05-23 21:11:23.000000000","message":"looking at other tables i dont see a precedent either way.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"f7b7b7eb6b2b92b3cdfed204d1b84d939a0d247e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":55,"context_line":"    # Not dropping the tables for concern if rollback needed would cause"},{"line_number":56,"context_line":"    # consumers to recreate configurations."},{"line_number":57,"context_line":"    drop_tables([datastore_configuration_parameters])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_d33368f4","line":57,"updated":"2014-05-22 22:56:44.000000000","message":"the comment says you\u0027re not going to drop the table, yet this line drops the table? i think you forgot to comment out this line.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":55,"context_line":"    # Not dropping the tables for concern if rollback needed would cause"},{"line_number":56,"context_line":"    # consumers to recreate configurations."},{"line_number":57,"context_line":"    drop_tables([datastore_configuration_parameters])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_ee669d28","line":57,"in_reply_to":"7adec928_d33368f4","updated":"2014-05-23 21:11:23.000000000","message":"LOL copy pasta.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"}],"trove/db/sqlalchemy/migrate_repo/versions/032_datastore_parameters.py":[{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":40,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027data_type\u0027, String(128), nullable\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse,),"},{"line_number":43,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":44,"context_line":")"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_654e7f3a","line":42,"updated":"2014-07-29 17:01:11.000000000","message":"deleted shouldn\u0027t need to be nullable\u003dFalse, because it should remain NULL unless set to 1 to indicate deletion.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":42,"context_line":"    Column(\u0027data_type\u0027, String(128), nullable\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted\u0027, Boolean()),"},{"line_number":44,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":45,"context_line":")"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_203c63c0","line":43,"updated":"2014-08-06 09:53:21.000000000","message":"i know on a prior review i stated this doesn\u0027t need to be nullable\u003dFalse, but since it seems you\u0027re inserting a value of 0 by default, nullable\u003dFalse should be here (this is consistent with how you\u0027re doing it for configuration_parameters.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"3bdd470639ca8ba6040ec2ba64e51805bb38476d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    Column(\u0027max_size\u0027, String(40)),"},{"line_number":41,"context_line":"    Column(\u0027min_size\u0027, String(40)),"},{"line_number":42,"context_line":"    Column(\u0027data_type\u0027, String(128), nullable\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted\u0027, Boolean()),"},{"line_number":44,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":45,"context_line":")"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_78dceb73","line":43,"in_reply_to":"baada198_203c63c0","updated":"2014-08-20 20:24:34.000000000","message":"overcome by events.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    Column(\u0027data_type\u0027, String(128), nullable\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted\u0027, Boolean()),"},{"line_number":44,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":45,"context_line":")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_a0487363","line":45,"updated":"2014-08-06 09:53:21.000000000","message":"needs:\n\n    UniqueConstraint(\u0027datastore_version_id\u0027, \u0027name\u0027)\n\notherwise it\u0027s possible to have the same exact parameter for a datastore. beyond protecting data integrity, you\u0027ll want to update the model in create() to check if it already exists and throw a meaningful exception message.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"87aa2bed4e2f9f0f9683e72cee1dfc8a4fed6d00","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    Column(\u0027data_type\u0027, String(128), nullable\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted\u0027, Boolean()),"},{"line_number":44,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":45,"context_line":")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_4f826701","line":45,"in_reply_to":"1abeadc6_755dd646","updated":"2014-08-26 06:11:09.000000000","message":"Ok this looks better.\n\nmysql\u003e describe datastore_configuration_parameters;\n+----------------------+--------------+------+-----+---------+-------+\n| Field                | Type         | Null | Key | Default | Extra |\n+----------------------+--------------+------+-----+---------+-------+\n| id                   | varchar(36)  | NO   | PRI | NULL    |       |\n| name                 | varchar(128) | NO   | PRI | NULL    |       |\n| datastore_version_id | varchar(36)  | NO   | PRI | NULL    |       |\n| restart_required     | tinyint(1)   | NO   |     | NULL    |       |\n| max_size             | varchar(40)  | YES  |     | NULL    |       |\n| min_size             | varchar(40)  | YES  |     | NULL    |       |\n| data_type            | varchar(128) | NO   |     | NULL    |       |\n| deleted              | tinyint(1)   | YES  |     | NULL    |       |\n| deleted_at           | datetime     | YES  |     | NULL    |       |\n+----------------------+--------------+------+-----+---------+-------+\n9 rows in set (0.00 sec)\n\nmysql\u003e SHOW CREATE TABLE datastore_configuration_parameters \\G\n*************************** 1. row ***************************\n       Table: datastore_configuration_parameters\nCreate Table: CREATE TABLE `datastore_configuration_parameters` (\n  `id` varchar(36) NOT NULL,\n  `name` varchar(128) NOT NULL,\n  `datastore_version_id` varchar(36) NOT NULL,\n  `restart_required` tinyint(1) NOT NULL,\n  `max_size` varchar(40) DEFAULT NULL,\n  `min_size` varchar(40) DEFAULT NULL,\n  `data_type` varchar(128) NOT NULL,\n  `deleted` tinyint(1) DEFAULT NULL,\n  `deleted_at` datetime DEFAULT NULL,\n  PRIMARY KEY (`id`,`name`,`datastore_version_id`),\n  UNIQUE KEY `UQ_datastore_configuration_parameters_datastore_version_id_name` (`datastore_version_id`,`name`),\n  CONSTRAINT `datastore_configuration_parameters_ibfk_1` FOREIGN KEY (`datastore_version_id`) REFERENCES `datastore_versions` (`id`)\n) ENGINE\u003dInnoDB DEFAULT CHARSET\u003dutf8\n1 row in set (0.00 sec)","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"3bdd470639ca8ba6040ec2ba64e51805bb38476d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    Column(\u0027data_type\u0027, String(128), nullable\u003dFalse),"},{"line_number":43,"context_line":"    Column(\u0027deleted\u0027, Boolean()),"},{"line_number":44,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":45,"context_line":")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_755dd646","line":45,"in_reply_to":"baada198_a0487363","updated":"2014-08-20 20:24:34.000000000","message":"+1","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"}],"trove/extensions/mgmt/configuration/service.py":[{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"22c55fed020a53cff29c7e65032c22608704fce1","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    schemas \u003d apischema.mgmt_configuration"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @admin_context"},{"line_number":35,"context_line":"    def create(self, req, body, tenant_id, version_id):"},{"line_number":36,"context_line":"        \"\"\"Create configuration parameter for datastore.\"\"\""},{"line_number":37,"context_line":"        LOG.info(_(\"Creating configuration parameter for datastore\"))"},{"line_number":38,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F4N4%3D","line":35,"updated":"2014-03-13 07:29:47.000000000","message":"add test case for this...","commit_id":"aa971d7537e096102a5cbe98afb7b7e6f24af08e"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"22c55fed020a53cff29c7e65032c22608704fce1","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        return wsgi.Result(None, 202)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    @admin_context"},{"line_number":63,"context_line":"    def modify(self, req, body, tenant_id, version_id, parameter_name):"},{"line_number":64,"context_line":"        \"\"\"Modify configuration parameter for datastore.\"\"\""},{"line_number":65,"context_line":"        LOG.info(_(\"Creating configuration parameter for datastore\"))"},{"line_number":66,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F4N0%3D","line":63,"updated":"2014-03-13 07:29:47.000000000","message":"add test case for this...","commit_id":"aa971d7537e096102a5cbe98afb7b7e6f24af08e"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"4987adc38bda7af5f7aa88162d88d98b6fecc265","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    @admin_context"},{"line_number":67,"context_line":"    def modify(self, req, body, tenant_id, version_id, parameter_name):"},{"line_number":68,"context_line":"        \"\"\"Modify configuration parameter for datastore.\"\"\""},{"line_number":69,"context_line":"        LOG.info(_(\"Creating configuration parameter for datastore\"))"},{"line_number":70,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":71,"context_line":"        LOG.debug(_(\"body : \u0027%s\u0027\\n\\n\") % body)"},{"line_number":72,"context_line":"        if not body:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_98d85b55","line":69,"updated":"2014-04-29 15:15:29.000000000","message":"Should the LOG say modiying configuration parameter here?","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"bf0a5e1dfd51f1a613f1a51df0585afef4757be3","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    @admin_context"},{"line_number":67,"context_line":"    def modify(self, req, body, tenant_id, version_id, parameter_name):"},{"line_number":68,"context_line":"        \"\"\"Modify configuration parameter for datastore.\"\"\""},{"line_number":69,"context_line":"        LOG.info(_(\"Creating configuration parameter for datastore\"))"},{"line_number":70,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":71,"context_line":"        LOG.debug(_(\"body : \u0027%s\u0027\\n\\n\") % body)"},{"line_number":72,"context_line":"        if not body:"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_9b3135a5","line":69,"in_reply_to":"bad4c104_98d85b55","updated":"2014-04-29 20:30:01.000000000","message":"good point","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"4987adc38bda7af5f7aa88162d88d98b6fecc265","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        parameter \u003d body[\u0027configuration-parameter\u0027]"},{"line_number":79,"context_line":"        name \u003d parameter[\u0027name\u0027]"},{"line_number":80,"context_line":"        restart_required \u003d bool(parameter[\u0027restart_required\u0027])"},{"line_number":81,"context_line":"        data_type \u003d parameter[\u0027data_type\u0027]"},{"line_number":82,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":83,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_d8b903eb","line":80,"updated":"2014-04-29 15:15:29.000000000","message":"not too familiar with the code base, but are these parameters validated somewhere else in the code, else we might need exception handling.","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"bf0a5e1dfd51f1a613f1a51df0585afef4757be3","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        parameter \u003d body[\u0027configuration-parameter\u0027]"},{"line_number":79,"context_line":"        name \u003d parameter[\u0027name\u0027]"},{"line_number":80,"context_line":"        restart_required \u003d bool(parameter[\u0027restart_required\u0027])"},{"line_number":81,"context_line":"        data_type \u003d parameter[\u0027data_type\u0027]"},{"line_number":82,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":83,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_bb0fd9e0","line":80,"in_reply_to":"bad4c104_d8b903eb","updated":"2014-04-29 20:30:01.000000000","message":"There is some validation that happens with jsonschema before it gets to the service method here. trove/common/apischema.py","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"af526cbf8057892cd66e910fb7ead09d9ad2e5e8","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        config_models.DatastoreConfigurationParameters.create("},{"line_number":90,"context_line":"            name\u003dname,"},{"line_number":91,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":92,"context_line":"            restart_required\u003drestart_required,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ad9bd40_d41c7a16","line":89,"updated":"2014-04-30 05:53:17.000000000","message":"needs to be a modify call ... whoops","commit_id":"d7b3d288e34b64aaeb39b04f349f5e681c25b614"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"af526cbf8057892cd66e910fb7ead09d9ad2e5e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"9ad9bd40_1417c2ee","line":98,"updated":"2014-04-30 05:53:17.000000000","message":"add the delete...","commit_id":"d7b3d288e34b64aaeb39b04f349f5e681c25b614"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        if not body:"},{"line_number":41,"context_line":"            raise exception.BadRequest(_(\"Invalid request body.\"))"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        parameter \u003d body[\u0027configuration-parameter\u0027]"},{"line_number":44,"context_line":"        name \u003d parameter[\u0027name\u0027]"},{"line_number":45,"context_line":"        restart_required \u003d bool(parameter[\u0027restart_required\u0027])"},{"line_number":46,"context_line":"        data_type \u003d parameter[\u0027data_type\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_1ea157a9","line":43,"updated":"2014-05-23 00:28:56.000000000","message":"should be configuration_parameters not configuration-parameters (underscore is the established pattern).","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"99f47f767ecd4017753311218db6bfc7bef9f5d3","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":50,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":51,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":52,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_d3f0c8cb","line":52,"updated":"2014-05-22 23:14:17.000000000","message":"if in the update scenario below, you\u0027re ensuring that if the data_type is integer that min/max are provided, then why aren\u0027t you doing it here as well?","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":50,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":51,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":52,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_de1fefb5","line":52,"in_reply_to":"7adec928_9e4ac725","updated":"2014-05-23 00:28:56.000000000","message":"also, should add validation that min is less than max (unless this is somehow possible in apischema.py)","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"cc642fffbecc6f1b57767acfa0f76253596f1cee","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":50,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":51,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":52,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_9e4ac725","line":52,"in_reply_to":"7adec928_d3f0c8cb","updated":"2014-05-23 00:06:26.000000000","message":"if the data_type is string, and if min_size and/or max_size is provided, the request should be rejected with an error (because min/max doesn\u0027t make sense for a non-numeric field).","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":50,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":51,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":52,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_3110e8a7","line":52,"in_reply_to":"7adec928_de1fefb5","updated":"2014-05-23 21:11:23.000000000","message":"yeah this actually show a bug we have with parameters being larger than the max int size causing overflow. Might need to address this differently.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"99f47f767ecd4017753311218db6bfc7bef9f5d3","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            max_size\u003dmax_size,"},{"line_number":62,"context_line":"            min_size\u003dmin_size"},{"line_number":63,"context_line":"        )"},{"line_number":64,"context_line":"        return wsgi.Result(None, 202)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    @admin_context"},{"line_number":67,"context_line":"    def update(self, req, body, tenant_id, version_id, id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_f3c22452","line":64,"updated":"2014-05-22 23:14:17.000000000","message":"this should be 200 because processing is completed.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        if not body:"},{"line_number":73,"context_line":"            raise exception.BadRequest(_(\"Invalid request body.\"))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        parameter \u003d body[\u0027configuration-parameter\u0027]"},{"line_number":76,"context_line":"        restart_required \u003d bool(parameter[\u0027restart_required\u0027])"},{"line_number":77,"context_line":"        data_type \u003d parameter[\u0027data_type\u0027]"},{"line_number":78,"context_line":"        max_size \u003d None"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_5eabdf88","line":75,"updated":"2014-05-23 00:28:56.000000000","message":"should be configuration_parameters not configuration-parameters (underscore is the established pattern).","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"cc642fffbecc6f1b57767acfa0f76253596f1cee","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            if \u0027min_size\u0027 not in parameter:"},{"line_number":85,"context_line":"                raise exception.BadRequest(_(\"min_size is required for \""},{"line_number":86,"context_line":"                                             \"integer data type.\"))"},{"line_number":87,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":88,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":89,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":90,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_fe4f4b32","line":87,"updated":"2014-05-23 00:06:26.000000000","message":"if the data_type is string, and if min_size and/or max_size is provided, the request should be rejected with an error (because min/max doesn\u0027t make sense for a non-numeric field).","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            if \u0027min_size\u0027 not in parameter:"},{"line_number":85,"context_line":"                raise exception.BadRequest(_(\"min_size is required for \""},{"line_number":86,"context_line":"                                             \"integer data type.\"))"},{"line_number":87,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":88,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":89,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":90,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_fe1aebc4","line":87,"in_reply_to":"7adec928_fe4f4b32","updated":"2014-05-23 00:28:56.000000000","message":"also, should add validation that min is less than max (unless this is somehow possible in apischema.py)","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"99f47f767ecd4017753311218db6bfc7bef9f5d3","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        param.max_size \u003d max_size"},{"line_number":99,"context_line":"        param.min_size \u003d min_size"},{"line_number":100,"context_line":"        param.save()"},{"line_number":101,"context_line":"        return wsgi.Result(None, 202)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    @admin_context"},{"line_number":104,"context_line":"    def delete(self, req, tenant_id, version_id, id):"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_53abd888","line":101,"updated":"2014-05-22 23:14:17.000000000","message":"this should be 200 because processing is completed.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"cc642fffbecc6f1b57767acfa0f76253596f1cee","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        LOG.info(_(\"Deleting configuration parameter for datastore\"))"},{"line_number":107,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":108,"context_line":"        ds_config_params \u003d config_models.DatastoreConfigurationParameters"},{"line_number":109,"context_line":"        param \u003d ds_config_params.load_parameter_by_name("},{"line_number":110,"context_line":"            version_id, id)"},{"line_number":111,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":112,"context_line":"        param.delete()"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_be1a2316","line":109,"updated":"2014-05-23 00:06:26.000000000","message":"if you DELETE /mgmt/datastores/versions/5d6ac91b-cee9-42fe-ac98-70329f9f606d/parameters/auto_increment_increment, then you execute the same DELETE again, you\u0027ll get:\n\n    {\"instanceFault\": {\"message\": \"Internal Server Error. Please keep this ID to help us figure out what went wrong: \n(fed7fadf-0461-4b7a-a687-e540d126f2b2)\", \"code\": 500}}\n\n\n    2014-05-23 00:01:17.271 ERROR trove.common.wsgi [...: \u0027NoneType\u0027 object has no attribute \u0027delete\u0027\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi Traceback (most recent call last):\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi   File \"/opt/stack/trove/trove/common/wsgi.py\", line 251, in execute_action\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi     **action_args)\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi   File \"/opt/stack/trove/trove/openstack/common/wsgi.py\", line 395, in execute_action\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi     return self.dispatch(self.controller, action, request, **action_args)\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi   File \"/opt/stack/trove/trove/openstack/common/wsgi.py\", line 404, in dispatch\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi     return method(*args, **kwargs)\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi   File \"/opt/stack/trove/trove/common/auth.py\", line 86, in wrapper\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi     return f(*args, **kwargs)\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi   File \"/opt/stack/trove/trove/extensions/mgmt/configuration/service.py\", line 112, in delete\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi     param.delete()\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi AttributeError: \u0027NoneType\u0027 object has no attribute \u0027delete\u0027\n    2014-05-23 00:01:17.271 TRACE trove.common.wsgi","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ee83621e3f38bf4853da18c37c4db22864db2097","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        LOG.info(_(\"Deleting configuration parameter for datastore\"))"},{"line_number":107,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":108,"context_line":"        ds_config_params \u003d config_models.DatastoreConfigurationParameters"},{"line_number":109,"context_line":"        param \u003d ds_config_params.load_parameter_by_name("},{"line_number":110,"context_line":"            version_id, id)"},{"line_number":111,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":112,"context_line":"        param.delete()"}],"source_content_type":"text/x-python","patch_set":12,"id":"3ae8d1ca_c1a38b9c","line":109,"in_reply_to":"7adec928_be1a2316","updated":"2014-05-29 15:44:49.000000000","message":"fixed and added a test for this.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"99f47f767ecd4017753311218db6bfc7bef9f5d3","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            version_id, id)"},{"line_number":111,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":112,"context_line":"        param.delete()"},{"line_number":113,"context_line":"        return wsgi.Result(None, 202)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_d39e0863","line":113,"updated":"2014-05-22 23:14:17.000000000","message":"this should be 200 because processing is completed.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"9144f7319cfa44f7d8a75c2b1b19f3aaf34a1251","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":135,"context_line":"        ds_config_params \u003d config_models.DatastoreConfigurationParameters"},{"line_number":136,"context_line":"        param \u003d ds_config_params.load_parameter_by_name("},{"line_number":137,"context_line":"            version_id, id)"},{"line_number":138,"context_line":"        if not param:"},{"line_number":139,"context_line":"            raise exception.BadRequest(_(\"Parameter %s does not exist in the \""},{"line_number":140,"context_line":"                                         \"database.\") % id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_88e90d81","line":137,"updated":"2014-06-14 10:50:56.000000000","message":"same comment as another spot: the method has \"by_name\", but you\u0027re passing an id. is this a bug, or just unfortunate naming?","commit_id":"ee94011ea939cec1c32cfe003332f2af02bbfb85"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"920e3e3dba6629bfef5d8d66c21518f0b2c7162a","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":135,"context_line":"        ds_config_params \u003d config_models.DatastoreConfigurationParameters"},{"line_number":136,"context_line":"        param \u003d ds_config_params.load_parameter_by_name("},{"line_number":137,"context_line":"            version_id, id)"},{"line_number":138,"context_line":"        if not param:"},{"line_number":139,"context_line":"            raise exception.BadRequest(_(\"Parameter %s does not exist in the \""},{"line_number":140,"context_line":"                                         \"database.\") % id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1ae5cdf2_15e8dae0","line":137,"in_reply_to":"1ae5cdf2_88e90d81","updated":"2014-06-20 05:22:18.000000000","message":"i thought i might be able to change this but it would prove to be a bit difficult per the extension routes still using the `extensions.ResourceExtension` :(\n\nI\u0027d like to just keep this the way it is.","commit_id":"ee94011ea939cec1c32cfe003332f2af02bbfb85"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            if \u0027min_size\u0027 not in parameter:"},{"line_number":112,"context_line":"                raise exception.BadRequest(_(\"min_size is required for \""},{"line_number":113,"context_line":"                                             \"integer data type.\"))"},{"line_number":114,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":115,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":116,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":117,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_a54fab69","line":114,"updated":"2014-06-23 19:00:40.000000000","message":"What happens if data_type is not an integer and if max_size is in parameter? Is that a possibility?","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"2b0dd740c4031fe05d5ab0c4108841cce966034e","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            if \u0027min_size\u0027 not in parameter:"},{"line_number":112,"context_line":"                raise exception.BadRequest(_(\"min_size is required for \""},{"line_number":113,"context_line":"                                             \"integer data type.\"))"},{"line_number":114,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":115,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":116,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":117,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_980d7292","line":114,"in_reply_to":"1ae5cdf2_a54fab69","updated":"2014-06-25 07:10:40.000000000","message":"so max_size is passed in as a string because some max_size values are larger than an int. This is matching the same behavior we have now but just starting to store the parameters in the database instead of the json file.","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"7aff3231918d12c98aee8bcde13156c0dc6aa0e0","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if not param:"},{"line_number":139,"context_line":"            raise exception.BadRequest(_(\"Parameter %s does not exist in the \""},{"line_number":140,"context_line":"                                         \"database.\") % id)"},{"line_number":141,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":142,"context_line":"        param.delete()"},{"line_number":143,"context_line":"        return wsgi.Result(None, 200)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_05105f4e","line":141,"updated":"2014-06-23 19:00:40.000000000","message":"Was this intended for globalization?","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"2b0dd740c4031fe05d5ab0c4108841cce966034e","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if not param:"},{"line_number":139,"context_line":"            raise exception.BadRequest(_(\"Parameter %s does not exist in the \""},{"line_number":140,"context_line":"                                         \"database.\") % id)"},{"line_number":141,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":142,"context_line":"        param.delete()"},{"line_number":143,"context_line":"        return wsgi.Result(None, 200)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_181962d1","line":141,"in_reply_to":"1ae5cdf2_05105f4e","updated":"2014-06-25 07:10:40.000000000","message":"no just a debug","commit_id":"e3b81baf5d152ac75c9b27b3eb2ecf37fc7a1ab3"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        \"\"\"Create configuration parameter for datastore version.\"\"\""},{"line_number":57,"context_line":"        LOG.info(_(\"Creating configuration parameter for datastore\"))"},{"line_number":58,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":59,"context_line":"        LOG.debug(_(\"body : \u0027%s\u0027\\n\\n\") % body)"},{"line_number":60,"context_line":"        if not body:"},{"line_number":61,"context_line":"            raise exception.BadRequest(_(\"Invalid request body.\"))"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_566fde27","line":59,"updated":"2014-07-25 15:45:06.000000000","message":"debug level should not be wrapped","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        \"\"\"Create configuration parameter for datastore version.\"\"\""},{"line_number":57,"context_line":"        LOG.info(_(\"Creating configuration parameter for datastore\"))"},{"line_number":58,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":59,"context_line":"        LOG.debug(_(\"body : \u0027%s\u0027\\n\\n\") % body)"},{"line_number":60,"context_line":"        if not body:"},{"line_number":61,"context_line":"            raise exception.BadRequest(_(\"Invalid request body.\"))"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_8501d3b7","line":59,"in_reply_to":"baada198_566fde27","updated":"2014-07-29 17:01:11.000000000","message":"+1","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            max_size\u003dmax_size,"},{"line_number":89,"context_line":"            min_size\u003dmin_size"},{"line_number":90,"context_line":"        )"},{"line_number":91,"context_line":"        return wsgi.Result(None, 200)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @admin_context"},{"line_number":94,"context_line":"    def update(self, req, body, tenant_id, version_id, id):"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_56dd1edc","line":91,"updated":"2014-07-25 15:45:06.000000000","message":"shouldn\u0027t we return ConfigurationParameterView instead of None from https://review.openstack.org/#/c/79850/19/trove/configuration/views.py,cm ?","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            max_size\u003dmax_size,"},{"line_number":89,"context_line":"            min_size\u003dmin_size"},{"line_number":90,"context_line":"        )"},{"line_number":91,"context_line":"        return wsgi.Result(None, 200)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    @admin_context"},{"line_number":94,"context_line":"    def update(self, req, body, tenant_id, version_id, id):"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_60658dae","line":91,"in_reply_to":"baada198_56dd1edc","updated":"2014-07-29 17:01:11.000000000","message":"rather, MgmtConfigurationParameterView.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        \"\"\"Updating configuration parameter for datastore version.\"\"\""},{"line_number":96,"context_line":"        LOG.info(_(\"Updating configuration parameter for datastore\"))"},{"line_number":97,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":98,"context_line":"        LOG.debug(_(\"body : \u0027%s\u0027\\n\\n\") % body)"},{"line_number":99,"context_line":"        if not body:"},{"line_number":100,"context_line":"            raise exception.BadRequest(_(\"Invalid request body.\"))"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_7694e2e7","line":98,"updated":"2014-07-25 15:45:06.000000000","message":"same","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        \"\"\"Updating configuration parameter for datastore version.\"\"\""},{"line_number":96,"context_line":"        LOG.info(_(\"Updating configuration parameter for datastore\"))"},{"line_number":97,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":98,"context_line":"        LOG.debug(_(\"body : \u0027%s\u0027\\n\\n\") % body)"},{"line_number":99,"context_line":"        if not body:"},{"line_number":100,"context_line":"            raise exception.BadRequest(_(\"Invalid request body.\"))"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_05f5c3cb","line":98,"in_reply_to":"baada198_7694e2e7","updated":"2014-07-29 17:01:11.000000000","message":"+1 (to not wrapping debug)","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            if \u0027min_size\u0027 not in parameter:"},{"line_number":112,"context_line":"                raise exception.BadRequest(_(\"min_size is required for \""},{"line_number":113,"context_line":"                                             \"integer data type.\"))"},{"line_number":114,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":115,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":116,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":117,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_001cd113","line":114,"updated":"2014-07-29 17:01:11.000000000","message":"these two statements should be consolidated into and nested under the \"if data_type \u003d\u003d \"integer\"\" check, otherwise this permits setting min/max for data_type \u003d string.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        param.max_size \u003d max_size"},{"line_number":126,"context_line":"        param.min_size \u003d min_size"},{"line_number":127,"context_line":"        param.save()"},{"line_number":128,"context_line":"        return wsgi.Result(None, 200)"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    @admin_context"},{"line_number":131,"context_line":"    def delete(self, req, tenant_id, version_id, id):"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_809d416f","line":128,"updated":"2014-07-29 17:01:11.000000000","message":"why not return MgmtConfigurationParameterView?","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    def delete(self, req, tenant_id, version_id, id):"},{"line_number":132,"context_line":"        \"\"\"Delete configuration parameter for datastore version.\"\"\""},{"line_number":133,"context_line":"        LOG.info(_(\"Deleting configuration parameter for datastore\"))"},{"line_number":134,"context_line":"        LOG.debug(_(\"req : \u0027%s\u0027\\n\\n\") % req)"},{"line_number":135,"context_line":"        ds_config_params \u003d config_models.DatastoreConfigurationParameters"},{"line_number":136,"context_line":"        param \u003d ds_config_params.load_parameter_by_name("},{"line_number":137,"context_line":"            version_id, id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_80cf018b","line":134,"updated":"2014-07-29 17:01:11.000000000","message":"remove wrapping of debug.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                         \"database.\") % id)"},{"line_number":141,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":142,"context_line":"        param.delete()"},{"line_number":143,"context_line":"        return wsgi.Result(None, 200)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_76bb0275","line":143,"updated":"2014-07-25 15:45:06.000000000","message":"should be 202 or 204. See http://stackoverflow.com/questions/2342579/http-status-code-for-update-and-delete","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                         \"database.\") % id)"},{"line_number":141,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":142,"context_line":"        param.delete()"},{"line_number":143,"context_line":"        return wsgi.Result(None, 200)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_c0a739bb","line":143,"in_reply_to":"baada198_76bb0275","updated":"2014-07-29 17:01:11.000000000","message":"+1","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"ab65e129cd587567d7fbf5523ef2457eb213213d","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                         \"database.\") % id)"},{"line_number":141,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":142,"context_line":"        param.delete()"},{"line_number":143,"context_line":"        return wsgi.Result(None, 200)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_dea1cef8","line":143,"in_reply_to":"baada198_c0a739bb","updated":"2014-07-29 21:44:04.000000000","message":"umm i would understand 204 (no content) but 200 seems fine. a 202 would mean that the operation may not be completed yet but the line above it deletes the record and its not an async request. so i\u0027d say 200 would be fine. \n\nwhats the reason for 202 in this case?","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"3b2fecf61142eff409c983ab8d4bec33200edddf","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                         \"database.\") % id)"},{"line_number":141,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":142,"context_line":"        param.delete()"},{"line_number":143,"context_line":"        return wsgi.Result(None, 200)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_14ca456f","line":143,"in_reply_to":"baada198_dea1cef8","updated":"2014-07-29 22:32:06.000000000","message":"i was +1\u0027ing for the 204, 202 does not make sense.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"9609590be8632ce87916268dde6aa9c762d337e0","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                         \"database.\") % id)"},{"line_number":145,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":146,"context_line":"        param.delete()"},{"line_number":147,"context_line":"        return wsgi.Result(None, 202)"}],"source_content_type":"text/x-python","patch_set":20,"id":"baada198_549bdd72","line":147,"updated":"2014-07-29 22:31:58.000000000","message":"apologies about the confusion on my +1, it should be 204 (imo).","commit_id":"0772e3796570196b937499f05fa57babbf67ef1a"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"7e4ac7eb900b1aadd6282e3ff8b2fb8626726273","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                         \"database.\") % id)"},{"line_number":145,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":146,"context_line":"        param.delete()"},{"line_number":147,"context_line":"        return wsgi.Result(None, 202)"}],"source_content_type":"text/x-python","patch_set":20,"id":"baada198_ec518531","line":147,"in_reply_to":"baada198_549bdd72","updated":"2014-07-30 05:21:44.000000000","message":"i\u0027m on the fence. i guess i could let this fall your way but then i _think_ this would be the first time we used a 204 response.","commit_id":"0772e3796570196b937499f05fa57babbf67ef1a"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"f9277c53ff4548a6d032e4da8fd78113de807b79","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                                         \"database.\") % id)"},{"line_number":145,"context_line":"        LOG.debug(\"found param: %s\" % param)"},{"line_number":146,"context_line":"        param.delete()"},{"line_number":147,"context_line":"        return wsgi.Result(None, 202)"}],"source_content_type":"text/x-python","patch_set":20,"id":"baada198_c479adfc","line":147,"in_reply_to":"baada198_ec518531","updated":"2014-07-31 18:56:38.000000000","message":"after reading the rfc, the rule is that if a 204 is returned, there should be no response body. otherwise, if a 200 for a DELETE is returned, it *must* include a response body. therefore i\u0027d recommend 204 (because i can\u0027t see returning a response body that isn\u0027t bizarre).","commit_id":"0772e3796570196b937499f05fa57babbf67ef1a"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        data_type \u003d parameter[\u0027data_type\u0027]"},{"line_number":68,"context_line":"        max_size \u003d None"},{"line_number":69,"context_line":"        min_size \u003d None"},{"line_number":70,"context_line":"        if data_type \u003d\u003d \"integer\":"},{"line_number":71,"context_line":"            if \u0027max_size\u0027 not in parameter:"},{"line_number":72,"context_line":"                raise exception.BadRequest(_(\"max_size is required for \""},{"line_number":73,"context_line":"                                             \"integer data type.\"))"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_00b59fec","line":70,"updated":"2014-08-06 09:53:21.000000000","message":"begin block-1.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":78,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":79,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":80,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_60c3bb58","line":80,"updated":"2014-08-06 09:53:21.000000000","message":"end block-1.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"3bdd470639ca8ba6040ec2ba64e51805bb38476d","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if \u0027max_size\u0027 in parameter:"},{"line_number":78,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":79,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":80,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_382a732c","line":80,"in_reply_to":"baada198_60c3bb58","updated":"2014-08-20 20:24:34.000000000","message":"move this out into a new method since its redundant with the validation check of max\u003e\u003dmin.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":79,"context_line":"        if \u0027min_size\u0027 in parameter:"},{"line_number":80,"context_line":"            min_size \u003d int(parameter[\u0027min_size\u0027])"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        rule \u003d config_models.DatastoreConfigurationParameters.create("}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_e0a6ebbf","line":81,"updated":"2014-08-06 09:53:21.000000000","message":"block-1 can be simplified (and corrected) to:\n\n       if data_type \u003d\u003d \"integer\":\n            if \u0027max_size\u0027 not in parameter:\n                raise exception.BadRequest(_(\"max_size is required for \"\n                                             \"integer data type.\"))\n            if \u0027min_size\u0027 not in parameter:\n                raise exception.BadRequest(_(\"min_size is required for \"\n                                             \"integer data type.\"))\n            max_size \u003d int(parameter[\u0027max_size\u0027])\n            min_size \u003d int(parameter[\u0027min_size\u0027])\n            if max_size \u003c min_size:\n            \traise exception.BadRequest(_(\"max_size must be greater than or equal to min_size.\"))\n\n\nnote: adds the max vs. min check, otherwise the code right now permits max to be less than min. purposefully allowing min_size to possibly equal max_size (it\u0027s possible you want to force a parameter to be a very specific integer value).\n\nother note: this logic should also be ported to block-2.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        rule \u003d config_models.DatastoreConfigurationParameters.create("},{"line_number":85,"context_line":"            name\u003dname,"},{"line_number":86,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":87,"context_line":"            restart_required\u003drestart_required,"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_c09ba7c6","line":84,"updated":"2014-08-06 09:53:21.000000000","message":"should check if a rule with this \u0027name\u0027 for this datastore-version already exists, and if so, throw an exception stating it already exists and that they should use the update command instead (otherwise you\u0027ll end up with duplicates).","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"87aa2bed4e2f9f0f9683e72cee1dfc8a4fed6d00","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        rule \u003d config_models.DatastoreConfigurationParameters.create("},{"line_number":85,"context_line":"            name\u003dname,"},{"line_number":86,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":87,"context_line":"            restart_required\u003drestart_required,"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_529f6c03","line":84,"in_reply_to":"1abeadc6_98c62767","updated":"2014-08-26 06:11:09.000000000","message":"manually tested this and added a test case to suite.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"3bdd470639ca8ba6040ec2ba64e51805bb38476d","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        rule \u003d config_models.DatastoreConfigurationParameters.create("},{"line_number":85,"context_line":"            name\u003dname,"},{"line_number":86,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":87,"context_line":"            restart_required\u003drestart_required,"}],"source_content_type":"text/x-python","patch_set":27,"id":"1abeadc6_98c62767","line":84,"in_reply_to":"baada198_c04ac781","updated":"2014-08-20 20:24:34.000000000","message":"need to add a test validate this case.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"499d57c68db6b99229143ad0dceae343930a5c2d","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        datastore_version \u003d ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        rule \u003d config_models.DatastoreConfigurationParameters.create("},{"line_number":85,"context_line":"            name\u003dname,"},{"line_number":86,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":87,"context_line":"            restart_required\u003drestart_required,"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_c04ac781","line":84,"in_reply_to":"baada198_c09ba7c6","updated":"2014-08-06 10:00:46.000000000","message":"edit: if a rule already exists and is deleted\u003d0, then throw the exception above. if it already exists in the db, but it\u0027s deleted\u003d1, then simply use the object and re-set all the fields (as you\u0027re already doing below).\n\nthe reasoning here is that if someone does a configuration-parameter-delete, it\u0027s not shown in configuration-parameter-list, meaning a configuration-parameter-create should work. we want a UniqueConstraint on datastore_version_id and the name, so therefore the create in this situation is technically a db update.","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        data_type \u003d parameter[\u0027data_type\u0027]"},{"line_number":108,"context_line":"        max_size \u003d None"},{"line_number":109,"context_line":"        min_size \u003d None"},{"line_number":110,"context_line":"        if data_type \u003d\u003d \"integer\":"},{"line_number":111,"context_line":"            if \u0027max_size\u0027 not in parameter:"},{"line_number":112,"context_line":"                raise exception.BadRequest(_(\"max_size is required for \""},{"line_number":113,"context_line":"                                             \"integer data type.\"))"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_4074f736","line":110,"updated":"2014-08-06 09:53:21.000000000","message":"begin block-2","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"147f3977cc650e95e8ee4adb223073185abe0910","unresolved":false,"context_lines":[{"line_number":117,"context_line":"            if \u0027max_size\u0027 in parameter:"},{"line_number":118,"context_line":"                max_size \u003d int(parameter[\u0027max_size\u0027])"},{"line_number":119,"context_line":"            if \u0027min_size\u0027 in parameter:"},{"line_number":120,"context_line":"                min_size \u003d int(parameter[\u0027min_size\u0027])"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":123,"context_line":"        ds_config_params \u003d config_models.DatastoreConfigurationParameters"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_6071fb44","line":120,"updated":"2014-08-06 09:53:21.000000000","message":"end block-2","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"499d57c68db6b99229143ad0dceae343930a5c2d","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":123,"context_line":"        ds_config_params \u003d config_models.DatastoreConfigurationParameters"},{"line_number":124,"context_line":"        param \u003d ds_config_params.load_parameter_by_name("},{"line_number":125,"context_line":"            version_id, id)"},{"line_number":126,"context_line":"        param.restart_required \u003d restart_required"},{"line_number":127,"context_line":"        param.data_type \u003d data_type"}],"source_content_type":"text/x-python","patch_set":27,"id":"baada198_c031e70b","line":124,"updated":"2014-08-06 10:00:46.000000000","message":"as long as this doesn\u0027t permit a load of deleted\u003d1, this is ok (otherwise you need to tighten it to deleted\u003d0).","commit_id":"ffc480d0812164a63aae871ebd719da7220937c0"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                           200)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    @admin_context"},{"line_number":46,"context_line":"    def show(self, req, tenant_id, version_id, id):"},{"line_number":47,"context_line":"        \"\"\"Show a configuration parameter.\"\"\""},{"line_number":48,"context_line":"        ds_models.DatastoreVersion.load_by_uuid(version_id)"},{"line_number":49,"context_line":"        config_params \u003d config_models.DatastoreConfigurationParameters"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_44a733bd","line":46,"updated":"2014-08-28 17:11:18.000000000","message":"I\u0027m confused by id being passed to load_parameter_by_name. That method does not appear to have \"id or name\" logic. It must in fact be a name since you\u0027re requiring \"version_id.\" If this is a name, I propose to rename the parameter.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":98,"context_line":"            200)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @admin_context"},{"line_number":101,"context_line":"    def update(self, req, body, tenant_id, version_id, id):"},{"line_number":102,"context_line":"        \"\"\"Updating configuration parameter for datastore version.\"\"\""},{"line_number":103,"context_line":"        LOG.info(_(\"Updating configuration parameter for datastore\"))"},{"line_number":104,"context_line":"        LOG.debug(\"req : \u0027%s\u0027\\n\\n\" % req)"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_c4798330","line":101,"updated":"2014-08-28 17:11:18.000000000","message":"Same comment as line 46.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"}],"trove/extensions/mgmt/configuration/views.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"7e2251a85e34b1ed064098065d910a08ed4e87e5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \"datastore_version_id\": self.config.datastore_version_id,"},{"line_number":32,"context_line":"            \"restart_required\": self.config.restart_required,"},{"line_number":33,"context_line":"            \"data_type\": self.config.data_type,"},{"line_number":34,"context_line":"            \"max_size\": self.config.max_size,"},{"line_number":35,"context_line":"            \"deleted\": self.config.deleted,"},{"line_number":36,"context_line":"            \"deleted_at\": self.config.deleted_at,"},{"line_number":37,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXX%2F%2F1Pc%3D","line":34,"updated":"2014-04-25 22:37:01.000000000","message":"no min_size?","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"bf0a5e1dfd51f1a613f1a51df0585afef4757be3","unresolved":false,"context_lines":[{"line_number":31,"context_line":"            \"datastore_version_id\": self.config.datastore_version_id,"},{"line_number":32,"context_line":"            \"restart_required\": self.config.restart_required,"},{"line_number":33,"context_line":"            \"data_type\": self.config.data_type,"},{"line_number":34,"context_line":"            \"max_size\": self.config.max_size,"},{"line_number":35,"context_line":"            \"deleted\": self.config.deleted,"},{"line_number":36,"context_line":"            \"deleted_at\": self.config.deleted_at,"},{"line_number":37,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_dbb9fdea","line":34,"in_reply_to":"AAAAXX%2F%2F1Pc%3D","updated":"2014-04-29 20:30:01.000000000","message":"oh yeah.. i missed that. Thats why i needed to add some tests...","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e8b37c7d7993c7c90d12bcf993934932ca72a376","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from trove.openstack.common import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class MgmtConfigurationParameterView(object):"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_b6b11a93","line":19,"updated":"2014-07-25 15:45:06.000000000","message":"wasn\u0027t used","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from trove.openstack.common import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class MgmtConfigurationParameterView(object):"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_051ce313","line":19,"in_reply_to":"baada198_b6b11a93","updated":"2014-07-29 17:01:11.000000000","message":"+1","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":33,"context_line":"            \"deleted\": self.config.deleted,"},{"line_number":34,"context_line":"            \"deleted_at\": self.config.deleted_at,"},{"line_number":35,"context_line":"        }"},{"line_number":36,"context_line":"        if self.config.max_size:"},{"line_number":37,"context_line":"            ret[\"max_size\"] \u003d int(self.config.max_size)"},{"line_number":38,"context_line":"        if self.config.min_size:"},{"line_number":39,"context_line":"            ret[\"min_size\"] \u003d int(self.config.min_size)"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_c0781981","line":36,"updated":"2014-07-29 17:01:11.000000000","message":"it seems a bit odd that inbound, min_size and max_size are supposed to be integer strings (e.g. \"123\"), but outbound they\u0027re returned as regular integers. for consistency, it should be a string in both directions.","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"}],"trove/extensions/routes/mgmt.py":[{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"22c55fed020a53cff29c7e65032c22608704fce1","unresolved":false,"context_lines":[{"line_number":103,"context_line":"            member_actions\u003d{})"},{"line_number":104,"context_line":"        resources.append(datastore_configuration_parameters)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        LOG.debug(\"****************************************************\")"},{"line_number":107,"context_line":"        LOG.debug(\"mgmt api resources\")"},{"line_number":108,"context_line":"        LOG.debug(resources)"},{"line_number":109,"context_line":"        LOG.debug(\"****************************************************\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAWH%2F%2F4PA%3D","line":106,"updated":"2014-03-13 07:29:47.000000000","message":"remove this...","commit_id":"aa971d7537e096102a5cbe98afb7b7e6f24af08e"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"523d6b6a767d7fb19d3e022498fd4ac4af0aa46e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            collection_actions\u003d{\u0027action\u0027: \u0027POST\u0027})"},{"line_number":82,"context_line":"        resources.append(host_instances)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        datastore_configuration_parameters \u003d extensions.ResourceExtension("},{"line_number":85,"context_line":"            \u0027{tenant_id}/mgmt/datastores/versions/{version_id}/parameters\u0027,"},{"line_number":86,"context_line":"            conf_service.ConfigurationsParameterController(),"},{"line_number":87,"context_line":"            member_actions\u003d{})"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_3ed37360","line":84,"updated":"2014-05-22 23:50:10.000000000","message":"this is not explicit enough because if i POST:\n\n    {\"configuration-parameter\": {\"name\": \"auston\", \"restart_required\": 0, \"min_size\": \"1\", \"max_size\": \"10\", \"data_type\": \"integer\"}}\n\nthen i POST again with a different max_size:\n\n    {\"configuration-parameter\": {\"name\": \"auston\", \"restart_required\": 0, \"min_size\": \"1\", \"max_size\": \"50\", \"data_type\": \"integer\"}}\n\nthe request is accepted and the database is updated.\n\nPUT should be mapped to update, not POST.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"a6bf823c4d39d45352d800f570402a218f5688db","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            collection_actions\u003d{\u0027action\u0027: \u0027POST\u0027})"},{"line_number":82,"context_line":"        resources.append(host_instances)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        datastore_configuration_parameters \u003d extensions.ResourceExtension("},{"line_number":85,"context_line":"            \u0027{tenant_id}/mgmt/datastores/versions/{version_id}/parameters\u0027,"},{"line_number":86,"context_line":"            conf_service.ConfigurationsParameterController(),"},{"line_number":87,"context_line":"            member_actions\u003d{})"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_fe8d8bd4","line":84,"in_reply_to":"7adec928_3ed37360","updated":"2014-05-23 00:32:18.000000000","message":"hrm, i have a feeling you\u0027re doing this to support redstack running multiple times and not returning errors on loads.\n\nif that\u0027s the case, i can\u0027t think of any clever workaround, so this might be fine.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"98cc5ccfcbcc5b55330a3f854556f1882639b856","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            collection_actions\u003d{\u0027action\u0027: \u0027POST\u0027})"},{"line_number":82,"context_line":"        resources.append(host_instances)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        datastore_configuration_parameters \u003d extensions.ResourceExtension("},{"line_number":85,"context_line":"            \u0027{tenant_id}/mgmt/datastores/versions/{version_id}/parameters\u0027,"},{"line_number":86,"context_line":"            conf_service.ConfigurationsParameterController(),"},{"line_number":87,"context_line":"            member_actions\u003d{})"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_de2e0fa5","line":84,"in_reply_to":"7adec928_fe8d8bd4","updated":"2014-05-23 00:40:52.000000000","message":"actually, after looking @ https://review.openstack.org/#/c/79851/9/troveclient/v1/configurations.py i\u0027m a bit confused.\n\nwhy isn\u0027t the modify action a PUT against ..parameters/\u003cname\u003e? and if it was, then this post-to-update above can be removed/blocked.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        resources.append(host_instances)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        datastore_configuration_parameters \u003d extensions.ResourceExtension("},{"line_number":85,"context_line":"            \u0027{tenant_id}/mgmt/datastores/versions/{version_id}/parameters\u0027,"},{"line_number":86,"context_line":"            conf_service.ConfigurationsParameterController(),"},{"line_number":87,"context_line":"            member_actions\u003d{})"},{"line_number":88,"context_line":"        resources.append(datastore_configuration_parameters)"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_7eaedb99","line":85,"updated":"2014-05-23 00:28:56.000000000","message":"i\u0027d prefer this be /configuration_parameters vs. /parameters.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"64586868c4c64bd278e65b7ad94f659e4d81a47c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            conf_service.ConfigurationsParameterController(),"},{"line_number":87,"context_line":"            member_actions\u003d{})"},{"line_number":88,"context_line":"        resources.append(datastore_configuration_parameters)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        return resources"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_3e98d31a","line":89,"updated":"2014-05-23 00:28:56.000000000","message":"show and list (i.e. GET ..parameters/\u003cname\u003e and GET ..parameters) should work as well, no? as of now, they aren\u0027t impl\u0027d/working.","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"161ed30a90d4bca5511922146500dd8de126094b","unresolved":false,"context_lines":[{"line_number":86,"context_line":"            conf_service.ConfigurationsParameterController(),"},{"line_number":87,"context_line":"            member_actions\u003d{})"},{"line_number":88,"context_line":"        resources.append(datastore_configuration_parameters)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        return resources"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_d1634418","line":89,"in_reply_to":"7adec928_3e98d31a","updated":"2014-05-23 21:11:23.000000000","message":"this would be duplicated from the non-mgmt call so i left it out as part of the blueprint. But you bring a point that this should be included and make sure that it shows deleted parameters as well?","commit_id":"fe9b0955b662eefe96ea3a5ae3e89a9b5b7cbc04"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"7b3da0244af2356419d62c8fbb63715d908d615d","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from trove.common import extensions"},{"line_number":19,"context_line":"from trove.extensions.mgmt.instances.service import MgmtInstanceController"},{"line_number":20,"context_line":"from trove.extensions.mgmt.host.service import HostController"},{"line_number":21,"context_line":"from trove.extensions.mgmt.configuration import service as conf_service"},{"line_number":22,"context_line":"from trove.extensions.mgmt.quota.service import QuotaController"},{"line_number":23,"context_line":"from trove.extensions.mgmt.host.instance import service as hostservice"},{"line_number":24,"context_line":"from trove.extensions.mgmt.volume.service import StorageController"}],"source_content_type":"text/x-python","patch_set":19,"id":"baada198_459b3b73","line":21,"updated":"2014-07-29 17:01:11.000000000","message":"this import is not ordered correctly according to hacking rules (not ascending order, see http://docs.openstack.org/developer/hacking/#imports)","commit_id":"81aec9208c87dc30055aca24276299a52bf4481c"}],"trove/tests/api/configurations.py":[{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"4987adc38bda7af5f7aa88162d88d98b6fecc265","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        # tests get on a single parameter to verify it has expected attributes"},{"line_number":166,"context_line":"        param \u003d \u0027key_buffer_size\u0027"},{"line_number":167,"context_line":"        expected_config_params \u003d [\u0027id\u0027, \u0027name\u0027, \u0027restart_required\u0027,"},{"line_number":168,"context_line":"                                  \u0027max_size\u0027, \u0027min_size\u0027, \u0027type\u0027]"},{"line_number":169,"context_line":"        instance_info.dbaas.configuration_parameters.get_parameter("},{"line_number":170,"context_line":"            instance_info.dbaas_datastore,"},{"line_number":171,"context_line":"            instance_info.dbaas_datastore_version,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_9865bb47","line":168,"updated":"2014-04-29 15:15:29.000000000","message":"type or datatype?","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"bf0a5e1dfd51f1a613f1a51df0585afef4757be3","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        # tests get on a single parameter to verify it has expected attributes"},{"line_number":166,"context_line":"        param \u003d \u0027key_buffer_size\u0027"},{"line_number":167,"context_line":"        expected_config_params \u003d [\u0027id\u0027, \u0027name\u0027, \u0027restart_required\u0027,"},{"line_number":168,"context_line":"                                  \u0027max_size\u0027, \u0027min_size\u0027, \u0027type\u0027]"},{"line_number":169,"context_line":"        instance_info.dbaas.configuration_parameters.get_parameter("},{"line_number":170,"context_line":"            instance_info.dbaas_datastore,"},{"line_number":171,"context_line":"            instance_info.dbaas_datastore_version,"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_6195a2e3","line":168,"in_reply_to":"bad4c104_9865bb47","updated":"2014-04-29 20:30:01.000000000","message":"the contract we have is type from the json but data_type is better for the code since type is a reserved python word.","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                CONFIG_DESC)"},{"line_number":226,"context_line":"        except exceptions.NotFound:"},{"line_number":227,"context_line":"            resp, body \u003d instance_info.dbaas.client.last_response"},{"line_number":228,"context_line":"            assert_equal(resp.status, 404)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    @test"},{"line_number":231,"context_line":"    def test_configurations_create_invalid_value_type(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_44f4935a","line":228,"updated":"2014-08-28 17:11:18.000000000","message":"Why is this a 404?","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"d8221ec44f42e4309abaa2189c8125e6394e4f6e","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                CONFIG_DESC)"},{"line_number":226,"context_line":"        except exceptions.NotFound:"},{"line_number":227,"context_line":"            resp, body \u003d instance_info.dbaas.client.last_response"},{"line_number":228,"context_line":"            assert_equal(resp.status, 404)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    @test"},{"line_number":231,"context_line":"    def test_configurations_create_invalid_value_type(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_193f5db5","line":228,"in_reply_to":"1abeadc6_353dff8f","updated":"2014-08-28 18:38:49.000000000","message":"this is a not found because the config_param_name \u003d \u0027this_is_invalid\" is not found in the configuration_parameter list for the datastore. the string in the exception reflects this.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"6575b8b695717d1e6988170559f6bfb27dc202d1","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                CONFIG_DESC)"},{"line_number":226,"context_line":"        except exceptions.NotFound:"},{"line_number":227,"context_line":"            resp, body \u003d instance_info.dbaas.client.last_response"},{"line_number":228,"context_line":"            assert_equal(resp.status, 404)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    @test"},{"line_number":231,"context_line":"    def test_configurations_create_invalid_value_type(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_353dff8f","line":228,"in_reply_to":"1abeadc6_44f4935a","updated":"2014-08-28 18:11:35.000000000","message":"good catch, this shouldn\u0027t be possible considering the NotFound is pass\u0027d at https://review.openstack.org/#/c/79850/29/trove/configuration/models.py","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":605,"context_line":"            ds, ds_v)"},{"line_number":606,"context_line":"        client \u003d instance_info.dbaas_admin.mgmt_configs"},{"line_number":607,"context_line":"        config_param_name \u003d sql_variables[1]"},{"line_number":608,"context_line":"        client.delete(version.id, config_param_name)"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    @test(depends_on\u003d[test_delete_configuration_parameter_with_mgmt_api])"},{"line_number":611,"context_line":"    def test_unable_delete_instance_configurations(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_04dffbd6","line":608,"updated":"2014-08-28 17:11:18.000000000","message":"Should there be some kind of assertion here?","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"5eb0ce4eaf1e7eae8a8865b25e7787c53a05470f","unresolved":false,"context_lines":[{"line_number":605,"context_line":"            ds, ds_v)"},{"line_number":606,"context_line":"        client \u003d instance_info.dbaas_admin.mgmt_configs"},{"line_number":607,"context_line":"        config_param_name \u003d sql_variables[1]"},{"line_number":608,"context_line":"        client.delete(version.id, config_param_name)"},{"line_number":609,"context_line":""},{"line_number":610,"context_line":"    @test(depends_on\u003d[test_delete_configuration_parameter_with_mgmt_api])"},{"line_number":611,"context_line":"    def test_unable_delete_instance_configurations(self):"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_f9954140","line":608,"in_reply_to":"1abeadc6_04dffbd6","updated":"2014-08-28 18:48:22.000000000","message":"yup","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"}],"trove/tests/api/mgmt/configurations.py":[{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"4987adc38bda7af5f7aa88162d88d98b6fecc265","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright 2011 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_9894db38","line":1,"updated":"2014-04-29 15:15:29.000000000","message":"copyright year","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"bf0a5e1dfd51f1a613f1a51df0585afef4757be3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright 2011 OpenStack Foundation"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":6,"id":"bad4c104_5baa4d71","line":1,"in_reply_to":"bad4c104_9894db38","updated":"2014-04-29 20:30:01.000000000","message":"thats called copy-pasta","commit_id":"991434010dad62da946b1b4206429961c5f69566"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"89e0e234bbe8ef3da27f28f1d8109ef4dbc73284","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            min_size)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    @test"},{"line_number":201,"context_line":"    def test_config_parameter_was_deleleted_then_recreate_updates_it(self):"},{"line_number":202,"context_line":"        name \u003d \"test-delete-and-recreate-param\""},{"line_number":203,"context_line":"        restart_required \u003d 1"},{"line_number":204,"context_line":"        data_type \u003d \"string\""}],"source_content_type":"text/x-python","patch_set":30,"id":"1abeadc6_5f79ba80","line":201,"updated":"2014-08-28 17:13:19.000000000","message":"typo: deleleted","commit_id":"548e3656221a64aaf046d50b5acd0a6ffadc98dd"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"7cc7db9be4cbfae1e791c2f33b11fd0ca07b4942","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            min_size)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    @test"},{"line_number":201,"context_line":"    def test_config_parameter_was_deleleted_then_recreate_updates_it(self):"},{"line_number":202,"context_line":"        name \u003d \"test-delete-and-recreate-param\""},{"line_number":203,"context_line":"        restart_required \u003d 1"},{"line_number":204,"context_line":"        data_type \u003d \"string\""}],"source_content_type":"text/x-python","patch_set":30,"id":"1abeadc6_d5ff6ba9","line":201,"in_reply_to":"1abeadc6_5f79ba80","updated":"2014-08-28 18:15:01.000000000","message":"lolz","commit_id":"548e3656221a64aaf046d50b5acd0a6ffadc98dd"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"6518d26cb307a1f5340d333e45c15f382bb56586","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            min_size)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    @test"},{"line_number":201,"context_line":"    def test_config_parameter_was_deleleted_then_recreate_updates_it(self):"},{"line_number":202,"context_line":"        name \u003d \"test-delete-and-recreate-param\""},{"line_number":203,"context_line":"        restart_required \u003d 1"},{"line_number":204,"context_line":"        data_type \u003d \"string\""}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_bc5497fe","line":201,"updated":"2014-08-28 22:44:57.000000000","message":"Did you miss this typo?","commit_id":"a4deeea1b65128e6f7f925e93c92e08ea8344302"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"09998210fcf52517c2ed9af289d46d000ec389b8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"            min_size)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    @test"},{"line_number":201,"context_line":"    def test_config_parameter_was_deleleted_then_recreate_updates_it(self):"},{"line_number":202,"context_line":"        name \u003d \"test-delete-and-recreate-param\""},{"line_number":203,"context_line":"        restart_required \u003d 1"},{"line_number":204,"context_line":"        data_type \u003d \"string\""}],"source_content_type":"text/x-python","patch_set":31,"id":"1abeadc6_d4975aea","line":201,"in_reply_to":"1abeadc6_bc5497fe","updated":"2014-08-29 04:07:22.000000000","message":"i guess i did.","commit_id":"a4deeea1b65128e6f7f925e93c92e08ea8344302"}],"trove/tests/fakes/nova.py":[{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"2da662b5105935cc28c873b6b50868dd7cf4efa4","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self._add(10, 2, \"m1.rd-tiny\", 512)"},{"line_number":65,"context_line":"        self._add(11, 0, \"eph.rd-tiny\", 512, 1)"},{"line_number":66,"context_line":"        self._add(12, 20, \"eph.rd-smaller\", 768, 2)"},{"line_number":67,"context_line":"        # self._add(13, 20, \"m1.heat\", 512)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _add(self, *args, **kwargs):"},{"line_number":70,"context_line":"        new_flavor \u003d FakeFlavor(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_1f2742b7","line":67,"updated":"2014-08-28 17:11:18.000000000","message":"Just wondering why this is here.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"5eb0ce4eaf1e7eae8a8865b25e7787c53a05470f","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self._add(10, 2, \"m1.rd-tiny\", 512)"},{"line_number":65,"context_line":"        self._add(11, 0, \"eph.rd-tiny\", 512, 1)"},{"line_number":66,"context_line":"        self._add(12, 20, \"eph.rd-smaller\", 768, 2)"},{"line_number":67,"context_line":"        # self._add(13, 20, \"m1.heat\", 512)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _add(self, *args, **kwargs):"},{"line_number":70,"context_line":"        new_flavor \u003d FakeFlavor(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":29,"id":"1abeadc6_99bc4dbd","line":67,"in_reply_to":"1abeadc6_1f2742b7","updated":"2014-08-28 18:48:22.000000000","message":"i was running trove in daemon fake mode and there was a difference between this list and nova\u0027s because heat added a new flavor. so this is needed when running the daemon fake mode (redstack start-fake) and not needed when running tox. so i left it here if someone runs into that issue again.","commit_id":"d220212c051c47613c09c862dbf790bd6df510cf"}]}
