)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This feature provides the ability to associate flavor types with datastore versions."},{"line_number":10,"context_line":"The management api will provide the ability to add or delete this information."},{"line_number":11,"context_line":"The normal user can view the flavor list for the default version or a"},{"line_number":12,"context_line":"specified datastore version id."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: blueprint associate-flavors-datastores"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"9aa7fdbe_1c77b93b","line":12,"updated":"2014-10-21 17:37:17.000000000","message":"if you get to resubmit this change set, would you please wrap the text.","commit_id":"62e429349db03b415dbc09bae588f15490b9c7f0"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","unresolved":false,"context_lines":[{"line_number":11,"context_line":"The normal user can view the flavor list for the default version or a"},{"line_number":12,"context_line":"specified datastore version id."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Implements: blueprint associate-flavors-datastores"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: Ib012401f89d07c502f93d5ee1cd4abb6b738953a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"9aa7fdbe_3c9b9d73","line":14,"updated":"2014-10-21 17:37:17.000000000","message":"partially implements","commit_id":"62e429349db03b415dbc09bae588f15490b9c7f0"}],"trove/cmd/manage.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    def get_datastore_version_id(self):"},{"line_number":84,"context_line":"        \"\"\"Gets the default datastore version id.\"\"\""},{"line_number":85,"context_line":"        try:"},{"line_number":86,"context_line":"            default_version_id \u003d datastore_models.get_datastore_version()[1].id"},{"line_number":87,"context_line":"            print(default_version_id)"},{"line_number":88,"context_line":"        except exception.DatastoreNotFound as e:"},{"line_number":89,"context_line":"            print(e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_328c0480","line":86,"updated":"2014-07-28 12:50:47.000000000","message":"i\u0027d not suggest to do such things, what it there\u0027s no registered version?\n\nyou should validate income object (list len)","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"8064ee56513b959c26dd7409bc75774188e7d1c6","unresolved":false,"context_lines":[{"line_number":83,"context_line":"    def get_datastore_version_id(self):"},{"line_number":84,"context_line":"        \"\"\"Gets the default datastore version id.\"\"\""},{"line_number":85,"context_line":"        try:"},{"line_number":86,"context_line":"            default_version_id \u003d datastore_models.get_datastore_version()[1].id"},{"line_number":87,"context_line":"            print(default_version_id)"},{"line_number":88,"context_line":"        except exception.DatastoreNotFound as e:"},{"line_number":89,"context_line":"            print(e)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c46cd838","line":86,"in_reply_to":"baada198_328c0480","updated":"2014-07-28 19:23:54.000000000","message":"If the get_datastore_version() call fails, there would be exceptions raised either way. It would be better to catch and handle those exceptions than checking the length. Only if it is successful, it would return a list of 2.","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":175,"context_line":"            \u0027datastore_flavor_add\u0027, help\u003d\u0027Adds flavors for a given datastore \u0027"},{"line_number":176,"context_line":"            \u0027version id.\u0027)"},{"line_number":177,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Name of the \u0027"},{"line_number":178,"context_line":"                            \u0027datastore version.\u0027)"},{"line_number":179,"context_line":"        parser.add_argument(\u0027flavors\u0027, help\u003d\u0027Comma separtaed list of \u0027"},{"line_number":180,"context_line":"                            \u0027flavors. \u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_12d8e07d","line":177,"updated":"2014-07-28 12:50:47.000000000","message":"help\u003d\"Datastore version id\"\n\nyou\u0027re looking for vesrion by it\u0027s ID, not name","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":175,"context_line":"            \u0027datastore_flavor_add\u0027, help\u003d\u0027Adds flavors for a given datastore \u0027"},{"line_number":176,"context_line":"            \u0027version id.\u0027)"},{"line_number":177,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Name of the \u0027"},{"line_number":178,"context_line":"                            \u0027datastore version.\u0027)"},{"line_number":179,"context_line":"        parser.add_argument(\u0027flavors\u0027, help\u003d\u0027Comma separtaed list of \u0027"},{"line_number":180,"context_line":"                            \u0027flavors. \u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a7d17f58","line":177,"in_reply_to":"baada198_12d8e07d","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"c273e54c3ab459f1ad3cda5f22a20bc4cb6a84ab","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            \u0027datastore_flavor_add\u0027, help\u003d\u0027Adds flavors for a given datastore \u0027"},{"line_number":168,"context_line":"            \u0027version id.\u0027)"},{"line_number":169,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore verion id\u0027)"},{"line_number":170,"context_line":"        parser.add_argument(\u0027flavors\u0027, help\u003d\u0027Comma separtaed list of \u0027"},{"line_number":171,"context_line":"                            \u0027flavors. \u0027)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        parser \u003d subparser.add_parser("}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_3b4b98b3","line":170,"updated":"2014-08-06 23:48:56.000000000","message":"separtaed should be separated","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            \u0027datastore_flavor_add\u0027, help\u003d\u0027Adds flavors for a given datastore \u0027"},{"line_number":168,"context_line":"            \u0027version id.\u0027)"},{"line_number":169,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore verion id\u0027)"},{"line_number":170,"context_line":"        parser.add_argument(\u0027flavors\u0027, help\u003d\u0027Comma separtaed list of \u0027"},{"line_number":171,"context_line":"                            \u0027flavors. \u0027)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        parser \u003d subparser.add_parser("}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_0fd72723","line":170,"in_reply_to":"baada198_3b4b98b3","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"c273e54c3ab459f1ad3cda5f22a20bc4cb6a84ab","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            \u0027version id.\u0027)"},{"line_number":169,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore verion id\u0027)"},{"line_number":170,"context_line":"        parser.add_argument(\u0027flavors\u0027, help\u003d\u0027Comma separtaed list of \u0027"},{"line_number":171,"context_line":"                            \u0027flavors. \u0027)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":174,"context_line":"            \u0027datastore_flavor_delete\u0027, help\u003d\u0027Deletes a flavor\\\u0027s association \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_5b4a0cae","line":171,"updated":"2014-08-06 23:48:56.000000000","message":"unnecessary trailing space. after \"flavors.\"","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            \u0027version id.\u0027)"},{"line_number":169,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore verion id\u0027)"},{"line_number":170,"context_line":"        parser.add_argument(\u0027flavors\u0027, help\u003d\u0027Comma separtaed list of \u0027"},{"line_number":171,"context_line":"                            \u0027flavors. \u0027)"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":174,"context_line":"            \u0027datastore_flavor_delete\u0027, help\u003d\u0027Deletes a flavor\\\u0027s association \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_2fdceb44","line":171,"in_reply_to":"baada198_5b4a0cae","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"c273e54c3ab459f1ad3cda5f22a20bc4cb6a84ab","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":174,"context_line":"            \u0027datastore_flavor_delete\u0027, help\u003d\u0027Deletes a flavor\\\u0027s association \u0027"},{"line_number":175,"context_line":"            \u0027with a given datastore.\u0027)"},{"line_number":176,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore verion id\u0027)"},{"line_number":177,"context_line":"        parser.add_argument(\u0027flavor_id\u0027, help\u003d\u0027The flavor to be deleted for \u0027"},{"line_number":178,"context_line":"                            \u0027the version.\u0027)"},{"line_number":179,"context_line":"        parser \u003d subparser.add_parser("}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_1bd7b4c1","line":176,"updated":"2014-08-06 23:48:56.000000000","message":"verion should be version.","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":174,"context_line":"            \u0027datastore_flavor_delete\u0027, help\u003d\u0027Deletes a flavor\\\u0027s association \u0027"},{"line_number":175,"context_line":"            \u0027with a given datastore.\u0027)"},{"line_number":176,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore verion id\u0027)"},{"line_number":177,"context_line":"        parser.add_argument(\u0027flavor_id\u0027, help\u003d\u0027The flavor to be deleted for \u0027"},{"line_number":178,"context_line":"                            \u0027the version.\u0027)"},{"line_number":179,"context_line":"        parser \u003d subparser.add_parser("}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_6fe183fb","line":176,"in_reply_to":"baada198_1bd7b4c1","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"512dc0309103f418b4e484635832e6de8afc7391","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            datastore_models.DatastoreVersionFlavor.datastore_flavor_add("},{"line_number":86,"context_line":"                datastore_version_id, flavors)"},{"line_number":87,"context_line":"            print(\"Added flavors to the datastore_version_id \u0027%s\u0027 .\""},{"line_number":88,"context_line":"                  % datastore_version_id)"},{"line_number":89,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":90,"context_line":"            print(e)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_5b9700ec","line":87,"updated":"2014-08-21 20:01:28.000000000","message":"trailing space?","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"512dc0309103f418b4e484635832e6de8afc7391","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            print(\"Added flavors to the datastore_version_id \u0027%s\u0027 .\""},{"line_number":88,"context_line":"                  % datastore_version_id)"},{"line_number":89,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":90,"context_line":"            print(e)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def datastore_flavor_delete(self, datastore_version_id, flavor_id):"},{"line_number":93,"context_line":"        \"\"\"Deletes a flavor\u0027s association with a given datastore.\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_5bbe2066","line":90,"updated":"2014-08-21 20:01:28.000000000","message":"maybe LOG.exception?","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"512dc0309103f418b4e484635832e6de8afc7391","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        try:"},{"line_number":95,"context_line":"            datastore_models.DatastoreVersionFlavor.datastore_flavor_delete("},{"line_number":96,"context_line":"                datastore_version_id, flavor_id)"},{"line_number":97,"context_line":"            print(\"Deleted flavor from datastore_version_id \u0027%s\u0027 .\""},{"line_number":98,"context_line":"                  % datastore_version_id)"},{"line_number":99,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":100,"context_line":"            print(e)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_9b9d180d","line":97,"updated":"2014-08-21 20:01:28.000000000","message":"ditto","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"512dc0309103f418b4e484635832e6de8afc7391","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            print(\"Deleted flavor from datastore_version_id \u0027%s\u0027 .\""},{"line_number":98,"context_line":"                  % datastore_version_id)"},{"line_number":99,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":100,"context_line":"            print(e)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def params_of(self, command_name):"},{"line_number":103,"context_line":"        if Commands.has(command_name):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_3b8ec4d0","line":100,"updated":"2014-08-21 20:01:28.000000000","message":"maybe LOG.exception?","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.db_api.drop_db(CONF)"},{"line_number":80,"context_line":"        self.db_sync(repo_path)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def datastore_flavor_add(self, datastore_version_id, flavors):"},{"line_number":83,"context_line":"        \"\"\"Adds flavors for a given datastore version id.\"\"\""},{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            datastore_models.DatastoreVersionFlavor.datastore_flavor_add("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_d2cf7227","line":82,"updated":"2014-09-04 04:29:40.000000000","message":"I\u0027d rather \"flavors\" parameter be called \"flavor_ids\".","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        try:"},{"line_number":85,"context_line":"            datastore_models.DatastoreVersionFlavor.datastore_flavor_add("},{"line_number":86,"context_line":"                datastore_version_id, flavors)"},{"line_number":87,"context_line":"            print(\"Added flavors to the datastore_version_id \u0027%s\u0027.\""},{"line_number":88,"context_line":"                  % datastore_version_id)"},{"line_number":89,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":90,"context_line":"            LOG.exception(e)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_d258528c","line":87,"updated":"2014-09-04 04:29:40.000000000","message":"Needs to be LOG.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        try:"},{"line_number":95,"context_line":"            datastore_models.DatastoreVersionFlavor.datastore_flavor_delete("},{"line_number":96,"context_line":"                datastore_version_id, flavor_id)"},{"line_number":97,"context_line":"            print(\"Deleted flavor from datastore_version_id \u0027%s\u0027.\""},{"line_number":98,"context_line":"                  % datastore_version_id)"},{"line_number":99,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":100,"context_line":"            LOG.exception(e)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_12565a5c","line":97,"updated":"2014-09-04 04:29:40.000000000","message":"Same as line 87.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"576d24e26c3341d41d6e60aab55a2fff2a89f393","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            dsmetadata.add_datastore_version_flavor_association("},{"line_number":97,"context_line":"                datastore_version_id, flavor_ids.split(\",\"))"},{"line_number":98,"context_line":"            print(\"Added flavors to the datastore_version_id \u0027%s\u0027.\""},{"line_number":99,"context_line":"                  % datastore_version_id)"},{"line_number":100,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":101,"context_line":"            LOG.exception(e)"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7a8c0949_e95fa70c","line":99,"updated":"2014-10-31 20:48:16.000000000","message":"We could probably print out the flavors added here too. Not a show-stopper though.","commit_id":"44d83da1e61307846aefc03e03d02c3ec4b565c6"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"576d24e26c3341d41d6e60aab55a2fff2a89f393","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            dsmetadata.delete_datastore_version_flavor_association("},{"line_number":108,"context_line":"                datastore_version_id, flavor_id)"},{"line_number":109,"context_line":"            print(\"Deleted flavor from datastore_version_id \u0027%s\u0027.\""},{"line_number":110,"context_line":"                  % datastore_version_id)"},{"line_number":111,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":112,"context_line":"            LOG.exception(e)"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"7a8c0949_89af03e3","line":110,"updated":"2014-10-31 20:48:16.000000000","message":"ditto","commit_id":"44d83da1e61307846aefc03e03d02c3ec4b565c6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":90,"context_line":"            datastore, datastore_version, config_file_location)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def dsversion_flavor_add(self, datastore_version_id, flavor_ids):"},{"line_number":93,"context_line":"        \"\"\"Adds flavors for a given datastore version id.\"\"\""},{"line_number":94,"context_line":"        try:"},{"line_number":95,"context_line":"            dsmetadata \u003d datastore_models.DatastoreVersionMetadata"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_4460bdcf","line":92,"updated":"2014-11-27 09:48:28.000000000","message":"I don\u0027t like the idea of short names here, we\u0027re using \"datastore_...\" and \"datastore_version_...\", why should we use \"dsversion\" instaed?","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        config_models.load_datastore_configuration_parameters("},{"line_number":90,"context_line":"            datastore, datastore_version, config_file_location)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def dsversion_flavor_add(self, datastore_version_id, flavor_ids):"},{"line_number":93,"context_line":"        \"\"\"Adds flavors for a given datastore version id.\"\"\""},{"line_number":94,"context_line":"        try:"},{"line_number":95,"context_line":"            dsmetadata \u003d datastore_models.DatastoreVersionMetadata"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_74a7ab0b","line":92,"in_reply_to":"5a890539_4460bdcf","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":101,"context_line":"            LOG.exception(e)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def dsversion_flavor_delete(self, datastore_version_id, flavor_id):"},{"line_number":104,"context_line":"        \"\"\"Deletes a flavor\u0027s association with a given datastore.\"\"\""},{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            dsmetadata \u003d datastore_models.DatastoreVersionMetadata"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_8499c5d2","line":103,"updated":"2014-11-27 09:48:28.000000000","message":"same","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":101,"context_line":"            LOG.exception(e)"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def dsversion_flavor_delete(self, datastore_version_id, flavor_id):"},{"line_number":104,"context_line":"        \"\"\"Deletes a flavor\u0027s association with a given datastore.\"\"\""},{"line_number":105,"context_line":"        try:"},{"line_number":106,"context_line":"            dsmetadata \u003d datastore_models.DatastoreVersionMetadata"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_d4b5bf32","line":103,"in_reply_to":"5a890539_8499c5d2","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            \u0027parameter validation rules.\u0027)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":193,"context_line":"            \u0027dsversion_flavor_add\u0027, help\u003d\u0027Adds flavors for a given datastore \u0027"},{"line_number":194,"context_line":"            \u0027version id.\u0027)"},{"line_number":195,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore version \u0027"},{"line_number":196,"context_line":"                            \u0027id.\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_c4a3cdfe","line":193,"updated":"2014-11-27 09:48:28.000000000","message":"same","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":190,"context_line":"            \u0027parameter validation rules.\u0027)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":193,"context_line":"            \u0027dsversion_flavor_add\u0027, help\u003d\u0027Adds flavors for a given datastore \u0027"},{"line_number":194,"context_line":"            \u0027version id.\u0027)"},{"line_number":195,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore version \u0027"},{"line_number":196,"context_line":"                            \u0027id.\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_f4b2bb47","line":193,"in_reply_to":"5a890539_c4a3cdfe","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                            \u0027flavor ids.\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":201,"context_line":"            \u0027dsversion_flavor_delete\u0027, help\u003d\u0027Deletes a flavor\\\u0027s association \u0027"},{"line_number":202,"context_line":"            \u0027with a given datastore.\u0027)"},{"line_number":203,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore version \u0027"},{"line_number":204,"context_line":"                            \u0027id.\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_e4a8c9dd","line":201,"updated":"2014-11-27 09:48:28.000000000","message":"same","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":198,"context_line":"                            \u0027flavor ids.\u0027)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":201,"context_line":"            \u0027dsversion_flavor_delete\u0027, help\u003d\u0027Deletes a flavor\\\u0027s association \u0027"},{"line_number":202,"context_line":"            \u0027with a given datastore.\u0027)"},{"line_number":203,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore version \u0027"},{"line_number":204,"context_line":"                            \u0027id.\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_3488c370","line":201,"in_reply_to":"5a890539_e4a8c9dd","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"fff2386817682eab197f6c078e1d36b9a8313589","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            help\u003d\u0027Fully qualified file path to the configuration group \u0027"},{"line_number":190,"context_line":"            \u0027parameter validation rules.\u0027)"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":193,"context_line":"            \u0027datastore_version_flavor_add\u0027, help\u003d\u0027Adds flavors for a given \u0027"},{"line_number":194,"context_line":"            \u0027datastore version id.\u0027)"},{"line_number":195,"context_line":"        parser.add_argument(\u0027datastore_version_id\u0027, help\u003d\u0027Datastore version \u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_673949a3","line":192,"updated":"2015-01-09 20:53:06.000000000","message":"db_load_datastore_config-* used to load by datastore-version-id, but it was found to be not very operator friendly (humans remember names, not uuids). it was quickly changed to accept the datastore-name + datastore-version-name in a later patch.\n\ni would argue that datastore_version_flavor_add should behave the same way: require the datastore-name + datastore-version-name, not the datastore-version-id. same goes for datastore_version_flavor_delete.","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"6589fd804e4b037950fc8247c657195c424f0d2c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"            dsmetadata \u003d datastore_models.DatastoreVersionMetadata"},{"line_number":98,"context_line":"            dsmetadata.add_datastore_version_flavor_association("},{"line_number":99,"context_line":"                datastore_name, datastore_version_name, flavor_ids.split(\",\"))"},{"line_number":100,"context_line":"            print(\"Added flavors to the \u0027%s\u0027 \u0027%s\u0027.\""},{"line_number":101,"context_line":"                  % datastore_name % datastore_version_name)"},{"line_number":102,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":103,"context_line":"            LOG.exception(e)"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_c9d3d55e","line":100,"updated":"2015-05-25 14:45:32.000000000","message":"Would be nice to also know what the flavor name was.","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"6589fd804e4b037950fc8247c657195c424f0d2c","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            dsmetadata \u003d datastore_models.DatastoreVersionMetadata"},{"line_number":110,"context_line":"            dsmetadata.delete_datastore_version_flavor_association("},{"line_number":111,"context_line":"                datastore_name, datastore_version_name, flavor_id)"},{"line_number":112,"context_line":"            print(\"Deleted flavor \u0027%s\u0027 \u0027%s\u0027.\""},{"line_number":113,"context_line":"                  % datastore_name % datastore_version_name)"},{"line_number":114,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":115,"context_line":"            LOG.exception(e)"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_89cdddb9","line":112,"updated":"2015-05-25 14:45:32.000000000","message":"The message as printed is misleading; it doesn\u0027t list the flavor. Would be nice to also know what the flavor name was.","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"6589fd804e4b037950fc8247c657195c424f0d2c","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            \u0027parameter validation rules.\u0027)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":196,"context_line":"            \u0027datastore_version_flavor_add\u0027, help\u003d\u0027Adds flavors for a given \u0027"},{"line_number":197,"context_line":"            \u0027datastore and datastore version.\u0027)"},{"line_number":198,"context_line":"        parser.add_argument(\u0027datastore_name\u0027, help\u003d\u0027Datastore name\u0027)"},{"line_number":199,"context_line":"        parser.add_argument(\u0027datastore_version_name\u0027, help\u003d\u0027Datastore version \u0027"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_49c0057d","line":196,"updated":"2015-05-25 14:45:32.000000000","message":"Adds flavors TO a given ...\n\nAdds a flavor association TO a given ...","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c9db805c70fbf75d9d5311e79c8064555cea6916","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":196,"context_line":"            \u0027datastore_version_flavor_add\u0027, help\u003d\u0027Adds flavors for a given \u0027"},{"line_number":197,"context_line":"            \u0027datastore and datastore version.\u0027)"},{"line_number":198,"context_line":"        parser.add_argument(\u0027datastore_name\u0027, help\u003d\u0027Datastore name\u0027)"},{"line_number":199,"context_line":"        parser.add_argument(\u0027datastore_version_name\u0027, help\u003d\u0027Datastore version \u0027"},{"line_number":200,"context_line":"                            \u0027name.\u0027)"},{"line_number":201,"context_line":"        parser.add_argument(\u0027flavor_ids\u0027, help\u003d\u0027Comma separated list of \u0027"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_f51ebb6e","line":198,"updated":"2015-05-20 18:15:42.000000000","message":"The help message should end with a .","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c9db805c70fbf75d9d5311e79c8064555cea6916","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            \u0027datastore and datastore version.\u0027)"},{"line_number":198,"context_line":"        parser.add_argument(\u0027datastore_name\u0027, help\u003d\u0027Datastore name\u0027)"},{"line_number":199,"context_line":"        parser.add_argument(\u0027datastore_version_name\u0027, help\u003d\u0027Datastore version \u0027"},{"line_number":200,"context_line":"                            \u0027name.\u0027)"},{"line_number":201,"context_line":"        parser.add_argument(\u0027flavor_ids\u0027, help\u003d\u0027Comma separated list of \u0027"},{"line_number":202,"context_line":"                            \u0027flavor ids.\u0027)"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_b5a16348","line":200,"updated":"2015-05-20 18:15:42.000000000","message":"Just noting an observation: Looks like for the different commands (including the ones above this), datastore name and version argument is named different. For example, in some cases - datastore_name, datastore (to denote name of datastore) and datastore_version, version_name, datastore_version_name (to denote Name of datastore version). \n\nIt would be nice to stay consistent. Just a suggestion","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c9db805c70fbf75d9d5311e79c8064555cea6916","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":205,"context_line":"            \u0027datastore_version_flavor_delete\u0027, help\u003d\u0027Deletes a flavor\\\u0027s \u0027"},{"line_number":206,"context_line":"            \u0027association with a given datastore and datastore version.\u0027)"},{"line_number":207,"context_line":"        parser.add_argument(\u0027datastore_name\u0027, help\u003d\u0027Datastore name\u0027)"},{"line_number":208,"context_line":"        parser.add_argument(\u0027datastore_version_name\u0027, help\u003d\u0027Datastore version \u0027"},{"line_number":209,"context_line":"                            \u0027name.\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_952787c9","line":206,"updated":"2015-05-20 18:15:42.000000000","message":"shouldnt it be \u0027Deletes a flavor associated with ...\u0027","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c9db805c70fbf75d9d5311e79c8064555cea6916","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":205,"context_line":"            \u0027datastore_version_flavor_delete\u0027, help\u003d\u0027Deletes a flavor\\\u0027s \u0027"},{"line_number":206,"context_line":"            \u0027association with a given datastore and datastore version.\u0027)"},{"line_number":207,"context_line":"        parser.add_argument(\u0027datastore_name\u0027, help\u003d\u0027Datastore name\u0027)"},{"line_number":208,"context_line":"        parser.add_argument(\u0027datastore_version_name\u0027, help\u003d\u0027Datastore version \u0027"},{"line_number":209,"context_line":"                            \u0027name.\u0027)"},{"line_number":210,"context_line":"        parser.add_argument(\u0027flavor_id\u0027, help\u003d\u0027The flavor to be deleted for \u0027"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_552d8fa6","line":207,"updated":"2015-05-20 18:15:42.000000000","message":"This should end with a .","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c9db805c70fbf75d9d5311e79c8064555cea6916","unresolved":false,"context_lines":[{"line_number":208,"context_line":"        parser.add_argument(\u0027datastore_version_name\u0027, help\u003d\u0027Datastore version \u0027"},{"line_number":209,"context_line":"                            \u0027name.\u0027)"},{"line_number":210,"context_line":"        parser.add_argument(\u0027flavor_id\u0027, help\u003d\u0027The flavor to be deleted for \u0027"},{"line_number":211,"context_line":"                            \u0027the version.\u0027)"},{"line_number":212,"context_line":"    cfg.custom_parser(\u0027action\u0027, actions)"},{"line_number":213,"context_line":"    cfg.parse_args(sys.argv)"},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_f537dbfc","line":211,"updated":"2015-05-20 18:15:42.000000000","message":"How about \u0027The flavor to be deleted for a given datastore and datastore version.\u0027","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c9db805c70fbf75d9d5311e79c8064555cea6916","unresolved":false,"context_lines":[{"line_number":218,"context_line":"        Commands().execute()"},{"line_number":219,"context_line":"        sys.exit(0)"},{"line_number":220,"context_line":"    except TypeError as e:"},{"line_number":221,"context_line":"        print(_(\"Possible wrong number of arguments supplied %s\") % e)"},{"line_number":222,"context_line":"        sys.exit(2)"},{"line_number":223,"context_line":"    except Exception:"},{"line_number":224,"context_line":"        print(_(\"Command failed, please check log for more info.\"))"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_b00bb123","line":221,"updated":"2015-05-20 18:15:42.000000000","message":"If you are sending another patch, can you end this sentence also with a .\n\nThanks Mayuri.","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"0d89ada79b7af1087baf469b4dbfee7d3855bd86","unresolved":false,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        parser \u003d subparser.add_parser("},{"line_number":205,"context_line":"            \u0027datastore_version_flavor_delete\u0027, help\u003d\u0027Deletes a flavor \u0027"},{"line_number":206,"context_line":"            \u0027associatied with a given datastore and datastore version.\u0027)"},{"line_number":207,"context_line":"        parser.add_argument(\u0027datastore_name\u0027, help\u003d\u0027Name of the datastore.\u0027)"},{"line_number":208,"context_line":"        parser.add_argument(\u0027datastore_version_name\u0027, help\u003d\u0027Name of the \u0027"},{"line_number":209,"context_line":"                            \u0027datastore version.\u0027)"}],"source_content_type":"text/x-python","patch_set":37,"id":"5afe65bd_e09de9bc","line":206,"updated":"2015-06-04 18:35:04.000000000","message":"typo - associated.","commit_id":"8bc492224319e4f80e4e422f3caefa18e2ca27b0"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            print(\"Added flavors \u0027%s\u0027 to the \u0027%s\u0027 \u0027%s\u0027.\""},{"line_number":102,"context_line":"                  % (flavor_ids, datastore_name, datastore_version_name))"},{"line_number":103,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":104,"context_line":"            LOG.exception(e)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def datastore_version_flavor_delete(self, datastore_name,"},{"line_number":107,"context_line":"                                        datastore_version_name, flavor_id):"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_71a3829f","line":104,"updated":"2015-06-13 02:21:47.000000000","message":"I was wrong in my comment on patch set 9. I\u0027m not sure that you want LOG.exception here, rather it should be print. After all, this is going to be part of the trove-manage command, yes?\n\nSo if you did have an exception, I\u0027d rather see it right there on my screen.\n\nI only realized this when I tried the code out and got no errors.","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            print(\"Added flavors \u0027%s\u0027 to the \u0027%s\u0027 \u0027%s\u0027.\""},{"line_number":102,"context_line":"                  % (flavor_ids, datastore_name, datastore_version_name))"},{"line_number":103,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":104,"context_line":"            LOG.exception(e)"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def datastore_version_flavor_delete(self, datastore_name,"},{"line_number":107,"context_line":"                                        datastore_version_name, flavor_id):"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_c127d910","line":104,"in_reply_to":"fa32b979_71a3829f","updated":"2015-06-16 22:10:31.000000000","message":"Done","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            print(\"Deleted flavor \u0027%s\u0027 from \u0027%s\u0027 \u0027%s\u0027.\""},{"line_number":114,"context_line":"                  % (flavor_id, datastore_name, datastore_version_name))"},{"line_number":115,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":116,"context_line":"            LOG.exception(e)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def params_of(self, command_name):"},{"line_number":119,"context_line":"        if Commands.has(command_name):"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_7154e253","line":116,"updated":"2015-06-13 02:21:47.000000000","message":"ditto","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            print(\"Deleted flavor \u0027%s\u0027 from \u0027%s\u0027 \u0027%s\u0027.\""},{"line_number":114,"context_line":"                  % (flavor_id, datastore_name, datastore_version_name))"},{"line_number":115,"context_line":"        except exception.DatastoreVersionNotFound as e:"},{"line_number":116,"context_line":"            LOG.exception(e)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    def params_of(self, command_name):"},{"line_number":119,"context_line":"        if Commands.has(command_name):"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_e1221d01","line":116,"in_reply_to":"fa32b979_7154e253","updated":"2015-06-16 22:10:31.000000000","message":"Done","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"}],"trove/common/api.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","unresolved":false,"context_lines":[{"line_number":138,"context_line":"                       controller\u003dflavor_resource,"},{"line_number":139,"context_line":"                       action\u003d\"show\","},{"line_number":140,"context_line":"                       conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]})"},{"line_number":141,"context_line":"        mapper.connect("},{"line_number":142,"context_line":"            \"/{tenant_id}/flavors/datastores/versions/{datastore_version_id}\","},{"line_number":143,"context_line":"            controller\u003dflavor_resource,"},{"line_number":144,"context_line":"            action\u003d\"index\","}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_dc0c5145","line":141,"updated":"2014-10-21 17:37:17.000000000","message":"is there an implementation for the DELETE?","commit_id":"62e429349db03b415dbc09bae588f15490b9c7f0"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"90cc551805d61832ad710c76c3c74d3bf9b78fce","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                       action\u003d\"show\","},{"line_number":140,"context_line":"                       conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]})"},{"line_number":141,"context_line":"        mapper.connect("},{"line_number":142,"context_line":"            \"/{tenant_id}/flavors/datastores/versions/{datastore_version_id}\","},{"line_number":143,"context_line":"            controller\u003dflavor_resource,"},{"line_number":144,"context_line":"            action\u003d\"index\","},{"line_number":145,"context_line":"            conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]}"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a8c0949_f7dda771","line":142,"updated":"2014-11-04 16:58:56.000000000","message":"This URL doesn\u0027t make sense from REST perspective... \n\n1. How about sending datastore_version_id as a query parameter\n\nOR\n\n2. /{tenant_id}/datastores/{datastore}/versions/{id}/flavors  which is even better.","commit_id":"44d83da1e61307846aefc03e03d02c3ec4b565c6"},{"author":{"_account_id":14075,"name":"Michael Pasternak","email":"mpastern1@gmail.com","username":"mpastern"},"change_message_id":"20a38d9838c6ad8d9c29c08fed709ec4c8fc9e4b","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                       action\u003d\"show\","},{"line_number":140,"context_line":"                       conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]})"},{"line_number":141,"context_line":"        mapper.connect("},{"line_number":142,"context_line":"            \"/{tenant_id}/flavors/datastores/versions/{datastore_version_id}\","},{"line_number":143,"context_line":"            controller\u003dflavor_resource,"},{"line_number":144,"context_line":"            action\u003d\"index\","},{"line_number":145,"context_line":"            conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]}"}],"source_content_type":"text/x-python","patch_set":17,"id":"5a890539_5144861a","line":142,"updated":"2014-11-22 18:24:39.000000000","message":"Hey,\n\n1. Shouldn\u0027t {flavor:id} appear in URI [1]?, i see in previous URI [2] at line 137 it does appear, so IIUC to associate flavour type with datastore version you have to have both in context, no?! (or am i\u0027m missing something?)\n\n[1] /{tenant_id}/flavors/{flavor:id}/datastores/...\n\n[2] \"/{tenant_id}/flavors/{id}\"\n\n2. As about Sergey\u0027s comment (from p/s 16), i do see it reasonable, i\u0027d suggest \na third option which would make your API maintainable and scalable:\n\nGET|POST /{tenant_id}/flavors/{flavor:id}/datastores/\n\n\u003cdatastores\u003e\n\u003cdatastore id\u003dxx href\u003dyy\u003e\n\u003cversion\u003ev1\u003c/version\u003e\n\u003cparamX\u003eX1\u003c/paramX\u003e\n\u003c/datastore\u003e\n\u003cdatastore id\u003dxx1 href\u003dyy1\u003e\n\u003cversion\u003ev2\u003c/version\u003e\n\u003c/datastore\u003e\n\u003cdatastore id\u003dxx2 href\u003dyy2\u003e\n\u003cversion\u003ev3\u003c/version\u003e\n\u003c/datastore\u003e\n\u003c/datastores\u003e\n\nnotice: \u003cversion\u003e is an element in the associated datastores, this way you will be able to associate datastores to flavours via more than one parameter (what will not scale if you\u0027ll use URI for that ...) , for instance: version/type/capabilities/etc.\n\nhope it helps.","commit_id":"897e3a40b5e2a60f779463cece8f72200f448def"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"21c1c6bd2cb4306ce718dcf409a46bd13d2d4276","unresolved":false,"context_lines":[{"line_number":139,"context_line":"                       action\u003d\"show\","},{"line_number":140,"context_line":"                       conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]})"},{"line_number":141,"context_line":"        mapper.connect("},{"line_number":142,"context_line":"            \"/{tenant_id}/flavors/datastores/versions/{datastore_version_id}\","},{"line_number":143,"context_line":"            controller\u003dflavor_resource,"},{"line_number":144,"context_line":"            action\u003d\"index\","},{"line_number":145,"context_line":"            conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]}"}],"source_content_type":"text/x-python","patch_set":17,"id":"5a890539_d4eb04da","line":142,"in_reply_to":"5a890539_5144861a","updated":"2014-11-22 21:37:18.000000000","message":"Michael,\n\nI understand your confusion. What if I would tell you that author\u0027s intent is to get a list of flavors for a datastore version id?  In that case you don\u0027t have to use a specific flavor id.\n\nAfter discussing this URI on #openstack-trove, we came to conclusion that:\n\n/{tenant_id}/datastores/{datastore}/versions/{id}/flavors or flavor-list \n\nis the correct way to proceed.","commit_id":"897e3a40b5e2a60f779463cece8f72200f448def"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"9740e4a33574b7e4bf56d4fd45a016af81057b99","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            \"{datastore_version_id}/flavors\","},{"line_number":144,"context_line":"            controller\u003dflavor_resource,"},{"line_number":145,"context_line":"            action\u003d\"index\","},{"line_number":146,"context_line":"            conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]}"},{"line_number":147,"context_line":"        )"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _limits_router(self, mapper):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_10a18195","line":146,"updated":"2014-11-27 22:35:56.000000000","message":"URL looks nice, I would replace \"datastore_version_id\" with just \"version_id\" - shorter, but still readable and consistent with other ids (tenant_id, datastore_id)...\n\nBut my real problem is that this URL seems doesn\u0027t belong here, according this new structure its probably should be mapped in  \"_datastore_router\" method \nline 50 next to:\n\n/{tenant_id}/datastores/{datastore}/versions\n\nand \n\n/{tenant_id}/datastores/{datastore}/versions/{id}\n\nIt will be more consistent that way. And of course, the logic probably should be located in the DatastoreController rather than in FlavorController for the same reason.\nIs it doable?","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"84fa7a8b7252924f29138d4d4b018cff475ffef7","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            \"{datastore_version_id}/flavors\","},{"line_number":144,"context_line":"            controller\u003dflavor_resource,"},{"line_number":145,"context_line":"            action\u003d\"index\","},{"line_number":146,"context_line":"            conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]}"},{"line_number":147,"context_line":"        )"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _limits_router(self, mapper):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_d9bc5d09","line":146,"in_reply_to":"5a890539_10a18195","updated":"2014-12-01 10:01:13.000000000","message":"Agreed, /version/{id}/ looks better and more consistent with other URLs","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":143,"context_line":"            \"{datastore_version_id}/flavors\","},{"line_number":144,"context_line":"            controller\u003dflavor_resource,"},{"line_number":145,"context_line":"            action\u003d\"index\","},{"line_number":146,"context_line":"            conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]}"},{"line_number":147,"context_line":"        )"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _limits_router(self, mapper):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_f4a63baa","line":146,"in_reply_to":"5a890539_10a18195","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":14829,"name":"Ashleigh Farnham","username":"ashleighfarnham","inactive":true},"change_message_id":"a8c3277b2deaa41dce286685e01b90d327429281","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                       action\u003d\"version_show\")"},{"line_number":60,"context_line":"        mapper.connect("},{"line_number":61,"context_line":"            \"/{tenant_id}/datastores/{datastore}/versions/\""},{"line_number":62,"context_line":"            \"{version_id}/flavors\","},{"line_number":63,"context_line":"            controller\u003ddatastore_resource,"},{"line_number":64,"context_line":"            action\u003d\"list_associated_flavors\","},{"line_number":65,"context_line":"            conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]}"}],"source_content_type":"text/x-python","patch_set":40,"id":"9a41bdd9_d192829f","line":62,"updated":"2015-07-16 20:07:17.000000000","message":"How is version_id different from id above? if these represent the same thing I think they should be named the same.","commit_id":"77c1a000c4315dd09295aa111394627618e0290f"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"c4f63aebf0ddffd5f3f127a8d412882d0e3c9524","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                       action\u003d\"version_show\")"},{"line_number":60,"context_line":"        mapper.connect("},{"line_number":61,"context_line":"            \"/{tenant_id}/datastores/{datastore}/versions/\""},{"line_number":62,"context_line":"            \"{version_id}/flavors\","},{"line_number":63,"context_line":"            controller\u003ddatastore_resource,"},{"line_number":64,"context_line":"            action\u003d\"list_associated_flavors\","},{"line_number":65,"context_line":"            conditions\u003d{\u0027method\u0027: [\u0027GET\u0027]}"}],"source_content_type":"text/x-python","patch_set":40,"id":"9a41bdd9_3a170356","line":62,"in_reply_to":"9a41bdd9_d192829f","updated":"2015-07-16 20:23:15.000000000","message":"@ashleigh So the {version_id} is used as the argument name for the method the mapper uses to the service method. I dont think this is a big deal to be a bit more specific here.","commit_id":"77c1a000c4315dd09295aa111394627618e0290f"}],"trove/common/exception.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    message \u003d _(\"Datastores cannot be found.\")"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"class DatastoreFlavorMappingNotFound(NotFound):"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    message \u003d _(\"Datastore version id %(version_id)s -flavor %(flavor_id)s\""},{"line_number":124,"context_line":"                \"mapping not found\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_92b950cd","line":121,"updated":"2014-07-28 12:50:47.000000000","message":"I\u0027d suggest something more appropriate:\nDatastoreFlavorAssociationNotFound","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    message \u003d _(\"Datastores cannot be found.\")"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"class DatastoreFlavorMappingNotFound(NotFound):"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    message \u003d _(\"Datastore version id %(version_id)s -flavor %(flavor_id)s\""},{"line_number":124,"context_line":"                \"mapping not found\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c754b3c8","line":121,"in_reply_to":"baada198_92b950cd","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"c273e54c3ab459f1ad3cda5f22a20bc4cb6a84ab","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"class InvalidFlavor(TroveError):"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    message \u003d _(\"%(flavor)s is an invalid flavor id\")"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class UserNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_3bd2b8cf","line":85,"updated":"2014-08-06 23:48:56.000000000","message":"missing period.","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":"class InvalidFlavor(TroveError):"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    message \u003d _(\"%(flavor)s is an invalid flavor id\")"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"class UserNotFound(NotFound):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_2fb30b0a","line":85,"in_reply_to":"baada198_3bd2b8cf","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c48c5f3716f62f865a983b0e8f8ebe4ec250a661","unresolved":false,"context_lines":[{"line_number":126,"context_line":"class DatastoreFlavorAssociationNotFound(NotFound):"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    message \u003d _(\"Datastore version id %(version_id)s flavor %(flavor_id)s \""},{"line_number":129,"context_line":"                \"mapping not found\")"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class DatastoreNoVersion(TroveError):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_1b9c29bf","line":129,"updated":"2014-08-06 13:39:04.000000000","message":"missing period","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":126,"context_line":"class DatastoreFlavorAssociationNotFound(NotFound):"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    message \u003d _(\"Datastore version id %(version_id)s flavor %(flavor_id)s \""},{"line_number":129,"context_line":"                \"mapping not found\")"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"class DatastoreNoVersion(TroveError):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_01861b16","line":129,"in_reply_to":"baada198_1b9c29bf","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    message \u003d _(\"Datastores cannot be found.\")"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"class DatastoreFlavorAssociationNotFound(NotFound):"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    message \u003d _(\"Datastore version id %(version_id)s flavor %(flavor_id)s \""},{"line_number":124,"context_line":"                \"mapping not found.\")"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_9c13a965","line":121,"updated":"2014-10-21 17:37:17.000000000","message":"Would be nice if you could find a way to make these messages shorter. Like Mapping not found between version %(version) and flavor %(flavor)\n\nMapping already exists between ...","commit_id":"62e429349db03b415dbc09bae588f15490b9c7f0"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"576d24e26c3341d41d6e60aab55a2fff2a89f393","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                \"mapping not found.\")"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class DatastoreFlavorAssociationAlreadyExists(NotFound):"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    message \u003d _(\"Datastore version id %(version_id)s flavor %(flavor_id)s \""},{"line_number":130,"context_line":"                \"mapping already exists.\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a8c0949_2988cf70","line":127,"updated":"2014-10-31 20:48:16.000000000","message":"This should inherit from BadRequest","commit_id":"44d83da1e61307846aefc03e03d02c3ec4b565c6"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"da97ff3855d79830a429a8f26585e8c185c3537c","unresolved":false,"context_lines":[{"line_number":124,"context_line":"                \"mapping not found.\")"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"class DatastoreFlavorAssociationAlreadyExists(NotFound):"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    message \u003d _(\"Datastore version id %(version_id)s flavor %(flavor_id)s \""},{"line_number":130,"context_line":"                \"mapping already exists.\")"}],"source_content_type":"text/x-python","patch_set":26,"id":"da86d52c_4551540d","line":127,"updated":"2015-02-03 01:43:33.000000000","message":"AlreadyExists does not syncs with the inherited class name NotFound","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"c9db805c70fbf75d9d5311e79c8064555cea6916","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    message \u003d _(\"Datastore %(datastore_version_name)s version \""},{"line_number":131,"context_line":"                \"%(datastore_version_name)s flavor %(flavor_id)s \""},{"line_number":132,"context_line":"                \"mapping already exists.\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"class DatastoreNoVersion(TroveError):"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_b0df3139","line":133,"updated":"2015-05-20 18:15:42.000000000","message":"Mayuri, do you know why we are mentioning the datastore_version_name twice in this message. Also just wanted to make a suggestion on rephrasing this message to something like this: \"Mapping between datastore version: %(datastore_version_name)s and flavor-id: %(flavor_id)s already exists\". \n\nThanks Mayuri.","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"6589fd804e4b037950fc8247c657195c424f0d2c","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    message \u003d _(\"Datastore %(datastore_version_name)s version \""},{"line_number":131,"context_line":"                \"%(datastore_version_name)s flavor %(flavor_id)s \""},{"line_number":132,"context_line":"                \"mapping already exists.\")"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"class DatastoreNoVersion(TroveError):"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_2954a9c8","line":133,"in_reply_to":"7a016987_b0df3139","updated":"2015-05-25 14:45:32.000000000","message":"good point!","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"class DatastoreFlavorAssociationNotFound(NotFound):"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    message \u003d _(\"Datastore version id %(version_id)s flavor %(flavor_id)s \""},{"line_number":125,"context_line":"                \"mapping not found.\")"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_b1e6eae6","line":123,"updated":"2015-06-13 02:21:47.000000000","message":"since version id\u0027s only have meaning in the context of the datastore, shouldn\u0027t you provide both in the message?","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"class DatastoreFlavorAssociationNotFound(NotFound):"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    message \u003d _(\"Datastore version id %(version_id)s flavor %(flavor_id)s \""},{"line_number":125,"context_line":"                \"mapping not found.\")"},{"line_number":126,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_61c04de1","line":123,"in_reply_to":"fa32b979_b1e6eae6","updated":"2015-06-16 22:10:31.000000000","message":"Done","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"}],"trove/datastore/models.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.datastore_version_id \u003d datastore_version_id"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __contains__(self, item):"},{"line_number":74,"context_line":"        return item in (capability.name for capability in self.capabilities)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def __len__(self):"},{"line_number":77,"context_line":"        return len(self.capabilities)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_12c5403c","line":74,"updated":"2014-07-28 12:50:47.000000000","message":"out of scope","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        self.datastore_version_id \u003d datastore_version_id"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __contains__(self, item):"},{"line_number":74,"context_line":"        return item in (capability.name for capability in self.capabilities)"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    def __len__(self):"},{"line_number":77,"context_line":"        return len(self.capabilities)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_093eb58b","line":74,"in_reply_to":"baada198_12c5403c","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        capability_defaults \u003d [Capability(c)"},{"line_number":103,"context_line":"                               for c in DBCapabilities.find_all()]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        capability_overrides \u003d ()"},{"line_number":106,"context_line":"        if self.datastore_version_id is not None:"},{"line_number":107,"context_line":"            # This should always happen but if there is any future case where"},{"line_number":108,"context_line":"            # we don\u0027t have a datastore version id number it won\u0027t stop"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_32c0842a","line":105,"updated":"2014-07-28 12:50:47.000000000","message":"out of scope","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        capability_defaults \u003d [Capability(c)"},{"line_number":103,"context_line":"                               for c in DBCapabilities.find_all()]"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        capability_overrides \u003d ()"},{"line_number":106,"context_line":"        if self.datastore_version_id is not None:"},{"line_number":107,"context_line":"            # This should always happen but if there is any future case where"},{"line_number":108,"context_line":"            # we don\u0027t have a datastore version id number it won\u0027t stop"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_29437914","line":105,"in_reply_to":"baada198_32c0842a","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # This should always happen but if there is any future case where"},{"line_number":108,"context_line":"            # we don\u0027t have a datastore version id number it won\u0027t stop"},{"line_number":109,"context_line":"            # defaults from rendering."},{"line_number":110,"context_line":"            capability_overrides \u003d ("},{"line_number":111,"context_line":"                CapabilityOverride(ce)"},{"line_number":112,"context_line":"                for ce in DBCapabilityOverrides.find_all("},{"line_number":113,"context_line":"                    datastore_version_id\u003dself.datastore_version_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_52bb38bd","line":110,"updated":"2014-07-28 12:50:47.000000000","message":"out of scope","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            # This should always happen but if there is any future case where"},{"line_number":108,"context_line":"            # we don\u0027t have a datastore version id number it won\u0027t stop"},{"line_number":109,"context_line":"            # defaults from rendering."},{"line_number":110,"context_line":"            capability_overrides \u003d ("},{"line_number":111,"context_line":"                CapabilityOverride(ce)"},{"line_number":112,"context_line":"                for ce in DBCapabilityOverrides.find_all("},{"line_number":113,"context_line":"                    datastore_version_id\u003dself.datastore_version_id)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4947cd1e","line":110,"in_reply_to":"baada198_52bb38bd","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            yield item"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"class DatastoreVersionMetadata(object):"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    @classmethod"},{"line_number":479,"context_line":"    def load(cls, datastore_version_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_52dc18e1","line":476,"updated":"2014-07-28 12:50:47.000000000","message":"This class completely redundant, all this methods are available in base model class. So, no need to override them.\n\nThis class doesn\u0027t add any additional logic.","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            yield item"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"class DatastoreVersionMetadata(object):"},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"    @classmethod"},{"line_number":479,"context_line":"    def load(cls, datastore_version_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_69449119","line":476,"in_reply_to":"baada198_52dc18e1","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"0b3123d7b0e1d46577cdc4092134de0a85300c85","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                value\u003dflavor)"},{"line_number":545,"context_line":"            datastoreflavormapping.save()"},{"line_number":546,"context_line":"        else:"},{"line_number":547,"context_line":"            raise exception.FlavorNotFound(uuid\u003dflavor)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"def datastore_flavor_delete(datastore_version_id, flavor_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_2c28b9ed","line":547,"updated":"2014-07-30 21:26:07.000000000","message":"invalid flavor exception can be created here for None.","commit_id":"608da55149e85064c3e375291a9254bac4700076"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c48c5f3716f62f865a983b0e8f8ebe4ec250a661","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"def get_datastore_version(type\u003dNone, version\u003dNone):"},{"line_number":479,"context_line":"    db_api.configure_db(CONF)"},{"line_number":480,"context_line":"    datastore \u003d type or CONF.default_datastore"},{"line_number":481,"context_line":"    if not datastore:"},{"line_number":482,"context_line":"        raise exception.DatastoreDefaultDatastoreNotFound()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_fb7db571","line":479,"updated":"2014-08-06 13:39:04.000000000","message":"redundant line","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":476,"context_line":""},{"line_number":477,"context_line":""},{"line_number":478,"context_line":"def get_datastore_version(type\u003dNone, version\u003dNone):"},{"line_number":479,"context_line":"    db_api.configure_db(CONF)"},{"line_number":480,"context_line":"    datastore \u003d type or CONF.default_datastore"},{"line_number":481,"context_line":"    if not datastore:"},{"line_number":482,"context_line":"        raise exception.DatastoreDefaultDatastoreNotFound()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_0f3567f5","line":479,"in_reply_to":"baada198_fb7db571","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c48c5f3716f62f865a983b0e8f8ebe4ec250a661","unresolved":false,"context_lines":[{"line_number":535,"context_line":""},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"def datastore_flavor_add(datastore_version_id, flavors):"},{"line_number":538,"context_line":"    db_api.configure_db(CONF)"},{"line_number":539,"context_line":"    flavor_id_list \u003d flavors.split(\",\")"},{"line_number":540,"context_line":"    for flavor in flavor_id_list:"},{"line_number":541,"context_line":"        if flavor:"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_1b834956","line":538,"updated":"2014-08-06 13:39:04.000000000","message":"redundant line","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":535,"context_line":""},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"def datastore_flavor_add(datastore_version_id, flavors):"},{"line_number":538,"context_line":"    db_api.configure_db(CONF)"},{"line_number":539,"context_line":"    flavor_id_list \u003d flavors.split(\",\")"},{"line_number":540,"context_line":"    for flavor in flavor_id_list:"},{"line_number":541,"context_line":"        if flavor:"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_ef33d310","line":538,"in_reply_to":"baada198_1b834956","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c48c5f3716f62f865a983b0e8f8ebe4ec250a661","unresolved":false,"context_lines":[{"line_number":537,"context_line":"def datastore_flavor_add(datastore_version_id, flavors):"},{"line_number":538,"context_line":"    db_api.configure_db(CONF)"},{"line_number":539,"context_line":"    flavor_id_list \u003d flavors.split(\",\")"},{"line_number":540,"context_line":"    for flavor in flavor_id_list:"},{"line_number":541,"context_line":"        if flavor:"},{"line_number":542,"context_line":"            datastoreflavormapping \u003d DBDatastoreVersionMetadata.create("},{"line_number":543,"context_line":"                datastore_version_id\u003ddatastore_version_id, key\u003d\u0027flavor\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_dbdf1165","line":540,"updated":"2014-08-06 13:39:04.000000000","message":"for flavor in flavors.split(\",\")","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":537,"context_line":"def datastore_flavor_add(datastore_version_id, flavors):"},{"line_number":538,"context_line":"    db_api.configure_db(CONF)"},{"line_number":539,"context_line":"    flavor_id_list \u003d flavors.split(\",\")"},{"line_number":540,"context_line":"    for flavor in flavor_id_list:"},{"line_number":541,"context_line":"        if flavor:"},{"line_number":542,"context_line":"            datastoreflavormapping \u003d DBDatastoreVersionMetadata.create("},{"line_number":543,"context_line":"                datastore_version_id\u003ddatastore_version_id, key\u003d\u0027flavor\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_cf852f0b","line":540,"in_reply_to":"baada198_dbdf1165","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c48c5f3716f62f865a983b0e8f8ebe4ec250a661","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                value\u003dflavor)"},{"line_number":545,"context_line":"            datastoreflavormapping.save()"},{"line_number":546,"context_line":"        else:"},{"line_number":547,"context_line":"            raise exception.InvalidFlavor(flavor\u003dflavor)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"def datastore_flavor_delete(datastore_version_id, flavor_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_7b6d259a","line":547,"updated":"2014-08-06 13:39:04.000000000","message":"This method would never through this exception.\n\n\neven if we would pass something like:\n\nfl_1, afdfgfgh, erhyr23dfbfg:sdgdgfh:23345\n\nflavors.split(\",\") would return a list(even list of one element - \"sdgdgfh\".split(\",\"))\n\nSo, there\u0027s no way to know if this flavor is invalid.","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":544,"context_line":"                value\u003dflavor)"},{"line_number":545,"context_line":"            datastoreflavormapping.save()"},{"line_number":546,"context_line":"        else:"},{"line_number":547,"context_line":"            raise exception.InvalidFlavor(flavor\u003dflavor)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"def datastore_flavor_delete(datastore_version_id, flavor_id):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_cf2e0fab","line":547,"in_reply_to":"baada198_7b6d259a","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c48c5f3716f62f865a983b0e8f8ebe4ec250a661","unresolved":false,"context_lines":[{"line_number":548,"context_line":""},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"def datastore_flavor_delete(datastore_version_id, flavor_id):"},{"line_number":551,"context_line":"    db_api.configure_db(CONF)"},{"line_number":552,"context_line":"    try:"},{"line_number":553,"context_line":"        db_record \u003d DBDatastoreVersionMetadata.find_by(datastore_version_id\u003d"},{"line_number":554,"context_line":"                                                       datastore_version_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_bb8b3d68","line":551,"updated":"2014-08-06 13:39:04.000000000","message":"redundant line","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":548,"context_line":""},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"def datastore_flavor_delete(datastore_version_id, flavor_id):"},{"line_number":551,"context_line":"    db_api.configure_db(CONF)"},{"line_number":552,"context_line":"    try:"},{"line_number":553,"context_line":"        db_record \u003d DBDatastoreVersionMetadata.find_by(datastore_version_id\u003d"},{"line_number":554,"context_line":"                                                       datastore_version_id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_af4e3b8e","line":551,"in_reply_to":"baada198_bb8b3d68","updated":"2014-08-08 19:34:38.000000000","message":"Done","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"2eb33ecc5ef9b432dedef029b654553c105949f5","unresolved":false,"context_lines":[{"line_number":534,"context_line":"    db_api.save(version)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"def datastore_flavor_add(datastore_version_id, flavors):"},{"line_number":538,"context_line":"    db_api.configure_db(CONF)"},{"line_number":539,"context_line":"    for flavor in flavors.split(\",\"):"},{"line_number":540,"context_line":"        datastoreflavormapping \u003d DBDatastoreVersionMetadata.create("}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_18307e55","line":537,"updated":"2014-08-16 14:20:49.000000000","message":"Both this methods are fitting into DatastoreVersionFlavor class","commit_id":"f8d3db1c4346bea89645352df7544ac29647b5bf"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"81ffda93f6761fe3248b3b1dba8e32ed2de38060","unresolved":false,"context_lines":[{"line_number":534,"context_line":"    db_api.save(version)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"class DatastoreVersionFlavor:"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    def datastore_flavor_add(self, datastore_version_id, flavors):"},{"line_number":540,"context_line":"        db_api.configure_db(CONF)"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_ab1c8bc2","line":537,"updated":"2014-08-20 08:24:06.000000000","message":"to reduce memory usage, you might mark all methods as class methods (@classmethod)","commit_id":"0cd6f7438cf19e1ccbda697897089f90e370316d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a2997a8583d9b3cfa18a1479ec0cbcba68d1f531","unresolved":false,"context_lines":[{"line_number":536,"context_line":""},{"line_number":537,"context_line":"class DatastoreVersionFlavor(object):"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    @classmethod"},{"line_number":540,"context_line":"    def datastore_flavor_add(cls, datastore_version_id, flavors):"},{"line_number":541,"context_line":"        db_api.configure_db(CONF)"},{"line_number":542,"context_line":"        for flavor in flavors.split(\",\"):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_3548be86","line":539,"updated":"2014-08-20 19:55:06.000000000","message":"nice","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"291bdff40c82a6d41def7f2239498745e937a77e","unresolved":false,"context_lines":[{"line_number":541,"context_line":"        db_api.configure_db(CONF)"},{"line_number":542,"context_line":"        for flavor in flavors.split(\",\"):"},{"line_number":543,"context_line":"            datastoreflavormapping \u003d DBDatastoreVersionMetadata.create("},{"line_number":544,"context_line":"                datastore_version_id\u003ddatastore_version_id, key\u003d\u0027flavor\u0027,"},{"line_number":545,"context_line":"                value\u003dflavor)"},{"line_number":546,"context_line":"            datastoreflavormapping.save()"},{"line_number":547,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_8ceb56db","line":544,"updated":"2014-08-27 22:14:05.000000000","message":"Can we have these DBDatastoreVersionMetadata key defined as a constant?  perhaps in DBDatastoreVersionMetadata. That way there is one place where these keys are located and they are not hard coded through the code.","commit_id":"ee8e2b95e9f939dc254bf078d23765937d3670bb"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":534,"context_line":"    db_api.save(version)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"class DatastoreVersionFlavor(object):"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    @classmethod"},{"line_number":540,"context_line":"    def datastore_flavor_add(cls, datastore_version_id, flavors):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_120e5a3b","line":537,"updated":"2014-09-04 04:29:40.000000000","message":"So while the table containing the flavor mapping is generic (it\u0027s called datastore_version_metadata), we\u0027re going to have a data layer class per key type? Seems like a single DatastoreVersionMetadata class would do for all.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":537,"context_line":"class DatastoreVersionFlavor(object):"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    @classmethod"},{"line_number":540,"context_line":"    def datastore_flavor_add(cls, datastore_version_id, flavors):"},{"line_number":541,"context_line":"        db_api.configure_db(CONF)"},{"line_number":542,"context_line":"        for flavor in flavors.split(\",\"):"},{"line_number":543,"context_line":"            datastoreflavormapping \u003d DBDatastoreVersionMetadata.create("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_b52d7897","line":540,"updated":"2014-09-04 04:29:40.000000000","message":"To match the naming convention in datastore_flavor_delete, I think the \"flavors\" parameter should be called \"flavor_ids\".","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":539,"context_line":"    @classmethod"},{"line_number":540,"context_line":"    def datastore_flavor_add(cls, datastore_version_id, flavors):"},{"line_number":541,"context_line":"        db_api.configure_db(CONF)"},{"line_number":542,"context_line":"        for flavor in flavors.split(\",\"):"},{"line_number":543,"context_line":"            datastoreflavormapping \u003d DBDatastoreVersionMetadata.create("},{"line_number":544,"context_line":"                datastore_version_id\u003ddatastore_version_id, value\u003dflavor)"},{"line_number":545,"context_line":"            datastoreflavormapping.save()"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_b506581b","line":542,"updated":"2014-09-04 04:29:40.000000000","message":"So even if we agree that the user should provide flavors this way (i.e. comma-separated with no whitespace, this should have already been converted to a list by the time it gets here.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":540,"context_line":"    def datastore_flavor_add(cls, datastore_version_id, flavors):"},{"line_number":541,"context_line":"        db_api.configure_db(CONF)"},{"line_number":542,"context_line":"        for flavor in flavors.split(\",\"):"},{"line_number":543,"context_line":"            datastoreflavormapping \u003d DBDatastoreVersionMetadata.create("},{"line_number":544,"context_line":"                datastore_version_id\u003ddatastore_version_id, value\u003dflavor)"},{"line_number":545,"context_line":"            datastoreflavormapping.save()"},{"line_number":546,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_952dd400","line":543,"updated":"2014-09-04 04:29:40.000000000","message":"I don\u0027t think \"datastoreflavormapping\" follows local variable naming conventions.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":541,"context_line":"        db_api.configure_db(CONF)"},{"line_number":542,"context_line":"        for flavor in flavors.split(\",\"):"},{"line_number":543,"context_line":"            datastoreflavormapping \u003d DBDatastoreVersionMetadata.create("},{"line_number":544,"context_line":"                datastore_version_id\u003ddatastore_version_id, value\u003dflavor)"},{"line_number":545,"context_line":"            datastoreflavormapping.save()"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_52046217","line":544,"updated":"2014-09-04 04:29:40.000000000","message":"The key column doesn\u0027t appear to be set here.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":550,"context_line":"        try:"},{"line_number":551,"context_line":"            db_record \u003d DBDatastoreVersionMetadata.find_by("},{"line_number":552,"context_line":"                datastore_version_id\u003ddatastore_version_id,"},{"line_number":553,"context_line":"                value\u003dflavor_id)"},{"line_number":554,"context_line":"            db_record.delete()"},{"line_number":555,"context_line":"        except exception.ModelNotFoundError:"},{"line_number":556,"context_line":"            raise exception.DatastoreFlavorAssociationNotFound("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_954f946a","line":553,"updated":"2014-09-04 04:29:40.000000000","message":"Due to the absence of the \"key\", this may delete the wrong rows.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":537,"context_line":"class DatastoreVersionMetadata(object):"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    @classmethod"},{"line_number":540,"context_line":"    def datastore_flavor_add(cls, datastore_version_id, flavor_ids):"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"        \"\"\"Create a datastore version - flavor association.\"\"\""},{"line_number":543,"context_line":"        # Do we have a mapping in the db?"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_5bbf84aa","line":540,"updated":"2014-09-09 16:18:41.000000000","message":"I see you changed the class name. I like that. But why do you still want to keep the flavor-named methods? If you really want to keep them (I disagree), I\u0027d have a private method:\n\n    @classmethod\n    def _metadata_add(cls, datastore_version_id, key, value, dupe_exception_class)\n\nThen have the flavor-named method delegate to it:\n\n    @classmethod\n    def datastore_flavor_add(cls, datastore_version_id, flavor_id):\n        _metadata_add(cls, datastore_version_id, \u0027flavor\u0027, flavor_id, exception.DatastoreFlavorAssociationAlreadyExists)\n\nAlso, I think it\u0027s confusing to simply use the phrase datastore in this method name when its datastore version. Same for datastore_flavor_delete.\n\nFinally, it appears that this call to update multiple rows could fail halfway through. Is this acceptable?","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":546,"context_line":"        # no: then just create the new association"},{"line_number":547,"context_line":"        db_api.configure_db(CONF)"},{"line_number":548,"context_line":""},{"line_number":549,"context_line":"        for flavor in flavor_ids:"},{"line_number":550,"context_line":"            try:"},{"line_number":551,"context_line":"                db_record \u003d DBDatastoreVersionMetadata.find_by("},{"line_number":552,"context_line":"                    datastore_version_id\u003ddatastore_version_id,"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_dbf614f9","line":549,"updated":"2014-09-09 16:18:41.000000000","message":"Var might be better named flavor_id.","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"8fc635255a46fa6ec3aac45cd5a45aaa1e88fdf5","unresolved":false,"context_lines":[{"line_number":552,"context_line":"                    datastore_version_id\u003ddatastore_version_id,"},{"line_number":553,"context_line":"                    key\u003d\u0027flavor\u0027, value\u003dflavor)"},{"line_number":554,"context_line":"                if db_record.deleted \u003d\u003d 1:"},{"line_number":555,"context_line":"                    db_record.deleted \u003d 0"},{"line_number":556,"context_line":"                    db_record.updated_at \u003d utils.utcnow()"},{"line_number":557,"context_line":"                    db_record.save()"},{"line_number":558,"context_line":"                    continue"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_dd324c0f","line":555,"updated":"2014-09-11 11:26:09.000000000","message":"you need to use method updated(self, **kwargs) of base model class, no need to manually perform model updating.","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"8fc635255a46fa6ec3aac45cd5a45aaa1e88fdf5","unresolved":false,"context_lines":[{"line_number":564,"context_line":"            datastore_flavor_mapping \u003d DBDatastoreVersionMetadata.create("},{"line_number":565,"context_line":"                datastore_version_id\u003ddatastore_version_id,"},{"line_number":566,"context_line":"                key\u003d\u0027flavor\u0027, value\u003dflavor)"},{"line_number":567,"context_line":"            datastore_flavor_mapping.save()"},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"    @classmethod"},{"line_number":570,"context_line":"    def datastore_flavor_delete(cls, datastore_version_id, flavor_id):"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_7d2320bd","line":567,"updated":"2014-09-11 11:26:09.000000000","message":"no need to call save manually, it\u0027s called when model gets created.","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class DBDatastoreVersionMetadata(dbmodels.DatabaseModelBase):"},{"line_number":64,"context_line":"    _data_fields \u003d [\u0027id\u0027, \u0027datastore_version_id\u0027, \u0027key\u0027, \u0027value\u0027,"},{"line_number":65,"context_line":"                    \u0027created\u0027, \u0027deleted\u0027, \u0027deleted_at\u0027]"},{"line_number":66,"context_line":"    preserve_on_delete \u003d True"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_2491f19a","line":65,"updated":"2014-11-27 09:48:28.000000000","message":"new table have \"updated\" attribute, why it\u0027s not here?","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"class DBDatastoreVersionMetadata(dbmodels.DatabaseModelBase):"},{"line_number":64,"context_line":"    _data_fields \u003d [\u0027id\u0027, \u0027datastore_version_id\u0027, \u0027key\u0027, \u0027value\u0027,"},{"line_number":65,"context_line":"                    \u0027created\u0027, \u0027deleted\u0027, \u0027deleted_at\u0027]"},{"line_number":66,"context_line":"    preserve_on_delete \u003d True"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_74008b66","line":65,"in_reply_to":"5a890539_2491f19a","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"98afc1c3bd2831320cda33b1b4ea4e4acc72bae2","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        db_api.configure_db(CONF)"},{"line_number":581,"context_line":"        for flavor_id in flavor_ids:"},{"line_number":582,"context_line":"            DatastoreVersionMetadata.__dsversion_metadata_add("},{"line_number":583,"context_line":"                datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":584,"context_line":"                exception.DatastoreFlavorAssociationAlreadyExists)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_ad17b9a1","line":583,"updated":"2014-11-25 22:00:39.000000000","message":"why cant we directly call __dsversion_metadata_add instead? __dsversion_metadata_add and add_datastore_version_flavor_association are in the same class, right.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"56d8e042e35539e2eb4de899c6ed886b96963390","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        db_api.configure_db(CONF)"},{"line_number":581,"context_line":"        for flavor_id in flavor_ids:"},{"line_number":582,"context_line":"            DatastoreVersionMetadata.__dsversion_metadata_add("},{"line_number":583,"context_line":"                datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":584,"context_line":"                exception.DatastoreFlavorAssociationAlreadyExists)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_53fdae6d","line":583,"in_reply_to":"5a890539_4298df74","updated":"2014-12-01 08:56:51.000000000","message":"Yes Riddhi, You are right. Its a class method, thats why. Thanks for clarifying.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        db_api.configure_db(CONF)"},{"line_number":581,"context_line":"        for flavor_id in flavor_ids:"},{"line_number":582,"context_line":"            DatastoreVersionMetadata.__dsversion_metadata_add("},{"line_number":583,"context_line":"                datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":584,"context_line":"                exception.DatastoreFlavorAssociationAlreadyExists)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_645059d5","line":583,"in_reply_to":"5a890539_4298df74","updated":"2014-11-27 09:48:28.000000000","message":"so what, there\u0027s no restrictions for python objects.\n\nyou should user cls.__dsversion_metadata_add","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"84fa7a8b7252924f29138d4d4b018cff475ffef7","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        db_api.configure_db(CONF)"},{"line_number":581,"context_line":"        for flavor_id in flavor_ids:"},{"line_number":582,"context_line":"            DatastoreVersionMetadata.__dsversion_metadata_add("},{"line_number":583,"context_line":"                datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":584,"context_line":"                exception.DatastoreFlavorAssociationAlreadyExists)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_79436913","line":583,"in_reply_to":"5a890539_53fdae6d","updated":"2014-12-01 10:01:13.000000000","message":"this method can be accessed by: cls.__dsverion ...","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        db_api.configure_db(CONF)"},{"line_number":581,"context_line":"        for flavor_id in flavor_ids:"},{"line_number":582,"context_line":"            DatastoreVersionMetadata.__dsversion_metadata_add("},{"line_number":583,"context_line":"                datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":584,"context_line":"                exception.DatastoreFlavorAssociationAlreadyExists)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_94f8977d","line":583,"in_reply_to":"5a890539_79436913","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"ee2b36c5d735cc7f66f123ae717b97dd4fb12ed1","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        db_api.configure_db(CONF)"},{"line_number":581,"context_line":"        for flavor_id in flavor_ids:"},{"line_number":582,"context_line":"            DatastoreVersionMetadata.__dsversion_metadata_add("},{"line_number":583,"context_line":"                datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":584,"context_line":"                exception.DatastoreFlavorAssociationAlreadyExists)"},{"line_number":585,"context_line":""},{"line_number":586,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_4298df74","line":583,"in_reply_to":"5a890539_ad17b9a1","updated":"2014-11-26 00:27:34.000000000","message":"I had tried calling it directly, but it throws an error while accessing the method. I think this is because it is a @classmethod.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":587,"context_line":"    def delete_datastore_version_flavor_association(cls, datastore_version_id,"},{"line_number":588,"context_line":"                                                    flavor_id):"},{"line_number":589,"context_line":"        db_api.configure_db(CONF)"},{"line_number":590,"context_line":"        DatastoreVersionMetadata.__dsversion_metadata_delete("},{"line_number":591,"context_line":"            datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":592,"context_line":"            exception.DatastoreFlavorAssociationNotFound)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_646779b8","line":590,"updated":"2014-11-27 09:48:28.000000000","message":"same","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":587,"context_line":"    def delete_datastore_version_flavor_association(cls, datastore_version_id,"},{"line_number":588,"context_line":"                                                    flavor_id):"},{"line_number":589,"context_line":"        db_api.configure_db(CONF)"},{"line_number":590,"context_line":"        DatastoreVersionMetadata.__dsversion_metadata_delete("},{"line_number":591,"context_line":"            datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":592,"context_line":"            exception.DatastoreFlavorAssociationNotFound)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_b4f59384","line":590,"in_reply_to":"5a890539_646779b8","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e477687582ad35e20320d89801bf8c746fbb6d31","unresolved":false,"context_lines":[{"line_number":596,"context_line":"    @classmethod"},{"line_number":597,"context_line":"    def list_datastore_version_flavor_associations(cls, context, datastore_id,"},{"line_number":598,"context_line":"                                                   datastore_version_id):"},{"line_number":599,"context_line":"        if datastore_id and datastore_version_id:"},{"line_number":600,"context_line":"            \"\"\""},{"line_number":601,"context_line":"            All nova flavors are permitted for a datastore_version unless"},{"line_number":602,"context_line":"            one or more entries are found in datastore_version_metadata,"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a890539_405f0541","line":599,"updated":"2014-12-04 08:19:02.000000000","message":"this code should work even without datastore id, because, as said earlier, you can get datastore by its id from datastore version object.","commit_id":"cc4ae9c28cb074b54f3d86ba0e72689484ae75f9"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e477687582ad35e20320d89801bf8c746fbb6d31","unresolved":false,"context_lines":[{"line_number":608,"context_line":"            except exception.ModelNotFoundError:"},{"line_number":609,"context_line":"                raise exception.DatastoreVersionNotFound("},{"line_number":610,"context_line":"                    version\u003ddatastore_version_id)"},{"line_number":611,"context_line":"            if version.datastore_id !\u003d datastore_id:"},{"line_number":612,"context_line":"                raise exception.DatastoreNotFound(datastore\u003ddatastore_id)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"            # If datastore_version_id and flavor key exists in the"}],"source_content_type":"text/x-python","patch_set":20,"id":"5a890539_c0193589","line":611,"updated":"2014-12-04 08:19:02.000000000","message":"This is a bit wrong approach because if you have datastore id and datastore version id you can\u0027t say that datastore is missing if given datastore version belongs to another datastore, you should raise an exception for datastore version, but not for datastore.","commit_id":"cc4ae9c28cb074b54f3d86ba0e72689484ae75f9"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e477687582ad35e20320d89801bf8c746fbb6d31","unresolved":false,"context_lines":[{"line_number":610,"context_line":"                    version\u003ddatastore_version_id)"},{"line_number":611,"context_line":"            if version.datastore_id !\u003d datastore_id:"},{"line_number":612,"context_line":"                raise exception.DatastoreNotFound(datastore\u003ddatastore_id)"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":"            # If datastore_version_id and flavor key exists in the"},{"line_number":615,"context_line":"            # metadata table return all the associated flavors for"},{"line_number":616,"context_line":"            # that datastore version."}],"source_content_type":"text/x-python","patch_set":20,"id":"5a890539_fb1d0463","line":613,"updated":"2014-12-04 08:19:02.000000000","message":"code from line #604 to #612 should be removed and existing logic should be reused, see\"get_datastore_version\" (see line #480)","commit_id":"cc4ae9c28cb074b54f3d86ba0e72689484ae75f9"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"9ac5fe53345d86a84d31d6f54b21b36677b3b2aa","unresolved":false,"context_lines":[{"line_number":594,"context_line":"            exception.DatastoreFlavorAssociationNotFound)"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    @classmethod"},{"line_number":597,"context_line":"    def list_datastore_version_flavor_associations(cls, context, datastore,"},{"line_number":598,"context_line":"                                                   datastore_version_id):"},{"line_number":599,"context_line":"        if datastore and datastore_version_id:"},{"line_number":600,"context_line":"            \"\"\""}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_60ebef12","line":597,"updated":"2014-12-05 11:48:54.000000000","message":"Please, give meaningful names it will simplify reading.\n\nFor example: \"datastore\" is probably datastore_name or datastore_type, then\nyou can use \"datastore\" instead of \"ds\".\n\nds_v is probably \"datastore_version\". This name is still available.","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e31a8555406f01bf110cd74c3f16bd120b558b8f","unresolved":false,"context_lines":[{"line_number":596,"context_line":"    @classmethod"},{"line_number":597,"context_line":"    def list_datastore_version_flavor_associations(cls, context, datastore,"},{"line_number":598,"context_line":"                                                   datastore_version_id):"},{"line_number":599,"context_line":"        if datastore and datastore_version_id:"},{"line_number":600,"context_line":"            \"\"\""},{"line_number":601,"context_line":"            All nova flavors are permitted for a datastore_version unless"},{"line_number":602,"context_line":"            one or more entries are found in datastore_version_metadata,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_fb1cf2c4","line":599,"updated":"2014-12-05 12:24:52.000000000","message":"still no changes, this code should work even without datastore id, because, as said earlier, you can get datastore by its id from datastore version object.","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a5b79bde0d8688ad400d05bd59c5cef842821098","unresolved":false,"context_lines":[{"line_number":597,"context_line":"    def list_datastore_version_flavor_associations(cls, context,"},{"line_number":598,"context_line":"                                                   datastore_type,"},{"line_number":599,"context_line":"                                                   datastore_version_id):"},{"line_number":600,"context_line":"        if datastore_version_id:"},{"line_number":601,"context_line":"            \"\"\""},{"line_number":602,"context_line":"            All nova flavors are permitted for a datastore_version unless"},{"line_number":603,"context_line":"            one or more entries are found in datastore_version_metadata,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a961159_a95dca4a","line":600,"updated":"2014-12-07 22:19:49.000000000","message":"Denis, I hope this is what you were pointing at. Let me know if this is still not that. Thank you:)","commit_id":"b4b8fdf4a6feb969bfcdd780e9ad3675986f5ccb"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"18293f4a297eec3d259ae726b562c067a768f883","unresolved":false,"context_lines":[{"line_number":597,"context_line":"    def list_datastore_version_flavor_associations(cls, context,"},{"line_number":598,"context_line":"                                                   datastore_type,"},{"line_number":599,"context_line":"                                                   datastore_version_id):"},{"line_number":600,"context_line":"        if datastore_version_id:"},{"line_number":601,"context_line":"            \"\"\""},{"line_number":602,"context_line":"            All nova flavors are permitted for a datastore_version unless"},{"line_number":603,"context_line":"            one or more entries are found in datastore_version_metadata,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a961159_68466ec1","line":600,"in_reply_to":"3a961159_a95dca4a","updated":"2014-12-08 12:45:26.000000000","message":"looks good, thanks","commit_id":"b4b8fdf4a6feb969bfcdd780e9ad3675986f5ccb"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"dd42a60a1a0fdb98aae68ccdb77e6244a9121ddc","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from trove.db import get_db_api"},{"line_number":24,"context_line":"from trove.openstack.common import log as logging"},{"line_number":25,"context_line":"from trove.common.remote import create_nova_client"},{"line_number":26,"context_line":"from trove.flavor.models import Flavor"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_188bdfc3","line":26,"updated":"2014-12-12 02:37:49.000000000","message":"I think convention is to have lower case import names.","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f1e31e0f2aa6a1b803749321835cf5432d575a2b","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from trove.db import get_db_api"},{"line_number":24,"context_line":"from trove.openstack.common import log as logging"},{"line_number":25,"context_line":"from trove.common.remote import create_nova_client"},{"line_number":26,"context_line":"from trove.flavor.models import Flavor"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_6d232005","line":26,"in_reply_to":"3a961159_188bdfc3","updated":"2014-12-23 11:46:52.000000000","message":"+1","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"da97ff3855d79830a429a8f26585e8c185c3537c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from trove.db import get_db_api"},{"line_number":24,"context_line":"from trove.openstack.common import log as logging"},{"line_number":25,"context_line":"from trove.common.remote import create_nova_client"},{"line_number":26,"context_line":"from trove.flavor.models import Flavor"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":26,"id":"da86d52c_c53c64c2","line":26,"in_reply_to":"3a961159_188bdfc3","updated":"2015-02-03 01:43:33.000000000","message":"+1","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f1e31e0f2aa6a1b803749321835cf5432d575a2b","unresolved":false,"context_lines":[{"line_number":532,"context_line":"    version.image_id \u003d image_id"},{"line_number":533,"context_line":"    version.packages \u003d packages"},{"line_number":534,"context_line":"    version.active \u003d active"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"    db_api.save(version)"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_ad1988d2","line":535,"updated":"2014-12-23 11:46:52.000000000","message":"redundant line?","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f1e31e0f2aa6a1b803749321835cf5432d575a2b","unresolved":false,"context_lines":[{"line_number":539,"context_line":"class DatastoreVersionMetadata(object):"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    @classmethod"},{"line_number":542,"context_line":"    def __dsversion_metadata_add(cls, datastore_version_id, key, value,"},{"line_number":543,"context_line":"                                 exception_class):"},{"line_number":544,"context_line":"        \"\"\"Create an entry in the Datastore Version Metadata table.\"\"\""},{"line_number":545,"context_line":"        # Do we have a mapping in the db?"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_cd7b34f3","line":542,"updated":"2014-12-23 11:46:52.000000000","message":"i feel concerned about name convention, why not just use full names?","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"2e43b7117d6a097c2beae0f1ec4beb3e55c5a4c4","unresolved":false,"context_lines":[{"line_number":539,"context_line":"class DatastoreVersionMetadata(object):"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    @classmethod"},{"line_number":542,"context_line":"    def __dsversion_metadata_add(cls, datastore_version_id, key, value,"},{"line_number":543,"context_line":"                                 exception_class):"},{"line_number":544,"context_line":"        \"\"\"Create an entry in the Datastore Version Metadata table.\"\"\""},{"line_number":545,"context_line":"        # Do we have a mapping in the db?"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_7b464b7d","line":542,"in_reply_to":"3a961159_cd7b34f3","updated":"2015-01-09 16:50:15.000000000","message":"I agree with \u0027private\u0027 methods, but we should use full names - datastore_version instead of dsversion, that\u0027s all.","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"6f7e30187e1ce82869be254d14f2e23b7e4c14cd","unresolved":false,"context_lines":[{"line_number":539,"context_line":"class DatastoreVersionMetadata(object):"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"    @classmethod"},{"line_number":542,"context_line":"    def __dsversion_metadata_add(cls, datastore_version_id, key, value,"},{"line_number":543,"context_line":"                                 exception_class):"},{"line_number":544,"context_line":"        \"\"\"Create an entry in the Datastore Version Metadata table.\"\"\""},{"line_number":545,"context_line":"        # Do we have a mapping in the db?"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_49376db0","line":542,"in_reply_to":"3a961159_cd7b34f3","updated":"2015-01-06 16:41:21.000000000","message":"I\u0027m not sure I understand the above comment, but I believe the convention for \u0027private\u0027 methods is to use a single underscore in the name, for example:\n\n def _dsversion_metadata_add(cls, ...","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"6f7e30187e1ce82869be254d14f2e23b7e4c14cd","unresolved":false,"context_lines":[{"line_number":565,"context_line":"            key\u003dkey, value\u003dvalue)"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    @classmethod"},{"line_number":568,"context_line":"    def __dsversion_metadata_delete(cls, datastore_version_id, key, value,"},{"line_number":569,"context_line":"                                    exception_class):"},{"line_number":570,"context_line":"        try:"},{"line_number":571,"context_line":"            db_record \u003d DBDatastoreVersionMetadata.find_by("}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_a959b1fe","line":568,"updated":"2015-01-06 16:41:21.000000000","message":"ditto","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"2e43b7117d6a097c2beae0f1ec4beb3e55c5a4c4","unresolved":false,"context_lines":[{"line_number":565,"context_line":"            key\u003dkey, value\u003dvalue)"},{"line_number":566,"context_line":""},{"line_number":567,"context_line":"    @classmethod"},{"line_number":568,"context_line":"    def __dsversion_metadata_delete(cls, datastore_version_id, key, value,"},{"line_number":569,"context_line":"                                    exception_class):"},{"line_number":570,"context_line":"        try:"},{"line_number":571,"context_line":"            db_record \u003d DBDatastoreVersionMetadata.find_by("}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_9b5a1750","line":568,"in_reply_to":"3a961159_a959b1fe","updated":"2015-01-09 16:50:15.000000000","message":"same thing","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"d5604a6f374524c1066a063afacabf068cc59f57","unresolved":false,"context_lines":[{"line_number":524,"context_line":"    version.image_id \u003d image_id"},{"line_number":525,"context_line":"    version.packages \u003d packages"},{"line_number":526,"context_line":"    version.active \u003d active"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    db_api.save(version)"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"1aca2d91_e421adb5","line":527,"updated":"2015-05-08 17:40:32.000000000","message":"Can remove this blank line, I saw many blank being removed in the patchset","commit_id":"262fa7e400488edd87eed5d9c08872356fcdb493"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"d5604a6f374524c1066a063afacabf068cc59f57","unresolved":false,"context_lines":[{"line_number":530,"context_line":""},{"line_number":531,"context_line":"class DatastoreVersionMetadata(object):"},{"line_number":532,"context_line":"    @classmethod"},{"line_number":533,"context_line":"    def __datastore_version_metadata_add(cls, datastore_version_id,"},{"line_number":534,"context_line":"                                         key, value, exception_class):"},{"line_number":535,"context_line":"        \"\"\"Create an entry in the Datastore Version Metadata table.\"\"\""},{"line_number":536,"context_line":"        # Do we have a mapping in the db?"}],"source_content_type":"text/x-python","patch_set":28,"id":"1aca2d91_8432f90e","line":533,"updated":"2015-05-08 17:40:32.000000000","message":"can we have this name starting with a single \"_\" or is there a special reason for __\n\nThere was a review in earlier patchset regarding this, if we can address","commit_id":"262fa7e400488edd87eed5d9c08872356fcdb493"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"d5604a6f374524c1066a063afacabf068cc59f57","unresolved":false,"context_lines":[{"line_number":557,"context_line":"            key\u003dkey, value\u003dvalue)"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"    @classmethod"},{"line_number":560,"context_line":"    def __datastore_version_metadata_delete(cls, datastore_version_id,"},{"line_number":561,"context_line":"                                            key, value, exception_class):"},{"line_number":562,"context_line":"        try:"},{"line_number":563,"context_line":"            db_record \u003d DBDatastoreVersionMetadata.find_by("}],"source_content_type":"text/x-python","patch_set":28,"id":"1aca2d91_641c7d77","line":560,"updated":"2015-05-08 17:40:32.000000000","message":"Nomenclature with single \"_\"","commit_id":"262fa7e400488edd87eed5d9c08872356fcdb493"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"33213fc71e7dd6cf988f1dc115e11bca4dbd38a8","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#"},{"line_number":7,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":8,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":9,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_1d170e49","line":6,"updated":"2015-05-22 17:20:33.000000000","message":"un-needed line break","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"33213fc71e7dd6cf988f1dc115e11bca4dbd38a8","unresolved":false,"context_lines":[{"line_number":285,"context_line":""},{"line_number":286,"context_line":""},{"line_number":287,"context_line":"class Capability(BaseCapability):"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    @property"},{"line_number":290,"context_line":"    def name(self):"},{"line_number":291,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_1d3eeec0","line":288,"updated":"2015-05-22 17:20:33.000000000","message":"un-needed line break","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"33213fc71e7dd6cf988f1dc115e11bca4dbd38a8","unresolved":false,"context_lines":[{"line_number":534,"context_line":"    version.image_id \u003d image_id"},{"line_number":535,"context_line":"    version.packages \u003d packages"},{"line_number":536,"context_line":"    version.active \u003d active"},{"line_number":537,"context_line":""},{"line_number":538,"context_line":"    db_api.save(version)"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_bd2eba89","line":537,"updated":"2015-05-22 17:20:33.000000000","message":"un-needed line break","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"33213fc71e7dd6cf988f1dc115e11bca4dbd38a8","unresolved":false,"context_lines":[{"line_number":649,"context_line":"                                           for item in nova_flavors)"},{"line_number":650,"context_line":"            return associated_flavors"},{"line_number":651,"context_line":"        else:"},{"line_number":652,"context_line":"            msg \u003d _(\"Specify both the datastore and datastore_version_id .\")"},{"line_number":653,"context_line":"            raise exception.BadRequest(msg)"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_7da162f7","line":652,"updated":"2015-05-22 17:20:33.000000000","message":"space before \".\"","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":589,"context_line":"            name\u003ddatastore_version_name"},{"line_number":590,"context_line":"        )"},{"line_number":591,"context_line":"        datastore_version_id \u003d db_dsv_record.id"},{"line_number":592,"context_line":"        for flavor_id in flavor_ids:"},{"line_number":593,"context_line":"            cls._datastore_version_metadata_add("},{"line_number":594,"context_line":"                datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":595,"context_line":"                exception.DatastoreFlavorAssociationAlreadyExists)"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_71f8627d","line":592,"updated":"2015-06-13 02:21:47.000000000","message":"shouldn\u0027t you be checking here to make sure that they are valid nova flavors?","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","unresolved":false,"context_lines":[{"line_number":589,"context_line":"            name\u003ddatastore_version_name"},{"line_number":590,"context_line":"        )"},{"line_number":591,"context_line":"        datastore_version_id \u003d db_dsv_record.id"},{"line_number":592,"context_line":"        for flavor_id in flavor_ids:"},{"line_number":593,"context_line":"            cls._datastore_version_metadata_add("},{"line_number":594,"context_line":"                datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":595,"context_line":"                exception.DatastoreFlavorAssociationAlreadyExists)"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_24b813e5","line":592,"in_reply_to":"fa32b979_71f8627d","updated":"2015-06-16 22:10:31.000000000","message":"The trove-manage does not have a context, which can be used here to get the list of flavors from nova. But we are definitely making sure that while listing the flavors associated, we only list the valid flavors that got added.","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":608,"context_line":"            name\u003ddatastore_version_name"},{"line_number":609,"context_line":"        )"},{"line_number":610,"context_line":"        datastore_version_id \u003d db_dsv_record.id"},{"line_number":611,"context_line":"        cls._datastore_version_metadata_delete("},{"line_number":612,"context_line":"            datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":613,"context_line":"            exception.DatastoreFlavorAssociationNotFound)"},{"line_number":614,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_1130f655","line":611,"updated":"2015-06-13 02:21:47.000000000","message":"exception handling on this?","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","unresolved":false,"context_lines":[{"line_number":608,"context_line":"            name\u003ddatastore_version_name"},{"line_number":609,"context_line":"        )"},{"line_number":610,"context_line":"        datastore_version_id \u003d db_dsv_record.id"},{"line_number":611,"context_line":"        cls._datastore_version_metadata_delete("},{"line_number":612,"context_line":"            datastore_version_id, \u0027flavor\u0027, flavor_id,"},{"line_number":613,"context_line":"            exception.DatastoreFlavorAssociationNotFound)"},{"line_number":614,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_f87619d6","line":611,"in_reply_to":"fa32b979_1130f655","updated":"2015-06-16 22:10:31.000000000","message":"DatastoreFlavorAssociationNotFound handles flavors which are either not associated or already deleted","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":635,"context_line":"            if (bound_flavors.count() !\u003d 0):"},{"line_number":636,"context_line":"                bound_flavors \u003d tuple(f.value for f in bound_flavors)"},{"line_number":637,"context_line":"                # Generate a filtered list of nova flavors"},{"line_number":638,"context_line":"                ds_nova_flavors \u003d (f for f in nova_flavors"},{"line_number":639,"context_line":"                                   if f.id in bound_flavors)"},{"line_number":640,"context_line":"                associated_flavors \u003d tuple(flavor_model(flavor\u003ditem)"},{"line_number":641,"context_line":"                                           for item in ds_nova_flavors)"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_b1fd8a70","line":638,"updated":"2015-06-13 02:21:47.000000000","message":"Are you expecting there to be flavors in the mapping that aren\u0027t in Nova?","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                                           for item in nova_flavors)"},{"line_number":647,"context_line":"            return associated_flavors"},{"line_number":648,"context_line":"        else:"},{"line_number":649,"context_line":"            msg \u003d _(\"Specify both the datastore and datastore_version_id.\")"},{"line_number":650,"context_line":"            raise exception.BadRequest(msg)"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_91f5e684","line":649,"updated":"2015-06-13 02:21:47.000000000","message":"the message seems out of whack with the test.","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                                           for item in nova_flavors)"},{"line_number":647,"context_line":"            return associated_flavors"},{"line_number":648,"context_line":"        else:"},{"line_number":649,"context_line":"            msg \u003d _(\"Specify both the datastore and datastore_version_id.\")"},{"line_number":650,"context_line":"            raise exception.BadRequest(msg)"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_648cdb35","line":649,"in_reply_to":"fa32b979_91f5e684","updated":"2015-06-16 22:10:31.000000000","message":"Done","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"}],"trove/datastore/service.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e477687582ad35e20320d89801bf8c746fbb6d31","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from trove.common import wsgi"},{"line_number":20,"context_line":"from trove.datastore import models, views"},{"line_number":21,"context_line":"from trove.datastore.models import DatastoreVersionMetadata as dsmetadata"},{"line_number":22,"context_line":"from trove.flavor import views as flavor_views"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"5a890539_fb5424ff","line":21,"updated":"2014-12-04 08:19:02.000000000","message":"let\u0027s make this line shorter and do not use alias.","commit_id":"cc4ae9c28cb074b54f3d86ba0e72689484ae75f9"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"9ac5fe53345d86a84d31d6f54b21b36677b3b2aa","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                           DatastoreVersionsView(datastore_versions,"},{"line_number":64,"context_line":"                                                 req).data(), 200)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def list_associated_flavors(self, req, tenant_id, datastore,"},{"line_number":67,"context_line":"                                version_id):"},{"line_number":68,"context_line":"        \u0027\u0027\u0027"},{"line_number":69,"context_line":"        All nova flavors are returned for a datastore-version unless"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_80da9b49","line":66,"updated":"2014-12-05 11:48:54.000000000","message":"Do you expect for the datastore name or id here, or maybe this an object?","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e31a8555406f01bf110cd74c3f16bd120b558b8f","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                           DatastoreVersionsView(datastore_versions,"},{"line_number":64,"context_line":"                                                 req).data(), 200)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def list_associated_flavors(self, req, tenant_id, datastore,"},{"line_number":67,"context_line":"                                version_id):"},{"line_number":68,"context_line":"        \u0027\u0027\u0027"},{"line_number":69,"context_line":"        All nova flavors are returned for a datastore-version unless"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_5b62663e","line":66,"in_reply_to":"5a890539_80da9b49","updated":"2014-12-05 12:24:52.000000000","message":"docstrings are nice-to-have here, +1 to Sergey","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e31a8555406f01bf110cd74c3f16bd120b558b8f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        in which case only those are returned."},{"line_number":72,"context_line":"        \u0027\u0027\u0027"},{"line_number":73,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":74,"context_line":"        dsmetadata \u003d models.DatastoreVersionMetadata"},{"line_number":75,"context_line":"        flavors \u003d dsmetadata.list_datastore_version_flavor_associations("},{"line_number":76,"context_line":"            context\u003dcontext,"},{"line_number":77,"context_line":"            datastore\u003ddatastore,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_1b48deb2","line":74,"updated":"2014-12-05 12:24:52.000000000","message":"this is not required","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a5b79bde0d8688ad400d05bd59c5cef842821098","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        in which case only those are returned."},{"line_number":72,"context_line":"        \u0027\u0027\u0027"},{"line_number":73,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":74,"context_line":"        dsmetadata \u003d models.DatastoreVersionMetadata"},{"line_number":75,"context_line":"        flavors \u003d dsmetadata.list_datastore_version_flavor_associations("},{"line_number":76,"context_line":"            context\u003dcontext,"},{"line_number":77,"context_line":"            datastore_type\u003ddatastore,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a961159_49362605","line":74,"updated":"2014-12-07 22:19:49.000000000","message":"Denis, pep8 would not allow me to use \nmodels.DatastoreVersionMetadata.list_datastore_version_flavor_associations in a single line. Hence, I had to workaround like this.\nLet me know if there is any other workaround.\nThanks.","commit_id":"b4b8fdf4a6feb969bfcdd780e9ad3675986f5ccb"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"18293f4a297eec3d259ae726b562c067a768f883","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        in which case only those are returned."},{"line_number":72,"context_line":"        \u0027\u0027\u0027"},{"line_number":73,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":74,"context_line":"        dsmetadata \u003d models.DatastoreVersionMetadata"},{"line_number":75,"context_line":"        flavors \u003d dsmetadata.list_datastore_version_flavor_associations("},{"line_number":76,"context_line":"            context\u003dcontext,"},{"line_number":77,"context_line":"            datastore_type\u003ddatastore,"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a961159_c883e2ca","line":74,"in_reply_to":"3a961159_49362605","updated":"2014-12-08 12:45:26.000000000","message":"You can always wrap lines \u003d)\n\nflavors \u003d (models.DatastoreVersionMetadata.\n           list_datastore_version_flavor_associations(\n           context\u003dcontext, datastore_type\u003ddatastore,\n           datastore_version_id\u003dversion_id))","commit_id":"b4b8fdf4a6feb969bfcdd780e9ad3675986f5ccb"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"18293f4a297eec3d259ae726b562c067a768f883","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        flavors \u003d dsmetadata.list_datastore_version_flavor_associations("},{"line_number":76,"context_line":"            context\u003dcontext,"},{"line_number":77,"context_line":"            datastore_type\u003ddatastore,"},{"line_number":78,"context_line":"            datastore_version_id\u003dversion_id,"},{"line_number":79,"context_line":"        )"},{"line_number":80,"context_line":"        return wsgi.Result(flavor_views.FlavorsView(flavors, req).data(), 200)"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a961159_e85fbe70","line":78,"updated":"2014-12-08 12:45:26.000000000","message":"context, datastore type, datastore version - this are positional args, you don\u0027t have to pass them as key-value args to function (see method definition in models.py)","commit_id":"b4b8fdf4a6feb969bfcdd780e9ad3675986f5ccb"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"df3f0ec832efcbe4bfb75797595dc06b26437022","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":74,"context_line":"        flavors \u003d (models.DatastoreVersionMetadata."},{"line_number":75,"context_line":"                   list_datastore_version_flavor_associations("},{"line_number":76,"context_line":"                   context, datastore, version_id))"},{"line_number":77,"context_line":"        return wsgi.Result(flavor_views.FlavorsView(flavors, req).data(), 200)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a961159_3a3e5ab9","line":76,"updated":"2014-12-08 19:17:37.000000000","message":"Denis: hope this looks good now:)","commit_id":"b0feda0f052fe38d50103519187ba4f517dc6827"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"5a53a0113bde0397cbe71c1433a54e455d759d3e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":74,"context_line":"        flavors \u003d (models.DatastoreVersionMetadata."},{"line_number":75,"context_line":"                   list_datastore_version_flavor_associations("},{"line_number":76,"context_line":"                   context, datastore, version_id))"},{"line_number":77,"context_line":"        return wsgi.Result(flavor_views.FlavorsView(flavors, req).data(), 200)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a961159_6dee6eee","line":76,"in_reply_to":"3a961159_3a3e5ab9","updated":"2014-12-08 20:00:02.000000000","message":"Thanks. LGTM!","commit_id":"b0feda0f052fe38d50103519187ba4f517dc6827"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"da97ff3855d79830a429a8f26585e8c185c3537c","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def list_associated_flavors(self, req, tenant_id, datastore,"},{"line_number":67,"context_line":"                                version_id):"},{"line_number":68,"context_line":"        \u0027\u0027\u0027"},{"line_number":69,"context_line":"        All nova flavors are returned for a datastore-version unless"},{"line_number":70,"context_line":"        one or more entries are found in datastore_version_metadata,"},{"line_number":71,"context_line":"        in which case only those are returned."}],"source_content_type":"text/x-python","patch_set":26,"id":"da86d52c_8580ac47","line":68,"updated":"2015-02-03 01:43:33.000000000","message":"\"\"\"","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        in which case only those are returned."},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":74,"context_line":"        flavors \u003d (models.DatastoreVersionMetadata."},{"line_number":75,"context_line":"                   list_datastore_version_flavor_associations("},{"line_number":76,"context_line":"                       context, datastore, version_id))"},{"line_number":77,"context_line":"        return wsgi.Result(flavor_views.FlavorsView(flavors, req).data(), 200)"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_b134aa4a","line":74,"updated":"2015-06-13 02:21:47.000000000","message":"no validation here to ensure that these are really Nova flavors?","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        in which case only those are returned."},{"line_number":72,"context_line":"        \"\"\""},{"line_number":73,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":74,"context_line":"        flavors \u003d (models.DatastoreVersionMetadata."},{"line_number":75,"context_line":"                   list_datastore_version_flavor_associations("},{"line_number":76,"context_line":"                       context, datastore, version_id))"},{"line_number":77,"context_line":"        return wsgi.Result(flavor_views.FlavorsView(flavors, req).data(), 200)"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_57670b25","line":74,"in_reply_to":"fa32b979_b134aa4a","updated":"2015-06-16 22:10:31.000000000","message":"the list_datastore_version_flavor_associations in DatastoreVersionMetadata lists only the Nova flavors","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"}],"trove/db/sqlalchemy/migrate_repo/versions/032_add_datastore_version_metadata.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from trove.db.sqlalchemy.migrate_repo.schema import Table"},{"line_number":24,"context_line":"from trove.openstack.common import log as logging"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"logger \u003d logging.getLogger(\u0027trove.db.sqlalchemy.migrate_repo.schema\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"meta \u003d MetaData()"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_72ee7c8c","line":26,"updated":"2014-07-28 12:50:47.000000000","message":"not used","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from trove.db.sqlalchemy.migrate_repo.schema import Table"},{"line_number":24,"context_line":"from trove.openstack.common import log as logging"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"logger \u003d logging.getLogger(\u0027trove.db.sqlalchemy.migrate_repo.schema\u0027)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"meta \u003d MetaData()"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_67fcc7b6","line":26,"in_reply_to":"baada198_72ee7c8c","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"b79185aa1146d85e1b5dea6eecf724100972e69e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    Column("},{"line_number":35,"context_line":"        \u0027datastore_version_id\u0027,"},{"line_number":36,"context_line":"        String(36),"},{"line_number":37,"context_line":"        ForeignKey(\u0027datastore_versions.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":38,"context_line":"    ),"},{"line_number":39,"context_line":"    Column(\u0027key\u0027, String(256), nullable\u003dFalse),"},{"line_number":40,"context_line":"    Column(\u0027value\u0027, String(256)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_71b72522","line":37,"updated":"2014-07-29 15:12:01.000000000","message":"Any thoughts about using this metadata model? https://review.openstack.org/#/c/82123/17/trove/metadata/models.py u.e.e including created, deleted, deleted_at?","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    Column("},{"line_number":35,"context_line":"        \u0027datastore_version_id\u0027,"},{"line_number":36,"context_line":"        String(36),"},{"line_number":37,"context_line":"        ForeignKey(\u0027datastore_versions.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":38,"context_line":"    ),"},{"line_number":39,"context_line":"    Column(\u0027key\u0027, String(256), nullable\u003dFalse),"},{"line_number":40,"context_line":"    Column(\u0027value\u0027, String(256)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a94ea936","line":37,"in_reply_to":"baada198_71b72522","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"c273e54c3ab459f1ad3cda5f22a20bc4cb6a84ab","unresolved":false,"context_lines":[{"line_number":27,"context_line":"meta \u003d MetaData()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"datastore_version_metadata \u003d Table("},{"line_number":30,"context_line":"    \u0027datastore_version_metadata\u0027,"},{"line_number":31,"context_line":"    meta,"},{"line_number":32,"context_line":"    Column(\u0027id\u0027, String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":33,"context_line":"    Column("}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_5bf84c4a","line":30,"updated":"2014-08-06 23:48:56.000000000","message":"why is the concept of a metadata table being introduced for a datastore-flavor feature? this seems like a much larger discussion point.","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f12598fd33a6e4958887b04f1efdeca761989d23","unresolved":false,"context_lines":[{"line_number":27,"context_line":"meta \u003d MetaData()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"datastore_version_metadata \u003d Table("},{"line_number":30,"context_line":"    \u0027datastore_version_metadata\u0027,"},{"line_number":31,"context_line":"    meta,"},{"line_number":32,"context_line":"    Column(\u0027id\u0027, String(36), primary_key\u003dTrue, nullable\u003dFalse),"},{"line_number":33,"context_line":"    Column("}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_afbe3bcc","line":30,"in_reply_to":"baada198_5bf84c4a","updated":"2014-08-08 19:34:38.000000000","message":"What exactly is your concern? There is an approved blueprint on this - https://blueprints.launchpad.net/trove/+spec/associate-flavors-datastores","commit_id":"386f2352a5ae1aa35cf15aa9ab943759995db11c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"2eb33ecc5ef9b432dedef029b654553c105949f5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    Column(\u0027value\u0027, String(256)),"},{"line_number":40,"context_line":"    Column(\u0027created\u0027, DateTime()),"},{"line_number":41,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted_at\u0027, DateTime())"},{"line_number":43,"context_line":")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_b84a2ac3","line":42,"updated":"2014-08-16 14:20:49.000000000","message":"missing updated attribute","commit_id":"f8d3db1c4346bea89645352df7544ac29647b5bf"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"08ba1d75c12d47dc290ec86848e6d9e1a6f036b5","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    Column(\u0027value\u0027, String(256)),"},{"line_number":40,"context_line":"    Column(\u0027created\u0027, DateTime()),"},{"line_number":41,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted_at\u0027, DateTime())"},{"line_number":43,"context_line":")"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_53a10046","line":42,"in_reply_to":"7ac7a964_b84a2ac3","updated":"2014-08-19 21:53:02.000000000","message":"We would not require an updated attribute as there is no update being performed with respect to this table. The records are only created and deleted as of now.","commit_id":"f8d3db1c4346bea89645352df7544ac29647b5bf"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"512dc0309103f418b4e484635832e6de8afc7391","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    ),"},{"line_number":38,"context_line":"    Column(\u0027key\u0027, String(256), nullable\u003dFalse),"},{"line_number":39,"context_line":"    Column(\u0027value\u0027, String(256)),"},{"line_number":40,"context_line":"    Column(\u0027created\u0027, DateTime()),"},{"line_number":41,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted_at\u0027, DateTime())"},{"line_number":43,"context_line":")"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_7b511c35","line":40,"updated":"2014-08-21 20:01:28.000000000","message":"should be Nullable\u003dfalse?","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"fa98f980_3540a833","updated":"2014-09-04 04:29:40.000000000","message":"master branch has 032_clusters.py so this will need to move to 033.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"meta \u003d MetaData()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"datastore_version_metadata \u003d Table("},{"line_number":30,"context_line":"    \u0027datastore_version_metadata\u0027,"},{"line_number":31,"context_line":"    meta,"},{"line_number":32,"context_line":"    Column(\u0027id\u0027, String(36), primary_key\u003dTrue, nullable\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_d5a3dcfd","line":29,"updated":"2014-09-04 04:29:40.000000000","message":"Should there be a unique constraint on (datastore_version_id, key, value)? If you add such a constraint, then you\u0027ll need to \"re-use\" deleted rows like configuration does it: https://review.openstack.org/#/c/79850/34/trove/configuration/models.py,cm line 279.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        String(36),"},{"line_number":36,"context_line":"        ForeignKey(\u0027datastore_versions.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":37,"context_line":"    ),"},{"line_number":38,"context_line":"    Column(\u0027key\u0027, String(256), default\u003d\u0027flavor\u0027),"},{"line_number":39,"context_line":"    Column(\u0027value\u0027, String(256)),"},{"line_number":40,"context_line":"    Column(\u0027created\u0027, DateTime(), nullable\u003dFalse),"},{"line_number":41,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_156ac4b2","line":38,"updated":"2014-09-04 04:29:40.000000000","message":"Defaulting to some key seems weird here. I don\u0027t know why you\u0027d bother to create a general-purpose table and then default to its first use-case.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"}],"trove/db/sqlalchemy/migrate_repo/versions/034_add_datastore_version_metadata.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","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"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_7ccb651e","line":1,"updated":"2014-10-21 17:37:17.000000000","message":"Your copyright message is inconsistent with the new test case you added.","commit_id":"62e429349db03b415dbc09bae588f15490b9c7f0"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        String(36),"},{"line_number":37,"context_line":"        ForeignKey(\u0027datastore_versions.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":38,"context_line":"    ),"},{"line_number":39,"context_line":"    Column(\u0027key\u0027, String(128), nullable\u003dFalse),"},{"line_number":40,"context_line":"    Column(\u0027value\u0027, String(128)),"},{"line_number":41,"context_line":"    Column(\u0027created\u0027, DateTime(), nullable\u003dFalse),"},{"line_number":42,"context_line":"    Column(\u0027deleted\u0027, Boolean(), nullable\u003dFalse, default\u003dFalse),"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_3cc0fd29","line":39,"updated":"2014-10-21 17:37:17.000000000","message":"the spec seems to indicate 256.","commit_id":"62e429349db03b415dbc09bae588f15490b9c7f0"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        ForeignKey(\u0027datastore_versions.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":38,"context_line":"    ),"},{"line_number":39,"context_line":"    Column(\u0027key\u0027, String(128), nullable\u003dFalse),"},{"line_number":40,"context_line":"    Column(\u0027value\u0027, String(128)),"},{"line_number":41,"context_line":"    Column(\u0027created\u0027, DateTime(), 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":15,"id":"9aa7fdbe_9ce809b6","line":40,"updated":"2014-10-21 17:37:17.000000000","message":"the spec seems to indicate 256.","commit_id":"62e429349db03b415dbc09bae588f15490b9c7f0"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    Column(\u0027deleted_at\u0027, DateTime()),"},{"line_number":44,"context_line":"    Column(\u0027updated_at\u0027, DateTime()),"},{"line_number":45,"context_line":"    UniqueConstraint("},{"line_number":46,"context_line":"        \u0027datastore_version_id\u0027, \u0027key\u0027, \u0027value\u0027,"},{"line_number":47,"context_line":"        name\u003d\u0027UQ_datastore_version_metadata_datastore_version_id_key_value\u0027)"},{"line_number":48,"context_line":")"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_bc878dd6","line":46,"updated":"2014-10-21 17:37:17.000000000","message":"I\u0027m not sure why you want to have the value in the unique constraint here especially when you indicate that the value is nullable.","commit_id":"62e429349db03b415dbc09bae588f15490b9c7f0"}],"trove/db/sqlalchemy/migrate_repo/versions/035_add_datastore_version_metadata.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"84fa7a8b7252924f29138d4d4b018cff475ffef7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    Column(\u0027updated_at\u0027, DateTime()),"},{"line_number":45,"context_line":"    UniqueConstraint("},{"line_number":46,"context_line":"        \u0027datastore_version_id\u0027, \u0027key\u0027, \u0027value\u0027,"},{"line_number":47,"context_line":"        name\u003d\u0027UQ_datastore_version_metadata_datastore_version_id_key_value\u0027)"},{"line_number":48,"context_line":")"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_f94e7937","line":47,"updated":"2014-12-01 10:01:13.000000000","message":"why should it be so long? can be simplified to \"datastore_version_id\" that\u0027s all.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    Column(\u0027updated_at\u0027, DateTime()),"},{"line_number":45,"context_line":"    UniqueConstraint("},{"line_number":46,"context_line":"        \u0027datastore_version_id\u0027, \u0027key\u0027, \u0027value\u0027,"},{"line_number":47,"context_line":"        name\u003d\u0027UQ_datastore_version_metadata_datastore_version_id_key_value\u0027)"},{"line_number":48,"context_line":")"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_f419dbd1","line":47,"in_reply_to":"5a890539_f94e7937","updated":"2014-12-03 23:24:56.000000000","message":"Just datastore_version_id would be confusing. The unique constraint implies uniqueness of the following combination of attributes - (datastore_version_id, key, value)","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"dd42a60a1a0fdb98aae68ccdb77e6244a9121ddc","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def upgrade(migrate_engine):"},{"line_number":52,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":53,"context_line":"    # Load the datastore_versions table into the session."},{"line_number":54,"context_line":"    Table(\u0027datastore_versions\u0027, meta, autoload\u003dTrue)"},{"line_number":55,"context_line":"    create_tables([datastore_version_metadata])"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_18b2ff93","line":53,"updated":"2014-12-12 02:37:49.000000000","message":"This comment adds little!","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f1e31e0f2aa6a1b803749321835cf5432d575a2b","unresolved":false,"context_lines":[{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def upgrade(migrate_engine):"},{"line_number":52,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":53,"context_line":"    # Load the datastore_versions table into the session."},{"line_number":54,"context_line":"    Table(\u0027datastore_versions\u0027, meta, autoload\u003dTrue)"},{"line_number":55,"context_line":"    create_tables([datastore_version_metadata])"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_2d8598ce","line":53,"in_reply_to":"3a961159_18b2ff93","updated":"2014-12-23 11:46:52.000000000","message":"+1","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"}],"trove/db/sqlalchemy/migrate_repo/versions/036_add_datastore_version_metadata.py":[{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"33213fc71e7dd6cf988f1dc115e11bca4dbd38a8","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"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_0253296c","line":1,"updated":"2015-05-22 17:20:33.000000000","message":"2015","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c00ddda61e20bd2afb8b5889b508b74ea0686db1","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        ForeignKey(\u0027datastore_versions.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":38,"context_line":"    ),"},{"line_number":39,"context_line":"    Column(\u0027key\u0027, String(128), nullable\u003dFalse),"},{"line_number":40,"context_line":"    Column(\u0027value\u0027, String(128)),"},{"line_number":41,"context_line":"    Column(\u0027created\u0027, DateTime(), 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":33,"id":"7a016987_91969b3d","line":40,"updated":"2015-05-19 13:59:41.000000000","message":"metadata can be larger than 128 bytes. Strongly recommended to use Text instead","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"632bc321a4b0ad87f904bd61bbf9bb8e78b2011c","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        ForeignKey(\u0027datastore_versions.id\u0027, ondelete\u003d\u0027CASCADE\u0027),"},{"line_number":38,"context_line":"    ),"},{"line_number":39,"context_line":"    Column(\u0027key\u0027, String(128), nullable\u003dFalse),"},{"line_number":40,"context_line":"    Column(\u0027value\u0027, String(128)),"},{"line_number":41,"context_line":"    Column(\u0027created\u0027, DateTime(), 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":33,"id":"7a016987_5ef6e7f9","line":40,"in_reply_to":"7a016987_91969b3d","updated":"2015-05-19 21:26:09.000000000","message":"Thanks for the review.\nCurrently this field stores the ID of the flavor, so I am not able to think of a situation where this will be larger than 128. Can you give some example where this filed in the current table would be used to store larger values, specifically that might require a text datatype.","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"33213fc71e7dd6cf988f1dc115e11bca4dbd38a8","unresolved":false,"context_lines":[{"line_number":51,"context_line":"def upgrade(migrate_engine):"},{"line_number":52,"context_line":"    meta.bind \u003d migrate_engine"},{"line_number":53,"context_line":"    # Load the datastore_versions table into the session."},{"line_number":54,"context_line":"    # creates datastore_version_metadata table"},{"line_number":55,"context_line":"    Table(\u0027datastore_versions\u0027, meta, autoload\u003dTrue)"},{"line_number":56,"context_line":"    create_tables([datastore_version_metadata])"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_c252b134","line":54,"updated":"2015-05-22 17:20:33.000000000","message":"s/creates/create","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","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"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_51467ec0","line":1,"updated":"2015-06-13 02:21:47.000000000","message":"it is 2015 ;)","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","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"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_177183e0","line":1,"in_reply_to":"fa32b979_51467ec0","updated":"2015-06-16 22:10:31.000000000","message":"Done","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"}],"trove/flavor/models.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from trove.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":"db_api \u003d get_db_api()"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_92bf905f","line":30,"updated":"2014-07-28 12:50:47.000000000","message":"not used","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from trove.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":"db_api \u003d get_db_api()"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_40ede9ef","line":30,"in_reply_to":"baada198_92bf905f","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from trove.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":"db_api \u003d get_db_api()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d2b5887d","line":31,"updated":"2014-07-28 12:50:47.000000000","message":"not used","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from trove.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":"db_api \u003d get_db_api()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_60eaedd9","line":31,"in_reply_to":"baada198_d2b5887d","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from trove.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":"db_api \u003d get_db_api()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class Flavor(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_32a6c454","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":6},"updated":"2014-07-28 12:50:47.000000000","message":"not used","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from trove.openstack.common import log as logging"},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":"CONF \u003d cfg.CONF"},{"line_number":32,"context_line":"db_api \u003d get_db_api()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class Flavor(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_80b621fb","line":32,"in_reply_to":"baada198_32a6c454","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Generate a filtered list of nova flavors"},{"line_number":98,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":99,"context_line":"        nova_flavors \u003d (f for f in nova_flavors if f.id in bound_flavors)"},{"line_number":100,"context_line":"        self.flavors \u003d tuple(Flavor(flavor\u003ditem) for item in nova_flavors)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def __iter__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_724afc83","line":99,"updated":"2014-07-28 12:50:47.000000000","message":"this is a tuple, not a list, but should be a list.\nnova_flavors \u003d [f for f in nova_flavors if f.id in bound_flavors]","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7850,"name":"Kevin Conway","email":"kevinjacobconway@gmail.com","username":"kevinconway"},"change_message_id":"e8bf9cef54c2f274f85416012bf3f730e5689cdd","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Generate a filtered list of nova flavors"},{"line_number":98,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":99,"context_line":"        nova_flavors \u003d (f for f in nova_flavors if f.id in bound_flavors)"},{"line_number":100,"context_line":"        self.flavors \u003d tuple(Flavor(flavor\u003ditem) for item in nova_flavors)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def __iter__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_02916799","line":99,"in_reply_to":"baada198_724afc83","updated":"2014-07-28 18:04:11.000000000","message":"This is a generator expression. Not a tuple. It should be a generator expression and not a list.","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        # Generate a filtered list of nova flavors"},{"line_number":98,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":99,"context_line":"        nova_flavors \u003d (f for f in nova_flavors if f.id in bound_flavors)"},{"line_number":100,"context_line":"        self.flavors \u003d tuple(Flavor(flavor\u003ditem) for item in nova_flavors)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def __iter__(self):"},{"line_number":103,"context_line":"        for item in self.flavors:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_1259c05a","line":100,"updated":"2014-07-28 12:50:47.000000000","message":"what\u0027s the purpose to use tuple ?\n\nAnd even more, tuple() method slower than ()","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7850,"name":"Kevin Conway","email":"kevinjacobconway@gmail.com","username":"kevinconway"},"change_message_id":"e8bf9cef54c2f274f85416012bf3f730e5689cdd","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        # Generate a filtered list of nova flavors"},{"line_number":98,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":99,"context_line":"        nova_flavors \u003d (f for f in nova_flavors if f.id in bound_flavors)"},{"line_number":100,"context_line":"        self.flavors \u003d tuple(Flavor(flavor\u003ditem) for item in nova_flavors)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def __iter__(self):"},{"line_number":103,"context_line":"        for item in self.flavors:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_f87182de","line":100,"in_reply_to":"baada198_1259c05a","updated":"2014-07-28 18:04:11.000000000","message":"This is how you evaluate a generator expression and store the results in a tuple.\n\nThe benefit of using multiple generator expressions and simply evaluating them at the end is that it, generally, uses less memory than multiple list comprehensions.\n\nEach list comprehension statement must allocate an entire list of results. Generator expressions allow us to pass data elements one at a time through the pipeline. You can compound as many generator expressions as you like but evaluating them will still only consume as much memory as it takes to process a single element through each expression.\n\nAs far as tuple vs list: each has their own benefits and use. Most benchmarks I\u0027ve seen and performed show tuples to use slightly less memory than lists and are faster for iterating over. Lists tend to have faster lookups if using the \u0027[]\u0027 notation. Since we only ever iterate over the flavors, we never append or pop, and we never access elements by offset there is no reason to use a list over a tuple.","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"2eb33ecc5ef9b432dedef029b654553c105949f5","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def __init__(self, context, datastore_version_id\u003dNone):"},{"line_number":76,"context_line":"        self.datastore_version_id \u003d ("},{"line_number":77,"context_line":"            datastore_version_id or get_datastore_version()[1].id"},{"line_number":78,"context_line":"        )"},{"line_number":79,"context_line":"        # Generate list of flavor ID\u0027s attached to the datastore version."},{"line_number":80,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7ac7a964_18179ea4","line":77,"updated":"2014-08-16 14:20:49.000000000","message":"We should find another way to get datastore version, since get_datastore_version method relays on:\n\n        datastore \u003d type or CONF.default_datastore\n\nAnd you\u0027re doing the same, you\u0027ve been expecting that Trove-API was launched with the non-defaul datastore.","commit_id":"f8d3db1c4346bea89645352df7544ac29647b5bf"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"08ba1d75c12d47dc290ec86848e6d9e1a6f036b5","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def __init__(self, context, datastore_version_id\u003dNone):"},{"line_number":76,"context_line":"        self.datastore_version_id \u003d ("},{"line_number":77,"context_line":"            datastore_version_id or get_datastore_version()[1].id"},{"line_number":78,"context_line":"        )"},{"line_number":79,"context_line":"        # Generate list of flavor ID\u0027s attached to the datastore version."},{"line_number":80,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_b4923a9d","line":77,"in_reply_to":"7ac7a964_18179ea4","updated":"2014-08-19 21:53:02.000000000","message":"the get_datastore_version() call gets us the default datastore version (CONF.default_datastore). We make this call when no datastore_version_id is provided during a flavor-list api call, in which case we just retrieve the flavor list for the default datastore id.","commit_id":"f8d3db1c4346bea89645352df7544ac29647b5bf"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a2997a8583d9b3cfa18a1479ec0cbcba68d1f531","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def __init__(self, context, datastore_version_id\u003dNone):"},{"line_number":76,"context_line":"        self.datastore_version_id \u003d ("},{"line_number":77,"context_line":"            datastore_version_id or get_datastore_version()[1].id"},{"line_number":78,"context_line":"        )"},{"line_number":79,"context_line":"        # Generate list of flavor ID\u0027s attached to the datastore version."},{"line_number":80,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_18085727","line":77,"updated":"2014-08-20 19:55:06.000000000","message":"What if configuration file has no default datastore? We need to find out another way to implement given workflow. You should not relay on default datastore.","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"f18c8cfab528e045234e40c2c7fa17322641088a","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def __init__(self, context, datastore_version_id\u003dNone):"},{"line_number":76,"context_line":"        self.datastore_version_id \u003d ("},{"line_number":77,"context_line":"            datastore_version_id or get_datastore_version()[1].id"},{"line_number":78,"context_line":"        )"},{"line_number":79,"context_line":"        # Generate list of flavor ID\u0027s attached to the datastore version."},{"line_number":80,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_913fb986","line":77,"in_reply_to":"1abeadc6_18085727","updated":"2014-08-21 20:37:24.000000000","message":"Will there ever be a case where the default datastore is not specified in the config? The same call for datastore version has been used in a couple of other places.\nEg: https://github.com/openstack/trove/blob/master/trove/instance/service.py#L182\nHere, if there is no datastore specified in the body during create, it would relay it the config.","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"06c0bd7ee7f31c5ffd8666b1acfe89c0f77bfb7f","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"        # Generate a filtered list of nova flavors"},{"line_number":90,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":91,"context_line":"        nova_flavors \u003d (f for f in nova_flavors if f.id in bound_flavors)"},{"line_number":92,"context_line":"        self.flavors \u003d tuple(Flavor(flavor\u003ditem) for item in nova_flavors)"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def __iter__(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_bd0b487c","line":91,"updated":"2014-08-25 16:54:15.000000000","message":"As a rule of thumb, avoid reusing variables like this. Just make a new one, such as \"ds_nova_flavors\"","commit_id":"40e5d8c965830f4bee737e6cc51da2b7315c307d"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        if datastore_version_id:"},{"line_number":78,"context_line":"            #make sure it is a valid datastore version id"},{"line_number":79,"context_line":"            dsversion \u003d DBDatastoreVersion.find_by(id\u003ddatastore_version_id)"},{"line_number":80,"context_line":"            if dsversion is None:"},{"line_number":81,"context_line":"                raise exception.DatastoreVersionNotFound("},{"line_number":82,"context_line":"                    version\u003ddatastore_version_id)"},{"line_number":83,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_551e0cbc","line":80,"updated":"2014-09-04 04:29:40.000000000","message":"Does find_by raise ModelNotFoundError? If so, I don\u0027t think dsversion will ever be None.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":81,"context_line":"                raise exception.DatastoreVersionNotFound("},{"line_number":82,"context_line":"                    version\u003ddatastore_version_id)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        self.datastore_version_id \u003d ("},{"line_number":85,"context_line":"            datastore_version_id or get_datastore_version()[1].id"},{"line_number":86,"context_line":"        )"},{"line_number":87,"context_line":"        # Generate list of flavor ID\u0027s attached to the datastore version."}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_c07a3876","line":84,"updated":"2014-09-04 04:29:40.000000000","message":"A comment stating that this gets the default datastore version id would be helpful.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        )"},{"line_number":87,"context_line":"        # Generate list of flavor ID\u0027s attached to the datastore version."},{"line_number":88,"context_line":"        try:"},{"line_number":89,"context_line":"            bound_flavors \u003d DBDatastoreVersionMetadata.find_all("},{"line_number":90,"context_line":"                datastore_version_id\u003dself.datastore_version_id,"},{"line_number":91,"context_line":"                deleted\u003dFalse"},{"line_number":92,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_80011007","line":89,"updated":"2014-09-04 04:29:40.000000000","message":"This query doesn\u0027t restrict to key\u003d\"flavor\" only.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def __init__(self, context, datastore_version_id\u003dNone):"},{"line_number":75,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":76,"context_line":"        if datastore_version_id is not None:"},{"line_number":77,"context_line":"            self.datastore_version_id \u003d datastore_version_id"},{"line_number":78,"context_line":"            # Generate list of flavor ID\u0027s attached to the datastore version."},{"line_number":79,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_1bfdfc3b","line":76,"updated":"2014-09-09 16:18:41.000000000","message":"Why the \"is not None\" added?","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"84fa7a8b7252924f29138d4d4b018cff475ffef7","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from trove.datastore.models import DBDatastore"},{"line_number":26,"context_line":"from trove.openstack.common import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class Flavor(object):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_59578dca","line":28,"updated":"2014-12-01 10:01:13.000000000","message":"is not used anywhere","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def __init__(self, context, datastore_id\u003dNone, datastore_version_id\u003dNone):"},{"line_number":80,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":81,"context_line":"        if datastore_id and datastore_version_id:"},{"line_number":82,"context_line":"            \"\"\""},{"line_number":83,"context_line":"            All nova flavors are permitted for a datastore_version unless"},{"line_number":84,"context_line":"            one or more entries are found in datastore_version_metadata,"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_e4b369e7","line":81,"updated":"2014-11-27 09:48:28.000000000","message":"This logic should be rewritten, because you can get datastore ID by datastore version, but it doesn\u0027t work in reverse way.\nYou need to check datastore_version_id and then process datastore and flavors.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def __init__(self, context, datastore_id\u003dNone, datastore_version_id\u003dNone):"},{"line_number":80,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":81,"context_line":"        if datastore_id and datastore_version_id:"},{"line_number":82,"context_line":"            \"\"\""},{"line_number":83,"context_line":"            All nova flavors are permitted for a datastore_version unless"},{"line_number":84,"context_line":"            one or more entries are found in datastore_version_metadata,"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_17058979","line":81,"in_reply_to":"5a890539_e4b369e7","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            # ensure that the datastore id is valid"},{"line_number":88,"context_line":"            try:"},{"line_number":89,"context_line":"                datastore \u003d DBDatastore.find_by(id\u003ddatastore_id)"},{"line_number":90,"context_line":"                self.datastore_id \u003d datastore.id"},{"line_number":91,"context_line":"            except exception.ModelNotFoundError:"},{"line_number":92,"context_line":"                raise exception.DatastoreNotFound("},{"line_number":93,"context_line":"                    datastore\u003ddatastore_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_c424ad62","line":90,"updated":"2014-11-27 09:48:28.000000000","message":"why can\u0027t just use datastore.id?","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                raise exception.DatastoreNotFound("},{"line_number":93,"context_line":"                    datastore\u003ddatastore_id)"},{"line_number":94,"context_line":"            # ensure that the datastore version id is valid"},{"line_number":95,"context_line":"            self.datastore_version_id \u003d datastore_version_id"},{"line_number":96,"context_line":"            try:"},{"line_number":97,"context_line":"                DBDatastoreVersion.find_by(id\u003dself.datastore_version_id)"},{"line_number":98,"context_line":"            except exception.ModelNotFoundError:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_04ccf589","line":95,"updated":"2014-11-27 09:48:28.000000000","message":"same.\n\n\nDatastore and Version ID are used only in __init__, and only, so, i don\u0027t see a reason for allocating another instance object variables.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":92,"context_line":"                raise exception.DatastoreNotFound("},{"line_number":93,"context_line":"                    datastore\u003ddatastore_id)"},{"line_number":94,"context_line":"            # ensure that the datastore version id is valid"},{"line_number":95,"context_line":"            self.datastore_version_id \u003d datastore_version_id"},{"line_number":96,"context_line":"            try:"},{"line_number":97,"context_line":"                DBDatastoreVersion.find_by(id\u003dself.datastore_version_id)"},{"line_number":98,"context_line":"            except exception.ModelNotFoundError:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_d7d781ec","line":95,"in_reply_to":"5a890539_04ccf589","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            # Return all nova flavors if datastore \u0026 version id not specified."},{"line_number":124,"context_line":"            self.flavors \u003d tuple(Flavor(flavor\u003ditem) for item in nova_flavors)"},{"line_number":125,"context_line":"        else:"},{"line_number":126,"context_line":"            msg \u003d _(\"Specify both the datastore_id and datastore_version_id\")"},{"line_number":127,"context_line":"            raise exception.BadRequest(msg)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def __iter__(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_44019dae","line":126,"updated":"2014-11-27 09:48:28.000000000","message":"missing period","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":123,"context_line":"            # Return all nova flavors if datastore \u0026 version id not specified."},{"line_number":124,"context_line":"            self.flavors \u003d tuple(Flavor(flavor\u003ditem) for item in nova_flavors)"},{"line_number":125,"context_line":"        else:"},{"line_number":126,"context_line":"            msg \u003d _(\"Specify both the datastore_id and datastore_version_id\")"},{"line_number":127,"context_line":"            raise exception.BadRequest(msg)"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    def __iter__(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_f7d47dea","line":126,"in_reply_to":"5a890539_44019dae","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"9ac5fe53345d86a84d31d6f54b21b36677b3b2aa","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class Flavors(NovaRemoteModelBase):"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, context, datastore_id\u003dNone, datastore_version_id\u003dNone):"},{"line_number":74,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":75,"context_line":"        self.flavors \u003d [Flavor(flavor\u003ditem) for item in nova_flavors]"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_00b6ab3e","line":73,"updated":"2014-12-05 11:48:54.000000000","message":"Both newly added arguments unused in the scope of that method.","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e31a8555406f01bf110cd74c3f16bd120b558b8f","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"class Flavors(NovaRemoteModelBase):"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def __init__(self, context, datastore_id\u003dNone, datastore_version_id\u003dNone):"},{"line_number":74,"context_line":"        nova_flavors \u003d create_nova_client(context).flavors.list()"},{"line_number":75,"context_line":"        self.flavors \u003d [Flavor(flavor\u003ditem) for item in nova_flavors]"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_9bea0e73","line":73,"in_reply_to":"5a890539_00b6ab3e","updated":"2014-12-05 12:24:52.000000000","message":"+1","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"}],"trove/flavor/service.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"a1a496cbafb179fc987f64fe162cf72af21485df","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from trove.flavor import views"},{"line_number":21,"context_line":"from trove.openstack.common import log as logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class FlavorController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9234f0fb","line":23,"updated":"2014-07-28 12:50:47.000000000","message":"not used","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"193f9b394bf645ec5a9dd497d88f8da203665861","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from trove.flavor import views"},{"line_number":21,"context_line":"from trove.openstack.common import log as logging"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class FlavorController(wsgi.Controller):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_e027dd61","line":23,"in_reply_to":"baada198_9234f0fb","updated":"2014-07-30 01:36:31.000000000","message":"Done","commit_id":"dc25c3ffc298ceda847f8c062feccd308052ec1e"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"90cc551805d61832ad710c76c3c74d3bf9b78fce","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        return wsgi.Result(views.FlavorView(flavor, req).data(), 200)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def index(self, req, tenant_id, datastore_version_id\u003dNone):"},{"line_number":35,"context_line":"        \"\"\"Return all flavors.\"\"\""},{"line_number":36,"context_line":"        context \u003d req.environ[wsgi.CONTEXT_KEY]"},{"line_number":37,"context_line":"        flavors \u003d models.Flavors("},{"line_number":38,"context_line":"            context\u003dcontext,"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a8c0949_f7a3e79b","line":35,"updated":"2014-11-04 16:58:56.000000000","message":"Still returns all flavors?.","commit_id":"44d83da1e61307846aefc03e03d02c3ec4b565c6"}],"trove/instance/models.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"291bdff40c82a6d41def7f2239498745e937a77e","unresolved":false,"context_lines":[{"line_number":624,"context_line":"        except nova_exceptions.NotFound:"},{"line_number":625,"context_line":"            raise exception.FlavorNotFound(uuid\u003dflavor_id)"},{"line_number":626,"context_line":""},{"line_number":627,"context_line":"        # To ensure that the flavor is available for the datastore version"},{"line_number":628,"context_line":"        bound_flavors \u003d DBDatastoreVersionMetadata.find_all("},{"line_number":629,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":630,"context_line":"            key\u003d\u0027flavor\u0027, deleted\u003dFalse"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_62e4433c","line":627,"updated":"2014-08-27 22:14:05.000000000","message":"Can you move this check to line 618, just before the nova_client is called.?That way, if the flavor is not valid, nova is not called.","commit_id":"ee8e2b95e9f939dc254bf078d23765937d3670bb"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":636,"context_line":""},{"line_number":637,"context_line":"        # To ensure that the flavor is available for the datastore version"},{"line_number":638,"context_line":"        bound_flavors \u003d DBDatastoreVersionMetadata.find_all("},{"line_number":639,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":640,"context_line":"            deleted\u003dFalse"},{"line_number":641,"context_line":"        )"},{"line_number":642,"context_line":"        bound_flavors \u003d tuple(f.value for f in bound_flavors)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_00dfe069","line":639,"updated":"2014-09-04 04:29:40.000000000","message":"Again, I disagree that key\u003d\"flavor\" should be the default on the table definition. There should be no default. The strange thing here is that despite the presence of a DatastoreVersionFlavor class (which I disagree with), it\u0027s not used here to lookup flavors (assuming a lookup method was added there).","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","unresolved":false,"context_lines":[{"line_number":41,"context_line":"from trove.taskmanager import api as task_api"},{"line_number":42,"context_line":"from trove.openstack.common import log as logging"},{"line_number":43,"context_line":"from trove.openstack.common.gettextutils import _"},{"line_number":44,"context_line":"from trove.datastore.models import DBDatastoreVersionMetadata"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_1c07b91d","line":44,"updated":"2014-10-21 17:37:17.000000000","message":"minor thing but should this be sorted differently?","commit_id":"62e429349db03b415dbc09bae588f15490b9c7f0"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"576d24e26c3341d41d6e60aab55a2fff2a89f393","unresolved":false,"context_lines":[{"line_number":671,"context_line":"        bound_flavors \u003d tuple(f.value for f in bound_flavors)"},{"line_number":672,"context_line":"        if flavor_id not in bound_flavors:"},{"line_number":673,"context_line":"            raise exception.DatastoreFlavorAssociationNotFound("},{"line_number":674,"context_line":"                version_id\u003ddatastore_version.id, flavor_id\u003dflavor_id)"},{"line_number":675,"context_line":""},{"line_number":676,"context_line":"        datastore_cfg \u003d CONF.get(datastore_version.manager)"},{"line_number":677,"context_line":"        client \u003d create_nova_client(context)"}],"source_content_type":"text/x-python","patch_set":16,"id":"7a8c0949_49599bfd","line":674,"updated":"2014-10-31 20:48:16.000000000","message":"Should we default to accepting all flavors if no metadata is set up?  Otherwise all existing installs will immediately break ...","commit_id":"44d83da1e61307846aefc03e03d02c3ec4b565c6"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"9ac5fe53345d86a84d31d6f54b21b36677b3b2aa","unresolved":false,"context_lines":[{"line_number":675,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":676,"context_line":"            key\u003d\u0027flavor\u0027, deleted\u003dFalse"},{"line_number":677,"context_line":"        )"},{"line_number":678,"context_line":"        if (bound_flavors.count() !\u003d 0):"},{"line_number":679,"context_line":"            valid_flavors \u003d tuple(f.value for f in bound_flavors)"},{"line_number":680,"context_line":"            if flavor_id not in valid_flavors:"},{"line_number":681,"context_line":"                raise exception.DatastoreFlavorAssociationNotFound("}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_602e8f44","line":678,"updated":"2014-12-05 11:48:54.000000000","message":"Ignore my comment if count can be negative, otherwise I would prefer to see:\n\nbound_flavors.count() \u003e 0","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"d5604a6f374524c1066a063afacabf068cc59f57","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"from __builtin__ import setattr"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\"Model classes that form the core of instances functionality.\"\"\""},{"line_number":19,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":28,"id":"1aca2d91_1f72b0ad","line":16,"updated":"2015-05-08 17:40:32.000000000","message":"can we push this import in the block with other imports, this looks like an alone entity","commit_id":"262fa7e400488edd87eed5d9c08872356fcdb493"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"33213fc71e7dd6cf988f1dc115e11bca4dbd38a8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from __builtin__ import setattr"},{"line_number":18,"context_line":"\"\"\"Model classes that form the core of instances functionality.\"\"\""},{"line_number":19,"context_line":"import re"},{"line_number":20,"context_line":"from datetime import datetime"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_42ea4175","line":17,"updated":"2015-05-22 17:20:33.000000000","message":"Since you are updating this can we get this import with other imports","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":671,"context_line":"               availability_zone\u003dNone, nics\u003dNone, configuration_id\u003dNone,"},{"line_number":672,"context_line":"               slave_of_id\u003dNone, cluster_config\u003dNone, replica_count\u003dNone):"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"        # All nova flavors are permitted for a datastore-version unless one"},{"line_number":675,"context_line":"        # or more entries are found in datastore_version_metadata,"},{"line_number":676,"context_line":"        # in which case only those are permitted."},{"line_number":677,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_71262218","line":674,"updated":"2015-06-13 02:21:47.000000000","message":"the code is pretty clear about what it is doing, the comments seem somewhat out of place given that most of the code has no comments.","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":676,"context_line":"        # in which case only those are permitted."},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        # if one or more entries found, only those flavors permitted."},{"line_number":679,"context_line":"        bound_flavors \u003d DBDatastoreVersionMetadata.find_all("},{"line_number":680,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":681,"context_line":"            key\u003d\u0027flavor\u0027, deleted\u003dFalse"},{"line_number":682,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_d187eed5","line":679,"updated":"2015-06-13 02:21:47.000000000","message":"This seems like something that can be eminently verified in the Trove API service. Instead, we get it all the way here in Trove Task Manager which seems like a bad thing.","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","unresolved":false,"context_lines":[{"line_number":676,"context_line":"        # in which case only those are permitted."},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"        # if one or more entries found, only those flavors permitted."},{"line_number":679,"context_line":"        bound_flavors \u003d DBDatastoreVersionMetadata.find_all("},{"line_number":680,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":681,"context_line":"            key\u003d\u0027flavor\u0027, deleted\u003dFalse"},{"line_number":682,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa32b979_e1f45d88","line":679,"in_reply_to":"fa32b979_d187eed5","updated":"2015-06-16 22:10:31.000000000","message":"I am sorry if I didn\u0027t understand it correctly.\nBut do you mean that we should move this check to trove api?\n\ntry:\n       flavor \u003d client.flavors.get(flavor_id)\nexcept nova_exceptions.NotFound:\n       raise exception.FlavorNotFound(uuid\u003dflavor_id)\nIf yes, can we file a separate ticket for that?","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"}],"trove/instance/service.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"82f6b5c5bd8b35de9c11bef70f4f59849cfe7b9f","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        flavor_ref \u003d body[\u0027instance\u0027][\u0027flavorRef\u0027]"},{"line_number":187,"context_line":"        flavor_id \u003d utils.get_id_from_href(flavor_ref)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        # To ensure that the flavor is available for the datastore version"},{"line_number":190,"context_line":"        bound_flavors \u003d DBDatastoreVersionMetadata.find_all("},{"line_number":191,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":192,"context_line":"            key\u003d\u0027flavor\u0027, deleted\u003dFalse"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_368b3b69","line":189,"updated":"2014-08-21 20:05:12.000000000","message":"I think this code requires that there is a flavor association for datastore versions. I understand that the expected behavior is that if bound_flavors is None (i.e. no bindings) then all flavors should be allowed.\n\nI don\u0027t think this code implements that, am I correct?","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a63f5fdce40351b65a863eb8f67ef4e272607df0","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        flavor_ref \u003d body[\u0027instance\u0027][\u0027flavorRef\u0027]"},{"line_number":187,"context_line":"        flavor_id \u003d utils.get_id_from_href(flavor_ref)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        # To ensure that the flavor is available for the datastore version"},{"line_number":190,"context_line":"        bound_flavors \u003d DBDatastoreVersionMetadata.find_all("},{"line_number":191,"context_line":"            datastore_version_id\u003ddatastore_version.id,"},{"line_number":192,"context_line":"            key\u003d\u0027flavor\u0027, deleted\u003dFalse"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_16471fbd","line":189,"in_reply_to":"1abeadc6_368b3b69","updated":"2014-08-21 20:28:04.000000000","message":"The expected behavior is to check if the flavor that is to be used for the instance, has a binding with the datastore_version.id being used for the instance. It throws an exception if not. The code tries to check the same.","commit_id":"9b262a7dc927bfb6c30dd1f3c8ac705eea2402af"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"06c0bd7ee7f31c5ffd8666b1acfe89c0f77bfb7f","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        bound_flavors \u003d tuple(f.value for f in bound_flavors)"},{"line_number":195,"context_line":"        if flavor_id not in bound_flavors:"},{"line_number":196,"context_line":"            raise exception.DatastoreFlavorAssociationNotFound("},{"line_number":197,"context_line":"                version_id\u003ddatastore_version.id, flavor_id\u003dflavor_id)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        configuration \u003d self._configuration_parse(context, body)"},{"line_number":200,"context_line":"        databases \u003d populate_validated_databases("}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_7d5ff075","line":197,"updated":"2014-08-25 16:54:15.000000000","message":"This needs to be moved to trove/instance/models.py.","commit_id":"40e5d8c965830f4bee737e6cc51da2b7315c307d"}],"trove/tests/api/flavors.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"291bdff40c82a6d41def7f2239498745e937a77e","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        assert_raises(exceptions.NotFound,"},{"line_number":165,"context_line":"                      self.rd_client.flavors.get, \"detail\")"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    @test"},{"line_number":168,"context_line":"    def test_flavor_list_by_versionid(self):"},{"line_number":169,"context_line":"        ds_version \u003d self.rd_client.datastores.get("},{"line_number":170,"context_line":"            test_config.dbaas_datastore)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1abeadc6_62c5235b","line":167,"updated":"2014-08-27 22:14:05.000000000","message":"One test that i would like to see is when we have flavors associated with a datastore versions and flavors that are not. So that when we get a list of flavors, it only shows the flavors are associated with the datastore version.","commit_id":"ee8e2b95e9f939dc254bf078d23765937d3670bb"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":167,"context_line":"                      self.rd_client.flavors.get, \"detail\")"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @test"},{"line_number":170,"context_line":"    def test_flavor_list_by_versionid(self):"},{"line_number":171,"context_line":"        ds_version \u003d self.rd_client.datastores.get("},{"line_number":172,"context_line":"            test_config.dbaas_datastore)"},{"line_number":173,"context_line":"        dbaas_flavors \u003d self.rd_client.flavors.list_by_versionid("}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_60ec2cf4","line":170,"updated":"2014-09-04 04:29:40.000000000","message":"I\u0027d recommend \"versionid\" to be \"datastore_version_id\".","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":225,"context_line":"            assert_false(found_flavor, msg)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"            # add the association back in for other tests"},{"line_number":228,"context_line":"            datastoreflavormapping \u003d DBDatastoreVersionMetadata.create("},{"line_number":229,"context_line":"                datastore_version_id\u003dds_version.default_version, value\u003d\u00271\u0027)"},{"line_number":230,"context_line":"            datastoreflavormapping.save()"},{"line_number":231,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_e09c9c5f","line":228,"updated":"2014-09-04 04:29:40.000000000","message":"Variable naming should use underscores.","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"fa98f980_f6404d37","updated":"2014-09-09 16:18:41.000000000","message":"versionid is used in a lot of places. Consider datastore_version_id.","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                   deleted_flavor)"},{"line_number":238,"context_line":"            assert_false(found_flavor, msg)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"            # add the association back in for other tests"},{"line_number":241,"context_line":"            dsmodels.DatastoreVersionMetadata.datastore_flavor_add("},{"line_number":242,"context_line":"                self.ds_version, deleted_flavor"},{"line_number":243,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_bb123060","line":240,"updated":"2014-09-09 16:18:41.000000000","message":"Does that mean this should be in a tearDown or a finally clause?","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            Requirements(is_admin\u003dFalse, services\u003d[\"trove\"]))"},{"line_number":255,"context_line":"        self.rd_client \u003d create_dbaas_client(rd_user)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        self.data_store \u003d self.rd_client.datastores.get("},{"line_number":258,"context_line":"            test_config.dbaas_datastore)"},{"line_number":259,"context_line":"        self.name1 \u003d \"test_instance1\""},{"line_number":260,"context_line":"        self.name2 \u003d \"test_instance2\""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_76261dbc","line":257,"updated":"2014-09-09 16:18:41.000000000","message":"data_store has always been one word (i.e. I suggest datastore).","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            name\u003dself.name1, flavor_id\u003d\u00271\u0027, volume\u003dself.volume,"},{"line_number":214,"context_line":"            datastore\u003dself.datastore.id)"},{"line_number":215,"context_line":"        self.instance_id \u003d result.id"},{"line_number":216,"context_line":"        assert_equal(200, self.rd_client.last_http_code)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    @test"},{"line_number":219,"context_line":"    def test_create_instance_with_invalid_flavor_association(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_24cc9161","line":216,"updated":"2014-11-27 09:48:28.000000000","message":"you have to poll for instance status to become ACTIVE and then delete it, because your test should not left unused resources.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            name\u003dself.name1, flavor_id\u003d\u00271\u0027, volume\u003dself.volume,"},{"line_number":214,"context_line":"            datastore\u003dself.datastore.id)"},{"line_number":215,"context_line":"        self.instance_id \u003d result.id"},{"line_number":216,"context_line":"        assert_equal(200, self.rd_client.last_http_code)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    @test"},{"line_number":219,"context_line":"    def test_create_instance_with_invalid_flavor_association(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_97c6a747","line":216,"in_reply_to":"5a890539_24cc9161","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        self.instance_id \u003d result.id"},{"line_number":216,"context_line":"        assert_equal(200, self.rd_client.last_http_code)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    @test"},{"line_number":219,"context_line":"    def test_create_instance_with_invalid_flavor_association(self):"},{"line_number":220,"context_line":"        databases \u003d []"},{"line_number":221,"context_line":"        assert_raises(exceptions.BadRequest,"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_04f6b590","line":218,"updated":"2014-11-27 09:48:28.000000000","message":"please use @test(runs_after\u003d[...]) to properly order tests.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        self.instance_id \u003d result.id"},{"line_number":216,"context_line":"        assert_equal(200, self.rd_client.last_http_code)"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    @test"},{"line_number":219,"context_line":"    def test_create_instance_with_invalid_flavor_association(self):"},{"line_number":220,"context_line":"        databases \u003d []"},{"line_number":221,"context_line":"        assert_raises(exceptions.BadRequest,"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_d7bcafb7","line":218,"in_reply_to":"5a890539_04f6b590","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                      self.volume, databases, datastore\u003dself.datastore.id)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def tearDown(self):"},{"line_number":226,"context_line":"        self.rd_client.instances.delete(self.instance_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_a47c01ed","line":226,"updated":"2014-11-27 09:48:28.000000000","message":"what if instance is still in BUILD state? your tearDown will fail, even more, proboscis framework doesn\u0027t have setUp and tearDown methods (it\u0027s not testtools).\n\nSo you have to explicitly delete instance right after  test_create_instance_with_valid_flavor_association\n\nAnd the last one, please make this tests available only fake-mode to avoid gate timeout issue.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":223,"context_line":"                      self.volume, databases, datastore\u003dself.datastore.id)"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def tearDown(self):"},{"line_number":226,"context_line":"        self.rd_client.instances.delete(self.instance_id)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_4ab12400","line":226,"in_reply_to":"5a890539_a47c01ed","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"9ac5fe53345d86a84d31d6f54b21b36677b3b2aa","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            test_config.dbaas_datastore)"},{"line_number":173,"context_line":"        dbaas_flavors \u003d self.rd_client.flavors.list_ds_associated_flavors("},{"line_number":174,"context_line":"            datastore\u003dds_version.id,"},{"line_number":175,"context_line":"            datastore_version_id\u003dds_version.default_version)"},{"line_number":176,"context_line":"        os_flavors \u003d self.get_expected_flavors()"},{"line_number":177,"context_line":"        assert_equal(len(dbaas_flavors), len(os_flavors))"},{"line_number":178,"context_line":"        # verify flavor lists are identical"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_80545bff","line":175,"updated":"2014-12-05 11:48:54.000000000","message":"I gave the comment on models.py regarding parameters names, because I really confused reading this:\n\ndatastore\u003dds_version.id\n\ndatastore_version_id\u003dds_version.default_version","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"e31a8555406f01bf110cd74c3f16bd120b558b8f","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            test_config.dbaas_datastore)"},{"line_number":173,"context_line":"        dbaas_flavors \u003d self.rd_client.flavors.list_ds_associated_flavors("},{"line_number":174,"context_line":"            datastore\u003dds_version.id,"},{"line_number":175,"context_line":"            datastore_version_id\u003dds_version.default_version)"},{"line_number":176,"context_line":"        os_flavors \u003d self.get_expected_flavors()"},{"line_number":177,"context_line":"        assert_equal(len(dbaas_flavors), len(os_flavors))"},{"line_number":178,"context_line":"        # verify flavor lists are identical"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_5b97c6eb","line":175,"in_reply_to":"5a890539_80545bff","updated":"2014-12-05 12:24:52.000000000","message":"+1","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"dc1d7c063238599021aa68543da3aa375eb13250","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    def test_flavor_list_datastore_version_associated_flavors(self):"},{"line_number":171,"context_line":"        datastore \u003d self.rd_client.datastores.get("},{"line_number":172,"context_line":"            test_config.dbaas_datastore)"},{"line_number":173,"context_line":"        dbaas_flavors \u003d self.rd_client.flavors.list_ds_associated_flavors("},{"line_number":174,"context_line":"            datastore\u003dtest_config.dbaas_datastore,"},{"line_number":175,"context_line":"            datastore_version_id\u003ddatastore.default_version)"},{"line_number":176,"context_line":"        os_flavors \u003d self.get_expected_flavors()"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a961159_4dc45240","line":173,"updated":"2014-12-08 20:10:29.000000000","message":"You need to update tests with respect to client patch.\n\nlist_datastore_version_flavors instead of list_ds_associated_flavors\n\nhttps://review.openstack.org/#/c/109826/10/troveclient/v1/flavors.py,cm","commit_id":"b0feda0f052fe38d50103519187ba4f517dc6827"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"dc1d7c063238599021aa68543da3aa375eb13250","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            test_config.dbaas_datastore)"},{"line_number":173,"context_line":"        dbaas_flavors \u003d self.rd_client.flavors.list_ds_associated_flavors("},{"line_number":174,"context_line":"            datastore\u003dtest_config.dbaas_datastore,"},{"line_number":175,"context_line":"            datastore_version_id\u003ddatastore.default_version)"},{"line_number":176,"context_line":"        os_flavors \u003d self.get_expected_flavors()"},{"line_number":177,"context_line":"        assert_equal(len(dbaas_flavors), len(os_flavors))"},{"line_number":178,"context_line":"        # verify flavor lists are identical"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a961159_6dd82e1e","line":175,"updated":"2014-12-08 20:10:29.000000000","message":"no need to do this, because Trove in test env comes with default datastore version for datastore.","commit_id":"b0feda0f052fe38d50103519187ba4f517dc6827"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"dc1d7c063238599021aa68543da3aa375eb13250","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        self.instance_id \u003d None"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @test"},{"line_number":214,"context_line":"    @time_out(TIMEOUT_INSTANCE_CREATE)"},{"line_number":215,"context_line":"    def test_create_instance_with_valid_flavor_association(self):"},{"line_number":216,"context_line":"        # all the nova flavors are associated with the default datastore"},{"line_number":217,"context_line":"        result \u003d self.rd_client.instances.create("}],"source_content_type":"text/x-python","patch_set":23,"id":"3a961159_0d3faa26","line":214,"updated":"2014-12-08 20:10:29.000000000","message":"this test case tests flavor association, nothing else, so, please make this tests enabled only for fake-mode.","commit_id":"b0feda0f052fe38d50103519187ba4f517dc6827"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a5edfe3f4712953361ec2f3afcaa139fc9fdd55d","unresolved":false,"context_lines":[{"line_number":211,"context_line":"        self.instance_id \u003d None"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    @test"},{"line_number":214,"context_line":"    @time_out(TIMEOUT_INSTANCE_CREATE)"},{"line_number":215,"context_line":"    def test_create_instance_with_valid_flavor_association(self):"},{"line_number":216,"context_line":"        # all the nova flavors are associated with the default datastore"},{"line_number":217,"context_line":"        result \u003d self.rd_client.instances.create("}],"source_content_type":"text/x-python","patch_set":23,"id":"3a961159_b08d0934","line":214,"in_reply_to":"3a961159_0d3faa26","updated":"2014-12-08 20:36:27.000000000","message":"All these tests are enabled only in fake mode (line 197).","commit_id":"b0feda0f052fe38d50103519187ba4f517dc6827"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"dc1d7c063238599021aa68543da3aa375eb13250","unresolved":false,"context_lines":[{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    @test(runs_after\u003d[test_create_instance_with_valid_flavor_association])"},{"line_number":236,"context_line":"    def test_create_instance_with_invalid_flavor_association(self):"},{"line_number":237,"context_line":"        databases \u003d []"},{"line_number":238,"context_line":"        assert_raises(exceptions.BadRequest,"},{"line_number":239,"context_line":"                      self.rd_client.instances.create, self.name2, \u0027100\u0027,"},{"line_number":240,"context_line":"                      self.volume, databases, datastore\u003dself.datastore.id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a961159_6d466ec1","line":237,"updated":"2014-12-08 20:10:29.000000000","message":"not needed for this case at all.","commit_id":"b0feda0f052fe38d50103519187ba4f517dc6827"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"dc1d7c063238599021aa68543da3aa375eb13250","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    @test(runs_after\u003d[test_create_instance_with_valid_flavor_association])"},{"line_number":236,"context_line":"    def test_create_instance_with_invalid_flavor_association(self):"},{"line_number":237,"context_line":"        databases \u003d []"},{"line_number":238,"context_line":"        assert_raises(exceptions.BadRequest,"},{"line_number":239,"context_line":"                      self.rd_client.instances.create, self.name2, \u0027100\u0027,"},{"line_number":240,"context_line":"                      self.volume, databases, datastore\u003dself.datastore.id)"}],"source_content_type":"text/x-python","patch_set":23,"id":"3a961159_cd5a0283","line":238,"updated":"2014-12-08 20:10:29.000000000","message":"ReST should return 403 Forbidden instead of 400.","commit_id":"b0feda0f052fe38d50103519187ba4f517dc6827"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"fd132a65fcd23daf08a94ddc223a0797d954941d","unresolved":false,"context_lines":[{"line_number":194,"context_line":"@test(runs_after\u003d[Flavors],"},{"line_number":195,"context_line":"      groups\u003d[tests.DBAAS_API, GROUP, GROUP_DS],"},{"line_number":196,"context_line":"      depends_on_groups\u003d[\"services.initialize\"],"},{"line_number":197,"context_line":"      enabled\u003dFAKE_MODE)"},{"line_number":198,"context_line":"class DatastoreFlavorAssociation(object):"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"    @before_class"}],"source_content_type":"text/x-python","patch_set":24,"id":"3a961159_509305fa","line":197,"updated":"2014-12-08 20:48:12.000000000","message":"As mentioned in the previous patch, these tests will run only in fake mode.","commit_id":"0c65f197b435fd110aa2ca0e68b2a424d08466ba"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c00ddda61e20bd2afb8b5889b508b74ea0686db1","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    @test"},{"line_number":226,"context_line":"    @time_out(TIMEOUT_INSTANCE_CREATE)"},{"line_number":227,"context_line":"    def test_create_instance_with_valid_flavor_association(self):"},{"line_number":228,"context_line":"        # all the nova flavors are associated with the default datastore"},{"line_number":229,"context_line":"        result \u003d self.rd_client.instances.create("},{"line_number":230,"context_line":"            name\u003dself.name1, flavor_id\u003d\u00271\u0027, volume\u003dself.volume,"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_d1bf73a8","line":227,"updated":"2015-05-19 13:59:41.000000000","message":"Can we somehow tweak base instance provisioning test to reduce time on running integration tests instead of setting up 250-300 seconds test run?\n\n\nMy own 5c: this is something that always stabs you in your back while setting up CI with specific job timeout that appears once we\u0027re adding new long running test. Also, i\u0027d suggest to reconsider, twice at least, before adding another one long running test.","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":6160,"name":"Saurabh Surana","email":"saurabh.cloud@gmail.com","username":"saurabh-surana"},"change_message_id":"dca30d51956a6971631eeea8effa1fc68c02fda5","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    @test"},{"line_number":226,"context_line":"    @time_out(TIMEOUT_INSTANCE_CREATE)"},{"line_number":227,"context_line":"    def test_create_instance_with_valid_flavor_association(self):"},{"line_number":228,"context_line":"        # all the nova flavors are associated with the default datastore"},{"line_number":229,"context_line":"        result \u003d self.rd_client.instances.create("},{"line_number":230,"context_line":"            name\u003dself.name1, flavor_id\u003d\u00271\u0027, volume\u003dself.volume,"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_be015b07","line":227,"in_reply_to":"7a016987_d1bf73a8","updated":"2015-05-20 17:16:40.000000000","message":"If CI is getting affected by larger timeouts in test then can it use usage_timeout parameter available per datastore to set appropriate timeouts as per the CI environments? Set usage_timeout to a lower value and instances which don\u0027t go ACTIVE during that time, will be marked ERROR, test will fail/pass accordingly and will also exit.\n\nAlso, changing time out affects many other tests which should be outside the scope of this patch, so if we must do that then, can we please file a separate ticket and address it in a separate patch?","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"248799ec5836039867f04deb2043c9c7c2fe2cd1","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    @test(runs_after\u003d[test_create_instance_with_valid_flavor_association])"},{"line_number":245,"context_line":"    def test_create_instance_with_invalid_flavor_association(self):"},{"line_number":246,"context_line":"        assert_raises(exceptions.BadRequest,"},{"line_number":247,"context_line":"                      self.rd_client.instances.create, self.name2, \u0027100\u0027,"},{"line_number":248,"context_line":"                      self.volume, datastore\u003dself.datastore.id)"}],"source_content_type":"text/x-python","patch_set":40,"id":"9a41bdd9_34bb9c77","line":247,"updated":"2015-07-16 19:38:02.000000000","message":"This test makes sense expect the fact that i dont know that flavor 100 exists at all on the setup. We should get a bad request exception any time we create an instance with a flavor that doesnt exist so this doesnt verify the case where the flavor exists.\n\nIf we could verify that the bad request message was related to the association then that would be better but i\u0027m not sure thats possible right now.\n\nInstead of the above assertion, I\u0027d like to see this test verify that the flavor exists by calling `self.rd_client.flavors.get(\u0027100\u0027)` without throwing an exception and then calling this create with that flavor. I think you might have to use something like flavor id of \u00272\u0027 or something.","commit_id":"77c1a000c4315dd09295aa111394627618e0290f"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"b830dddaec82f81c271069d7faf48a7485aca179","unresolved":false,"context_lines":[{"line_number":244,"context_line":"    @test(runs_after\u003d[test_create_instance_with_valid_flavor_association])"},{"line_number":245,"context_line":"    def test_create_instance_with_invalid_flavor_association(self):"},{"line_number":246,"context_line":"        assert_raises(exceptions.BadRequest,"},{"line_number":247,"context_line":"                      self.rd_client.instances.create, self.name2, \u0027100\u0027,"},{"line_number":248,"context_line":"                      self.volume, datastore\u003dself.datastore.id)"}],"source_content_type":"text/x-python","patch_set":40,"id":"3a50d1a3_e3a6f60d","line":247,"in_reply_to":"9a41bdd9_34bb9c77","updated":"2015-07-23 15:36:50.000000000","message":"+1","commit_id":"77c1a000c4315dd09295aa111394627618e0290f"}],"trove/tests/unittests/datastore/base.py":[{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"81ffda93f6761fe3248b3b1dba8e32ed2de38060","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import testtools"},{"line_number":16,"context_line":"from trove.datastore.models import DatastoreVersionFlavor"},{"line_number":17,"context_line":"from trove.datastore.models import Datastore"},{"line_number":18,"context_line":"from trove.datastore.models import Capability"},{"line_number":19,"context_line":"from trove.datastore.models import DatastoreVersion"}],"source_content_type":"text/x-python","patch_set":8,"id":"1abeadc6_2bbb1b73","line":16,"updated":"2014-08-20 08:24:06.000000000","message":"both methods of this class should be classmethods.","commit_id":"0cd6f7438cf19e1ccbda697897089f90e370316d"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.capability_desc \u003d \"Enables root on create\""},{"line_number":36,"context_line":"        self.capability_enabled \u003d True"},{"line_number":37,"context_line":"        self.datastore_version_id \u003d str(uuid.uuid4())"},{"line_number":38,"context_line":"        self.flavor \u003d 1"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        datastore_models.update_datastore(self.ds_name, False)"},{"line_number":41,"context_line":"        self.datastore \u003d Datastore.load(self.ds_name)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_4053a8e1","line":38,"updated":"2014-09-04 04:29:40.000000000","message":"If this is an ID (which it is), I recommend it be named \"flavor_id\".","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4882eeed1b38a7afa4cb0d3e11cd1c9887627981","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.capability_desc \u003d \"Enables root on create\""},{"line_number":36,"context_line":"        self.capability_enabled \u003d True"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        datastore_models.update_datastore(self.ds_name, False)"},{"line_number":39,"context_line":"        self.datastore \u003d Datastore.load(self.ds_name)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        datastore_models.update_datastore_version("}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa7fdbe_5c322111","side":"PARENT","line":38,"updated":"2014-10-21 17:37:17.000000000","message":"what is datastore_models?","commit_id":"f46b23e20dcbe79fedb36371504d32b1375344fa"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"e2b7dc0478279ce9b85cdb11c065fcb6083b73e7","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from trove.datastore.models import Capability"},{"line_number":19,"context_line":"from trove.datastore.models import DatastoreVersion"},{"line_number":20,"context_line":"from trove.datastore.models import DBCapabilityOverrides"},{"line_number":21,"context_line":"from trove.datastore.models import DatastoreVersionMetadata"},{"line_number":22,"context_line":"from trove.tests.unittests.util import util"},{"line_number":23,"context_line":"import uuid"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"9aa7fdbe_e005c77a","line":21,"updated":"2014-10-22 16:04:58.000000000","message":"isn\u0027t this just datastore_models.DataStoreVersionMetadata?","commit_id":"44d83da1e61307846aefc03e03d02c3ec4b565c6"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"98afc1c3bd2831320cda33b1b4ea4e4acc72bae2","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        datastore_models.update_datastore_version("},{"line_number":45,"context_line":"            self.ds_name, self.ds_version, \"mysql\", \"\", \"\", True)"},{"line_number":46,"context_line":"        DatastoreVersionMetadata.add_datastore_version_flavor_association("},{"line_number":47,"context_line":"            self.datastore_version_id, self.flavor_id)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.datastore_version \u003d DatastoreVersion.load(self.datastore,"},{"line_number":50,"context_line":"                                                       self.ds_version)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_0da52da1","line":47,"updated":"2014-11-25 22:00:39.000000000","message":"Riddhi, I beleive the second parameter needs to be a list of flavor ids as per the function definition. Thanks.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"ee2b36c5d735cc7f66f123ae717b97dd4fb12ed1","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        datastore_models.update_datastore_version("},{"line_number":45,"context_line":"            self.ds_name, self.ds_version, \"mysql\", \"\", \"\", True)"},{"line_number":46,"context_line":"        DatastoreVersionMetadata.add_datastore_version_flavor_association("},{"line_number":47,"context_line":"            self.datastore_version_id, self.flavor_id)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.datastore_version \u003d DatastoreVersion.load(self.datastore,"},{"line_number":50,"context_line":"                                                       self.ds_version)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_c283ef00","line":47,"in_reply_to":"5a890539_0da52da1","updated":"2014-11-26 00:27:34.000000000","message":"Hey Mariam,\n\nYeah it could be a list of 1 element as well. So i think for the purpose of the test it should be fine?","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        datastore_models.update_datastore_version("},{"line_number":45,"context_line":"            self.ds_name, self.ds_version, \"mysql\", \"\", \"\", True)"},{"line_number":46,"context_line":"        DatastoreVersionMetadata.add_datastore_version_flavor_association("},{"line_number":47,"context_line":"            self.datastore_version_id, self.flavor_id)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.datastore_version \u003d DatastoreVersion.load(self.datastore,"},{"line_number":50,"context_line":"                                                       self.ds_version)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_ca727449","line":47,"in_reply_to":"5a890539_5d5df014","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"56d8e042e35539e2eb4de899c6ed886b96963390","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        datastore_models.update_datastore_version("},{"line_number":45,"context_line":"            self.ds_name, self.ds_version, \"mysql\", \"\", \"\", True)"},{"line_number":46,"context_line":"        DatastoreVersionMetadata.add_datastore_version_flavor_association("},{"line_number":47,"context_line":"            self.datastore_version_id, self.flavor_id)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.datastore_version \u003d DatastoreVersion.load(self.datastore,"},{"line_number":50,"context_line":"                                                       self.ds_version)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_5d5df014","line":47,"in_reply_to":"5a890539_c283ef00","updated":"2014-12-01 08:56:51.000000000","message":"Hey Riddhi, \n   So the test failures I mentioned in my comments I believe is caused because of this statement above I believe. If you look at the gate-trove-python27 tests that are failing, you can see that its failing in this area. Yes it can be a list of 1 element but it looks to me that you are passing the element itself instead of list. Am I missing something? Thanks Riddhi.\n\ndef add_datastore_version_flavor_association(cls, datastore_version_id, flavor_ids):","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"56d8e042e35539e2eb4de899c6ed886b96963390","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.cap3.delete()"},{"line_number":71,"context_line":"        Datastore.load(self.ds_name).delete()"},{"line_number":72,"context_line":"        datastore_models.DBDatastoreVersionMetadata.load("},{"line_number":73,"context_line":"            datastore_version_id\u003dself.datastore_version_id).delete()"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def capability_name_filter(self, capabilities):"},{"line_number":76,"context_line":"        new_capabilities \u003d []"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_933d562f","line":73,"updated":"2014-12-01 08:56:51.000000000","message":"I dont think DBDatastoreVersionMetadata has a load method. Did you mean to use create instead? Thanks.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"84fa7a8b7252924f29138d4d4b018cff475ffef7","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        self.cap3.delete()"},{"line_number":71,"context_line":"        Datastore.load(self.ds_name).delete()"},{"line_number":72,"context_line":"        datastore_models.DBDatastoreVersionMetadata.load("},{"line_number":73,"context_line":"            datastore_version_id\u003dself.datastore_version_id).delete()"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def capability_name_filter(self, capabilities):"},{"line_number":76,"context_line":"        new_capabilities \u003d []"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_590eade6","line":73,"in_reply_to":"5a890539_933d562f","updated":"2014-12-01 10:01:13.000000000","message":"Actually it has, because it was inherited from base database model class.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10725,"name":"Sergey Gotliv","email":"sgotliv@redhat.com","username":"sgotliv"},"change_message_id":"9ac5fe53345d86a84d31d6f54b21b36677b3b2aa","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            self.datastore_version_id, [self.flavor_id])"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        self.datastore_version \u003d DatastoreVersion.load(self.datastore,"},{"line_number":50,"context_line":"                                                       self.ds_version)"},{"line_number":51,"context_line":"        self.test_id \u003d self.datastore_version.id"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        self.cap1 \u003d Capability.create(self.capability_name,"}],"source_content_type":"text/x-python","patch_set":21,"id":"5a890539_a546c979","line":50,"updated":"2014-12-05 11:48:54.000000000","message":"Here we have \"self.datastore_version\", you added \"self.datastore_version_id\".\n\nI actually would expect :\n\n self.datastore_version_id \u003d\u003d self.datastore_version.id","commit_id":"40fb5e0899fb41b1a98783f1ef6673f66cfd7cf4"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"33213fc71e7dd6cf988f1dc115e11bca4dbd38a8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"from trove.datastore import models as datastore_models"},{"line_number":15,"context_line":"from trove.datastore.models import Capability"},{"line_number":16,"context_line":"from trove.datastore.models import DBCapabilityOverrides"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from trove.datastore.models import Datastore"},{"line_number":19,"context_line":"from trove.datastore.models import DatastoreVersion"},{"line_number":20,"context_line":"from trove.datastore.models import DatastoreVersionMetadata"}],"source_content_type":"text/x-python","patch_set":33,"id":"7a016987_a2669527","line":17,"updated":"2015-05-22 17:20:33.000000000","message":"un-needed line break","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"}],"trove/tests/unittests/datastore/test_datastore_version_metadata.py":[{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"b91087be73e5bd4c81b57843538407dc5a995b29","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        dsflavor.datastore_flavor_delete(ds_version, flavor)"},{"line_number":43,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"},{"line_number":44,"context_line":"                                                  ds_version, flavor\u003dflavor)"},{"line_number":45,"context_line":"        assertEqual(\"True\", mapping.deleted)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_201f8409","line":45,"updated":"2014-09-04 04:29:40.000000000","message":"Should this be True instead of \"True\".","commit_id":"99b8b5d5a66721d72804d99311f87470d680f695"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    def test_map_flavors_to_datastore(self):"},{"line_number":28,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"},{"line_number":29,"context_line":"                                                  self.datastore_version_id,"},{"line_number":30,"context_line":"                                                  value\u003dself.flavor_id,"},{"line_number":31,"context_line":"                                                  deleted\u003dFalse)"},{"line_number":32,"context_line":"        assertEqual(mapping.datastore_version_id, self.datastore_version_id)"},{"line_number":33,"context_line":"        assertEqual(mapping.value, self.flavor_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_d6a8a9dd","line":30,"updated":"2014-09-09 16:18:41.000000000","message":"Are you missing the key kwarg here?","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        flavor_id \u003d 2"},{"line_number":47,"context_line":"        DatastoreVersionMetadata.datastore_flavor_add(ds_version, flavor_id)"},{"line_number":48,"context_line":"        DatastoreVersionMetadata.datastore_flavor_delete(ds_version, flavor_id)"},{"line_number":49,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"},{"line_number":50,"context_line":"                                                  ds_version, flavor\u003dflavor_id)"},{"line_number":51,"context_line":"        assertEqual(True, mapping.deleted)"},{"line_number":52,"context_line":"        # check update"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_d67fc964","line":49,"updated":"2014-09-09 16:18:41.000000000","message":"Same as line 30.","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        DatastoreVersionMetadata.datastore_flavor_add(ds_version, flavor_id)"},{"line_number":48,"context_line":"        DatastoreVersionMetadata.datastore_flavor_delete(ds_version, flavor_id)"},{"line_number":49,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"},{"line_number":50,"context_line":"                                                  ds_version, flavor\u003dflavor_id)"},{"line_number":51,"context_line":"        assertEqual(True, mapping.deleted)"},{"line_number":52,"context_line":"        # check update"},{"line_number":53,"context_line":"        DatastoreVersionMetadata.datastore_flavor_add(ds_version, flavor_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_76d0dd53","line":50,"updated":"2014-09-09 16:18:41.000000000","message":"flavor isn\u0027t a valid kwarg for load.","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        assertEqual(True, mapping.deleted)"},{"line_number":52,"context_line":"        # check update"},{"line_number":53,"context_line":"        DatastoreVersionMetadata.datastore_flavor_add(ds_version, flavor_id)"},{"line_number":54,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"},{"line_number":55,"context_line":"                                                  ds_version, flavor\u003dflavor_id)"},{"line_number":56,"context_line":"        assertEqual(False, mapping.deleted)"},{"line_number":57,"context_line":"        # clear the mapping"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_76829d53","line":54,"updated":"2014-09-09 16:18:41.000000000","message":"Same as line 30.","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"46d1ed8639de97101059c00e482e42f1327de031","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        # check update"},{"line_number":53,"context_line":"        DatastoreVersionMetadata.datastore_flavor_add(ds_version, flavor_id)"},{"line_number":54,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"},{"line_number":55,"context_line":"                                                  ds_version, flavor\u003dflavor_id)"},{"line_number":56,"context_line":"        assertEqual(False, mapping.deleted)"},{"line_number":57,"context_line":"        # clear the mapping"},{"line_number":58,"context_line":"        DatastoreVersionMetadata.datastore_flavor_delete(ds_version, flavor_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_56e2f92f","line":55,"updated":"2014-09-09 16:18:41.000000000","message":"flavor isn\u0027t a valid kwarg for load.","commit_id":"0bb22146aebd2096afb8ecb6a84bac85923c2a64"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aaaee974da39baf60fe75708cc62b656d5cc9432","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from trove.tests.unittests.datastore.base import TestDatastoreBase"},{"line_number":16,"context_line":"from trove.datastore.models import DBDatastoreVersionMetadata"},{"line_number":17,"context_line":"from trove.datastore import models"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class TestDatastoreVersionMetadata(TestDatastoreBase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_04523568","line":17,"updated":"2014-11-27 09:48:28.000000000","message":"please use right import order","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from trove.tests.unittests.datastore.base import TestDatastoreBase"},{"line_number":16,"context_line":"from trove.datastore.models import DBDatastoreVersionMetadata"},{"line_number":17,"context_line":"from trove.datastore import models"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class TestDatastoreVersionMetadata(TestDatastoreBase):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_6a9b4066","line":17,"in_reply_to":"5a890539_04523568","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"56d8e042e35539e2eb4de899c6ed886b96963390","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        super(TestDatastoreVersionMetadata, self).tearDown()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def test_map_flavors_to_datastore(self):"},{"line_number":28,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"},{"line_number":29,"context_line":"                                                  self.datastore_version_id,"},{"line_number":30,"context_line":"                                                  value\u003dself.flavor_id,"},{"line_number":31,"context_line":"                                                  deleted\u003dFalse, key\u003d\u0027flavor\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_131166af","line":28,"updated":"2014-12-01 08:56:51.000000000","message":"did you mean to use create method for DBDatastoreVersionMetadata?","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        super(TestDatastoreVersionMetadata, self).tearDown()"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def test_map_flavors_to_datastore(self):"},{"line_number":28,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"},{"line_number":29,"context_line":"                                                  self.datastore_version_id,"},{"line_number":30,"context_line":"                                                  value\u003dself.flavor_id,"},{"line_number":31,"context_line":"                                                  deleted\u003dFalse, key\u003d\u0027flavor\u0027)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_caa9947d","line":28,"in_reply_to":"5a890539_131166af","updated":"2014-12-03 23:24:56.000000000","message":"No..i was intending to load the mappings here.\nThanks:)","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"56d8e042e35539e2eb4de899c6ed886b96963390","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_add_existing_associations(self):"},{"line_number":36,"context_line":"        dsmetadata \u003d models.DatastoreVersionMetadata"},{"line_number":37,"context_line":"        self.assertRaises(DatastoreFlavorAssociationAlreadyExists,"},{"line_number":38,"context_line":"                          dsmetadata.add_datastore_version_flavor_association,"},{"line_number":39,"context_line":"                          self.datastore_version_id, self.flavor_id)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_b31fb2b7","line":37,"updated":"2014-12-01 08:56:51.000000000","message":"Need to add imports for this exception class.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def test_add_existing_associations(self):"},{"line_number":36,"context_line":"        dsmetadata \u003d models.DatastoreVersionMetadata"},{"line_number":37,"context_line":"        self.assertRaises(DatastoreFlavorAssociationAlreadyExists,"},{"line_number":38,"context_line":"                          dsmetadata.add_datastore_version_flavor_association,"},{"line_number":39,"context_line":"                          self.datastore_version_id, self.flavor_id)"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_27306fe8","line":37,"in_reply_to":"5a890539_b31fb2b7","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"56d8e042e35539e2eb4de899c6ed886b96963390","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                          self.datastore_version_id, self.flavor_id)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_load_nonexistent_mapping(self):"},{"line_number":42,"context_line":"        self.assertRaises(DatastoreFlavorAssociationNotFound,"},{"line_number":43,"context_line":"                          DBDatastoreVersionMetadata.find_by)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_delete_mapping(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_d31efeba","line":42,"updated":"2014-12-01 08:56:51.000000000","message":"Need to add imports for this exception. Thanks.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":39,"context_line":"                          self.datastore_version_id, self.flavor_id)"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_load_nonexistent_mapping(self):"},{"line_number":42,"context_line":"        self.assertRaises(DatastoreFlavorAssociationNotFound,"},{"line_number":43,"context_line":"                          DBDatastoreVersionMetadata.find_by)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_delete_mapping(self):"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_674d1772","line":42,"in_reply_to":"5a890539_d31efeba","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"56d8e042e35539e2eb4de899c6ed886b96963390","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        flavor_id \u003d 2"},{"line_number":48,"context_line":"        dsmetadata \u003d models.DatastoreVersionMetadata"},{"line_number":49,"context_line":"        dsmetadata.add_datastore_version_flavor_association(ds_version,"},{"line_number":50,"context_line":"                                                            flavor_id)"},{"line_number":51,"context_line":"        dsmetadata.delete_datastore_version_flavor_association(ds_version,"},{"line_number":52,"context_line":"                                                               flavor_id)"},{"line_number":53,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_337bc2f5","line":50,"updated":"2014-12-01 08:56:51.000000000","message":"the second parameter needs to be a list of flavor ids I believe. def add_datastore_version_flavor_association(cls, datastore_version_id, flavor_ids):\nThanks.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":7796,"name":"Riddhi Shah","email":"ridhi.j.shah@gmail.com","username":"ridhi-j-shah"},"change_message_id":"a17fbc99da8f1588d3381bcd5b0117c649f2219b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        flavor_id \u003d 2"},{"line_number":48,"context_line":"        dsmetadata \u003d models.DatastoreVersionMetadata"},{"line_number":49,"context_line":"        dsmetadata.add_datastore_version_flavor_association(ds_version,"},{"line_number":50,"context_line":"                                                            flavor_id)"},{"line_number":51,"context_line":"        dsmetadata.delete_datastore_version_flavor_association(ds_version,"},{"line_number":52,"context_line":"                                                               flavor_id)"},{"line_number":53,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_e7402737","line":50,"in_reply_to":"5a890539_337bc2f5","updated":"2014-12-03 23:24:56.000000000","message":"Done","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":10295,"name":"mariam john","email":"mariamj@us.ibm.com","username":"mariamj"},"change_message_id":"56d8e042e35539e2eb4de899c6ed886b96963390","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                                                            flavor_id)"},{"line_number":51,"context_line":"        dsmetadata.delete_datastore_version_flavor_association(ds_version,"},{"line_number":52,"context_line":"                                                               flavor_id)"},{"line_number":53,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.load(datastore_version_id\u003d"},{"line_number":54,"context_line":"                                                  ds_version, value\u003dflavor_id,"},{"line_number":55,"context_line":"                                                  key\u003d\u0027flavor\u0027)"},{"line_number":56,"context_line":"        assertEqual(True, mapping.deleted)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_53592e8d","line":53,"updated":"2014-12-01 08:56:51.000000000","message":"Did you mean create instead of load? Thanks.","commit_id":"8d8a689df4f0e0f90a52ddbaa2879c41cc044cd5"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"dd42a60a1a0fdb98aae68ccdb77e6244a9121ddc","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from trove.datastore.models import DBDatastoreVersionMetadata"},{"line_number":18,"context_line":"from trove.common import exception"},{"line_number":19,"context_line":"import uuid"},{"line_number":20,"context_line":"from melange.common import exception as dbexception"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestDatastoreVersionMetadata(TestDatastoreBase):"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_d8cf9727","line":20,"updated":"2014-12-12 02:37:49.000000000","message":"that\u0027s odd.","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f1e31e0f2aa6a1b803749321835cf5432d575a2b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from trove.datastore.models import DBDatastoreVersionMetadata"},{"line_number":18,"context_line":"from trove.common import exception"},{"line_number":19,"context_line":"import uuid"},{"line_number":20,"context_line":"from melange.common import exception as dbexception"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"class TestDatastoreVersionMetadata(TestDatastoreBase):"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_8d75acfb","line":20,"in_reply_to":"3a961159_d8cf9727","updated":"2014-12-23 11:46:52.000000000","message":"melange is not a part of Trove requirements. Also, sqlalchemy have it\u0027s own exceptions, please use them","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f1e31e0f2aa6a1b803749321835cf5432d575a2b","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                                                     value\u003dflavor_id,"},{"line_number":64,"context_line":"                                                     key\u003d\u0027flavor\u0027)"},{"line_number":65,"context_line":"        self.assertEqual(True, mapping.deleted)"},{"line_number":66,"context_line":"        # check update"},{"line_number":67,"context_line":"        dsmetadata.add_datastore_version_flavor_association("},{"line_number":68,"context_line":"            ds_version, [flavor_id])"},{"line_number":69,"context_line":"        mapping \u003d DBDatastoreVersionMetadata.find_by(datastore_version_id\u003d"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_ad70a808","line":66,"updated":"2014-12-23 11:46:52.000000000","message":"redundant","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"f1e31e0f2aa6a1b803749321835cf5432d575a2b","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                                                     value\u003dflavor_id,"},{"line_number":72,"context_line":"                                                     key\u003d\u0027flavor\u0027)"},{"line_number":73,"context_line":"        self.assertEqual(False, mapping.deleted)"},{"line_number":74,"context_line":"        # clear the mapping"},{"line_number":75,"context_line":"        DatastoreVersionMetadata.delete_datastore_version_flavor_association("},{"line_number":76,"context_line":"            ds_version, flavor_id)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a961159_cd62543d","line":74,"updated":"2014-12-23 11:46:52.000000000","message":"redundant","commit_id":"fd586ecfe883c0e51be51bc463f0dfe06f9ce62d"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"33213fc71e7dd6cf988f1dc115e11bca4dbd38a8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Rackspace Hosting"},{"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":33,"id":"7a016987_e2800d8d","line":1,"updated":"2015-05-22 17:20:33.000000000","message":"2015","commit_id":"92c0d01954b6d4419650219fd889b4e3ebae317c"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a8957b634b969202a9bf909ec2dd4b7017c3517c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Rackspace Hosting"},{"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":38,"id":"fa32b979_d1d5aeb9","line":1,"updated":"2015-06-13 02:21:47.000000000","message":"2015","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"6c9a628618a6b990bc56154709df3896fd3141a9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Rackspace Hosting"},{"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":38,"id":"fa32b979_cf5aa550","line":1,"in_reply_to":"fa32b979_d1d5aeb9","updated":"2015-06-16 22:10:31.000000000","message":"Done","commit_id":"408b93037a77a6f0b0f2c65ae494c0a9484a3ab2"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"b2721d67a2885e5d3b5ecf1085b3e439056de189","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            datastore_version_id\u003dds_version.id,"},{"line_number":33,"context_line":"            value\u003dself.flavor_id, deleted\u003dFalse, key\u003d\u0027flavor\u0027)"},{"line_number":34,"context_line":"        self.assertEqual(mapping.value,"},{"line_number":35,"context_line":"                         str(self.flavor_id))"},{"line_number":36,"context_line":"        self.assertEqual(mapping.datastore_version_id,"},{"line_number":37,"context_line":"                         ds_version.id)"},{"line_number":38,"context_line":"        self.assertEqual(str(mapping.key), \u0027flavor\u0027)"}],"source_content_type":"text/x-python","patch_set":39,"id":"fa32b979_1a70caa3","line":35,"updated":"2015-06-27 18:37:25.000000000","message":"it needs to be written as \nself.assertEqual(sample_value, value_to_be_tested)\n\nThere are more such appearances.","commit_id":"bc56dc436b57545debc41552cf9d5f46005dc9a4"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"37b9102a03835e9276b6efbd6f675889710dff83","unresolved":false,"context_lines":[{"line_number":32,"context_line":"            datastore_version_id\u003dds_version.id,"},{"line_number":33,"context_line":"            value\u003dself.flavor_id, deleted\u003dFalse, key\u003d\u0027flavor\u0027)"},{"line_number":34,"context_line":"        self.assertEqual(mapping.value,"},{"line_number":35,"context_line":"                         str(self.flavor_id))"},{"line_number":36,"context_line":"        self.assertEqual(mapping.datastore_version_id,"},{"line_number":37,"context_line":"                         ds_version.id)"},{"line_number":38,"context_line":"        self.assertEqual(str(mapping.key), \u0027flavor\u0027)"}],"source_content_type":"text/x-python","patch_set":39,"id":"ba3cc151_ff8ee677","line":35,"in_reply_to":"fa32b979_1a70caa3","updated":"2015-07-01 18:20:36.000000000","message":"Done","commit_id":"bc56dc436b57545debc41552cf9d5f46005dc9a4"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"b2721d67a2885e5d3b5ecf1085b3e439056de189","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def test_add_existing_associations(self):"},{"line_number":41,"context_line":"        dsmetadata \u003d datastore_models.DatastoreVersionMetadata"},{"line_number":42,"context_line":"        self.assertRaises(exception.DatastoreFlavorAssociationAlreadyExists,"},{"line_number":43,"context_line":"                          dsmetadata.add_datastore_version_flavor_association,"},{"line_number":44,"context_line":"                          self.ds_name, self.ds_version, [self.flavor_id])"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"fa32b979_5a9df2b9","line":42,"updated":"2015-06-27 18:37:25.000000000","message":"Need to use self.assertRaisesRegexp to test the message which is raised when an exception is raised.\n\nYou have more such test cases.","commit_id":"bc56dc436b57545debc41552cf9d5f46005dc9a4"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"37b9102a03835e9276b6efbd6f675889710dff83","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def test_add_existing_associations(self):"},{"line_number":41,"context_line":"        dsmetadata \u003d datastore_models.DatastoreVersionMetadata"},{"line_number":42,"context_line":"        self.assertRaises(exception.DatastoreFlavorAssociationAlreadyExists,"},{"line_number":43,"context_line":"                          dsmetadata.add_datastore_version_flavor_association,"},{"line_number":44,"context_line":"                          self.ds_name, self.ds_version, [self.flavor_id])"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"ba3cc151_3ffc4eb7","line":42,"in_reply_to":"fa32b979_5a9df2b9","updated":"2015-07-01 18:20:36.000000000","message":"I can definitely change it to self.assertRaisesRegexp, but I am not sure why self.assertRaises wont be a good idea (since I see most of the other tests use that). Can you please explain. Thanks","commit_id":"bc56dc436b57545debc41552cf9d5f46005dc9a4"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"b2721d67a2885e5d3b5ecf1085b3e439056de189","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                                            self.ds_version)"},{"line_number":65,"context_line":"        mapping \u003d datastore_models.DBDatastoreVersionMetadata.find_by("},{"line_number":66,"context_line":"            datastore_version_id\u003dds_version.id, value\u003dflavor_id, key\u003d\u0027flavor\u0027)"},{"line_number":67,"context_line":"        self.assertEqual(True, mapping.deleted)"},{"line_number":68,"context_line":"        # check update"},{"line_number":69,"context_line":"        dsmetadata.add_datastore_version_flavor_association("},{"line_number":70,"context_line":"            self.ds_name, self.ds_version, [flavor_id])"}],"source_content_type":"text/x-python","patch_set":39,"id":"fa32b979_baae7ee5","line":67,"updated":"2015-06-27 18:37:25.000000000","message":"Need to use self.assertTrue","commit_id":"bc56dc436b57545debc41552cf9d5f46005dc9a4"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"37b9102a03835e9276b6efbd6f675889710dff83","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                                            self.ds_version)"},{"line_number":65,"context_line":"        mapping \u003d datastore_models.DBDatastoreVersionMetadata.find_by("},{"line_number":66,"context_line":"            datastore_version_id\u003dds_version.id, value\u003dflavor_id, key\u003d\u0027flavor\u0027)"},{"line_number":67,"context_line":"        self.assertEqual(True, mapping.deleted)"},{"line_number":68,"context_line":"        # check update"},{"line_number":69,"context_line":"        dsmetadata.add_datastore_version_flavor_association("},{"line_number":70,"context_line":"            self.ds_name, self.ds_version, [flavor_id])"}],"source_content_type":"text/x-python","patch_set":39,"id":"ba3cc151_1f8cea7d","line":67,"in_reply_to":"fa32b979_baae7ee5","updated":"2015-07-01 18:20:36.000000000","message":"Done","commit_id":"bc56dc436b57545debc41552cf9d5f46005dc9a4"},{"author":{"_account_id":7806,"name":"Sushil Kumar","email":"skm.net@gmail.com","username":"sushilkm"},"change_message_id":"b2721d67a2885e5d3b5ecf1085b3e439056de189","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            self.ds_name, self.ds_version, [flavor_id])"},{"line_number":71,"context_line":"        mapping \u003d datastore_models.DBDatastoreVersionMetadata.find_by("},{"line_number":72,"context_line":"            datastore_version_id\u003dds_version.id, value\u003dflavor_id, key\u003d\u0027flavor\u0027)"},{"line_number":73,"context_line":"        self.assertEqual(False, mapping.deleted)"},{"line_number":74,"context_line":"        # clear the mapping"},{"line_number":75,"context_line":"        datastore_models.DatastoreVersionMetadata.\\"},{"line_number":76,"context_line":"            delete_datastore_version_flavor_association(self.ds_name,"}],"source_content_type":"text/x-python","patch_set":39,"id":"fa32b979_7ab8f62a","line":73,"updated":"2015-06-27 18:37:25.000000000","message":"self.assertFalse","commit_id":"bc56dc436b57545debc41552cf9d5f46005dc9a4"},{"author":{"_account_id":14991,"name":"Mayuri Ganguly","email":"mayuri.ganguly@hpe.com","username":"gangulma"},"change_message_id":"37b9102a03835e9276b6efbd6f675889710dff83","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            self.ds_name, self.ds_version, [flavor_id])"},{"line_number":71,"context_line":"        mapping \u003d datastore_models.DBDatastoreVersionMetadata.find_by("},{"line_number":72,"context_line":"            datastore_version_id\u003dds_version.id, value\u003dflavor_id, key\u003d\u0027flavor\u0027)"},{"line_number":73,"context_line":"        self.assertEqual(False, mapping.deleted)"},{"line_number":74,"context_line":"        # clear the mapping"},{"line_number":75,"context_line":"        datastore_models.DatastoreVersionMetadata.\\"},{"line_number":76,"context_line":"            delete_datastore_version_flavor_association(self.ds_name,"}],"source_content_type":"text/x-python","patch_set":39,"id":"ba3cc151_bfeb7e12","line":73,"in_reply_to":"fa32b979_7ab8f62a","updated":"2015-07-01 18:20:36.000000000","message":"Done","commit_id":"bc56dc436b57545debc41552cf9d5f46005dc9a4"}]}
