)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"30ef14d5afbec4c598e7c9e53fb507d28b8b2321","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Denis Makogon \u003cdmakogon@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-09-05 17:41:26 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add backup size validation at restoring"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Reasons:"},{"line_number":10,"context_line":"- users are able to pass backup to restoring"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":42,"id":"9aa7fdbe_d3727fac","line":7,"updated":"2014-10-21 19:06:11.000000000","message":"The verbiage of this commit message is a little confusing. I\u0027d like to propose the following:\n\nValidate backup size during restore\n\nReasons:\n\n- A user is able to pass a backup that is larger than the volume/disk of the instance can handle\n\nChanges:\n\n- Add validation to backup size according to volume or flavor size of the disk\n- Add tests","commit_id":"f050797402405d63df5e6e5db3e27c343ebc40c4"}],"trove/common/exception.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1a03a14712f23805830a130bcb7651f018cd811e","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class BackupIsTooLarge(TroveError):"},{"line_number":407,"context_line":"    message \u003d _(\"Backup is too large for given flavor or volume.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FyZY%3D","line":407,"updated":"2014-04-10 12:13:44.000000000","message":"I thought the agreement was that the message would be more descriptive? with sizes and things?","commit_id":"078a7536805bd2945448618c56a6f6f33f997ca7"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4705ceb19227b3967c5f98109b18d569af3a5b5c","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class BackupIsTooLarge(TroveError):"},{"line_number":407,"context_line":"    message \u003d _(\"Backup is too large for given flavor or volume.\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FyRg%3D","line":407,"in_reply_to":"AAAAW3%2F%2FyZY%3D","updated":"2014-04-10 12:40:40.000000000","message":"https://review.openstack.org/#/c/86300/4/trove/instance/models.py","commit_id":"078a7536805bd2945448618c56a6f6f33f997ca7"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"2bad8bbd12c768b86228ad537e2c610e5dd73db9","unresolved":false,"context_lines":[{"line_number":404,"context_line":""},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class BackupIsTooLarge(TroveError):"},{"line_number":407,"context_line":"    message \u003d _(\"Backup is too large for given flavor or volume.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAW3%2F%2Fxjk%3D","line":407,"updated":"2014-04-10 13:54:27.000000000","message":"So, if I understand exceptions correctly (which I probably don\u0027t but Denis has promised to educate me), the pattern here is to put the code that is now in models.py here.\n\nIsn\u0027t that what the others (above) are doing?","commit_id":"3b53b90fbe89f1975f0aa585822ffca042a8f155"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"9829f6ea5029e83b3520aac95f8699a224576f82","unresolved":false,"context_lines":[{"line_number":405,"context_line":""},{"line_number":406,"context_line":"class BackupIsTooLarge(TroveError):"},{"line_number":407,"context_line":"    message \u003d _(\"Backup is too large for given flavor or volume.\""},{"line_number":408,"context_line":"                \" Backup size: %(backup_size)s GBs. \""},{"line_number":409,"context_line":"                \"Available size: %(disk_size)s GBs.\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAW3%2F%2FY2w%3D","line":408,"updated":"2014-04-14 23:15:24.000000000","message":"Please be consistent with line spaces. If you look elsewhere in the file, spaces for multi-line continuations are added at the end of the previous line. Can we do the same here?","commit_id":"b5d59e369de34cb019fee7e38b9f388f602704d6"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"5a63680e62fa1df2f971243c2da0ff968be76170","unresolved":false,"context_lines":[{"line_number":442,"context_line":"    message \u003d \u0027Empty catalog\u0027"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"class BackupIsTooLarge(TroveError):"},{"line_number":446,"context_line":"    message \u003d _(\"Backup is too large for given flavor or volume. \""},{"line_number":447,"context_line":"                \"Backup size: %(backup_size)s GBs. \""},{"line_number":448,"context_line":"                \"Available size: %(disk_size)s GBs.\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_90bcb8dd","line":445,"updated":"2014-06-23 14:28:50.000000000","message":"Usually there aren\u0027t verbs in class names. In other words, how about \"BackupTooLarge\"? Or as another data point, Nova states the error from the other direction: InstanceTypeDiskTooSmall (http://git.io/k4uhUQ).","commit_id":"4c2e49d07e75a39342f8e3b94152540b1451e244"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"4cf16965b148cd43de653dcdab8041af08af3937","unresolved":false,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":""},{"line_number":445,"context_line":"class BackupIsTooLarge(TroveError):"},{"line_number":446,"context_line":"    message \u003d _(\"Backup is too large for given flavor or volume. \""},{"line_number":447,"context_line":"                \"Backup size: %(backup_size)s GBs. \""},{"line_number":448,"context_line":"                \"Available size: %(disk_size)s GBs.\")"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_4893854e","line":446,"updated":"2014-06-21 21:50:32.000000000","message":"appears like the new convention is to have a docstring here.","commit_id":"4c2e49d07e75a39342f8e3b94152540b1451e244"}],"trove/common/wsgi.py":[{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"f136a64bdbf2335171d3ebce5898c63512dfa574","unresolved":false,"context_lines":[{"line_number":1,"context_line":"    # Copyright 2011 OpenStack Foundation"},{"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":2,"id":"AAAAW3%2F%2F4ks%3D","line":1,"updated":"2014-04-09 17:47:46.000000000","message":"plz unindent","commit_id":"62b46c20319917f9aded4c2cde20c7ac04e2cb2a"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1a03a14712f23805830a130bcb7651f018cd811e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"    # Copyright 2011 OpenStack Foundation"},{"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":4,"id":"AAAAW3%2F%2Fya0%3D","line":1,"updated":"2014-04-10 12:13:44.000000000","message":"I don\u0027t know how people do this in Trove/OpenStack but wherever I\u0027ve worked, if you change a file, you get to also update the copyright on the file to reflect the year of the change. \n\nPlease treat with this comment as appropriate for openstack.","commit_id":"078a7536805bd2945448618c56a6f6f33f997ca7"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"fd5a600c85dad89749cd582a4853f928e902a37f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"    # Copyright 2011 OpenStack Foundation"},{"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":4,"id":"AAAAW3%2F%2FyOo%3D","line":1,"in_reply_to":"AAAAW3%2F%2Fya0%3D","updated":"2014-04-10 12:41:09.000000000","message":"headers cannot be changed","commit_id":"078a7536805bd2945448618c56a6f6f33f997ca7"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"30ef14d5afbec4c598e7c9e53fb507d28b8b2321","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            exception.DatabaseAlreadyExists,"},{"line_number":326,"context_line":"            exception.UserAlreadyExists,"},{"line_number":327,"context_line":"            exception.LocalStorageNotSpecified,"},{"line_number":328,"context_line":"            exception.BackupTooLarge,"},{"line_number":329,"context_line":"        ],"},{"line_number":330,"context_line":"        webob.exc.HTTPNotFound: ["},{"line_number":331,"context_line":"            exception.NotFound,"}],"source_content_type":"text/x-python","patch_set":42,"id":"9aa7fdbe_d380bf48","line":328,"updated":"2014-10-21 19:06:11.000000000","message":"Is 400 the best error for this particular situation?","commit_id":"f050797402405d63df5e6e5db3e27c343ebc40c4"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aa79fd2c1381c086bd50c00ea54dd740f6865ccb","unresolved":false,"context_lines":[{"line_number":325,"context_line":"            exception.DatabaseAlreadyExists,"},{"line_number":326,"context_line":"            exception.UserAlreadyExists,"},{"line_number":327,"context_line":"            exception.LocalStorageNotSpecified,"},{"line_number":328,"context_line":"            exception.BackupTooLarge,"},{"line_number":329,"context_line":"        ],"},{"line_number":330,"context_line":"        webob.exc.HTTPNotFound: ["},{"line_number":331,"context_line":"            exception.NotFound,"}],"source_content_type":"text/x-python","patch_set":42,"id":"9aa7fdbe_d7ffb0a8","line":328,"in_reply_to":"9aa7fdbe_d380bf48","updated":"2014-10-22 12:48:54.000000000","message":"There\u0027s no best option at all for this case. We can consider on making it 403, that\u0027s all, nothing else.","commit_id":"f050797402405d63df5e6e5db3e27c343ebc40c4"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"8ee61f3d05c21ffdc438c4a478c047f8f0ee3e50","unresolved":false,"context_lines":[{"line_number":328,"context_line":"            exception.DatabaseAlreadyExists,"},{"line_number":329,"context_line":"            exception.UserAlreadyExists,"},{"line_number":330,"context_line":"            exception.LocalStorageNotSpecified,"},{"line_number":331,"context_line":"            exception.BackupTooLarge,"},{"line_number":332,"context_line":"        ],"},{"line_number":333,"context_line":"        webob.exc.HTTPNotFound: ["},{"line_number":334,"context_line":"            exception.NotFound,"}],"source_content_type":"text/x-python","patch_set":45,"id":"9aa7fdbe_bad90324","line":331,"updated":"2014-10-23 19:24:12.000000000","message":"I thought you had said this would move to 403 in previous review?\n\nI\u0027m not happy with 400 because (per the specification) \n\nThe 400 (Bad Request) status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).\n\nIn this case, 403 would be better applicable.","commit_id":"82b94f5facab9caee9ce19c5e5127bfa7eb8bd49"}],"trove/instance/models.py":[{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"48d8f9387c0382a28698130233cd4552c4479015","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"CONF \u003d cfg.CONF"},{"line_number":48,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":49,"context_line":"volumes_support \u003d CONF.trove_volume_support"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def filter_ips(ips, regex):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F3aA%3D","line":49,"updated":"2014-04-09 20:26:16.000000000","message":"if this is a global plz make it VOLUME_SUPPORT\n\nand its not plural (not volumes_support)","commit_id":"62b46c20319917f9aded4c2cde20c7ac04e2cb2a"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a9c36d30433391156b3e084157bc3ad9c1d492b1","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            if volumes_support:"},{"line_number":631,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":632,"context_line":"                # backup  and volume size already comes in Gb\u0027s"},{"line_number":633,"context_line":"                if backup_info.size \u003e\u003d volume_size:"},{"line_number":634,"context_line":"                    raise exception.BackupIsTooLarge()"},{"line_number":635,"context_line":"            else:"},{"line_number":636,"context_line":"                #instance root disk should have enough space for the"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F3nw%3D","line":633,"updated":"2014-04-09 19:44:39.000000000","message":"Assuming that backup_info.size and volume_size are in the same units, this check appears to not be doing the thing that the bug is asking for.\n\nThe size of things on a file system are not directly related to the size of the same things in a database. Therefore it appears to me that comparing these two is problematic.","commit_id":"62b46c20319917f9aded4c2cde20c7ac04e2cb2a"},{"author":{"_account_id":4240,"name":"Craig Vyvial","email":"cp16net@gmail.com","username":"cp16net"},"change_message_id":"f136a64bdbf2335171d3ebce5898c63512dfa574","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            if volumes_support:"},{"line_number":631,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":632,"context_line":"                # backup  and volume size already comes in Gb\u0027s"},{"line_number":633,"context_line":"                if backup_info.size \u003e\u003d volume_size:"},{"line_number":634,"context_line":"                    raise exception.BackupIsTooLarge()"},{"line_number":635,"context_line":"            else:"},{"line_number":636,"context_line":"                #instance root disk should have enough space for the"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F4hg%3D","line":633,"updated":"2014-04-09 17:47:46.000000000","message":"are these ints that are stored the same? eg. both in bytes or MB?","commit_id":"62b46c20319917f9aded4c2cde20c7ac04e2cb2a"},{"author":{"_account_id":6268,"name":"Robert Myers","email":"myer0052@gmail.com","username":"rmyers"},"change_message_id":"fac23eee702a8cdd62a84c59b00803f913fb7224","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            if volumes_support:"},{"line_number":631,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":632,"context_line":"                # backup  and volume size already comes in Gb\u0027s"},{"line_number":633,"context_line":"                if backup_info.size \u003e\u003d volume_size:"},{"line_number":634,"context_line":"                    raise exception.BackupIsTooLarge()"},{"line_number":635,"context_line":"            else:"},{"line_number":636,"context_line":"                #instance root disk should have enough space for the"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F3W8%3D","line":633,"in_reply_to":"AAAAW3%2F%2F3jE%3D","updated":"2014-04-09 20:31:39.000000000","message":"This logic is correct, but the backup_info.size is a float and the volume_size is an int. So we should be careful not to loose any significance. Possibly convert the backup size to an int by rounding up to the nearest int.","commit_id":"62b46c20319917f9aded4c2cde20c7ac04e2cb2a"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"b154f936f8142553bc82bc4c4a7ceb36e15258d0","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            if volumes_support:"},{"line_number":631,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":632,"context_line":"                # backup  and volume size already comes in Gb\u0027s"},{"line_number":633,"context_line":"                if backup_info.size \u003e\u003d volume_size:"},{"line_number":634,"context_line":"                    raise exception.BackupIsTooLarge()"},{"line_number":635,"context_line":"            else:"},{"line_number":636,"context_line":"                #instance root disk should have enough space for the"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F3jE%3D","line":633,"in_reply_to":"AAAAW3%2F%2F3nw%3D","updated":"2014-04-09 19:57:55.000000000","message":"If you take a more precise glance you\u0027ll see that this is the \"create\" call that provision the instance, and it\u0027s valid to compare this values, because only the volume/flavor can tell how much data can be carried on. Here comes the rule: if the volume size of flavor root disk doesn\u0027t have enough space for the backup - provisioning should be blocked.\n\nAnd this check does exactly what it should. Coming from the rule defined above - if volume of flavor cannot carry backup - provisioning should be stopped with appropriate exception bein thrown.\n\nPatch covers the bug-report: now volume size or flavor are being validated with given backup.","commit_id":"62b46c20319917f9aded4c2cde20c7ac04e2cb2a"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"71c4c2ff4be1861d8bf33b5ce61c136153813e99","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            if volumes_support:"},{"line_number":631,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":632,"context_line":"                # backup  and volume size already comes in Gb\u0027s"},{"line_number":633,"context_line":"                if backup_info.size \u003e\u003d volume_size:"},{"line_number":634,"context_line":"                    raise exception.BackupIsTooLarge()"},{"line_number":635,"context_line":"            else:"},{"line_number":636,"context_line":"                #instance root disk should have enough space for the"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F4MA%3D","line":633,"in_reply_to":"AAAAW3%2F%2F4hg%3D","updated":"2014-04-09 18:33:58.000000000","message":"they are both in GBs, take a look how backup data formed","commit_id":"62b46c20319917f9aded4c2cde20c7ac04e2cb2a"},{"author":{"_account_id":739,"name":"Michael Basnight","email":"mbasnight@gmail.com","username":"hubcap"},"change_message_id":"48d8f9387c0382a28698130233cd4552c4479015","unresolved":false,"context_lines":[{"line_number":631,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":632,"context_line":"                # backup  and volume size already comes in Gb\u0027s"},{"line_number":633,"context_line":"                if backup_info.size \u003e\u003d volume_size:"},{"line_number":634,"context_line":"                    raise exception.BackupIsTooLarge()"},{"line_number":635,"context_line":"            else:"},{"line_number":636,"context_line":"                #instance root disk should have enough space for the"},{"line_number":637,"context_line":"                # backup"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAW3%2F%2F3ZM%3D","line":634,"updated":"2014-04-09 20:26:16.000000000","message":"I think it would be nice to show the error sizes. Backup requested of size %s was too small %s. Or something like that... So the user can see what they did.","commit_id":"62b46c20319917f9aded4c2cde20c7ac04e2cb2a"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"1a03a14712f23805830a130bcb7651f018cd811e","unresolved":false,"context_lines":[{"line_number":629,"context_line":""},{"line_number":630,"context_line":"            msg \u003d _(\"Backup is too large for given flavor or volume.\""},{"line_number":631,"context_line":"                    \" Backup size: %(backup_size)s. \""},{"line_number":632,"context_line":"                    \"Available size: %(disk_size)s\")"},{"line_number":633,"context_line":"            if VOLUME_SUPPORT:"},{"line_number":634,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":635,"context_line":"                # backup  and volume size already comes in Gb\u0027s"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FyZs%3D","line":632,"updated":"2014-04-10 12:13:44.000000000","message":"Would be good to throw in a \"GB\" or appropriate unit on this message. Since you are going to use ceil on the backup size, maybe ~%(backup_size) GB?","commit_id":"078a7536805bd2945448618c56a6f6f33f997ca7"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"4705ceb19227b3967c5f98109b18d569af3a5b5c","unresolved":false,"context_lines":[{"line_number":629,"context_line":""},{"line_number":630,"context_line":"            msg \u003d _(\"Backup is too large for given flavor or volume.\""},{"line_number":631,"context_line":"                    \" Backup size: %(backup_size)s. \""},{"line_number":632,"context_line":"                    \"Available size: %(disk_size)s\")"},{"line_number":633,"context_line":"            if VOLUME_SUPPORT:"},{"line_number":634,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":635,"context_line":"                # backup  and volume size already comes in Gb\u0027s"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAW3%2F%2FyPA%3D","line":632,"in_reply_to":"AAAAW3%2F%2FyZs%3D","updated":"2014-04-10 12:40:40.000000000","message":"Added GBs into the message, about the meaningful exceptions - i passed the message into the exceptions constructor, it will be more than meaningful, please take a look at tests, they are showing what kind of message is being thrown.","commit_id":"078a7536805bd2945448618c56a6f6f33f997ca7"},{"author":{"_account_id":9746,"name":"Doug Shelley","email":"dougshelley66@gmail.com","username":"dougshelley"},"change_message_id":"82d1a6248104f49d5395d7b0178e7cd05d581d25","unresolved":false,"context_lines":[{"line_number":630,"context_line":"            msg \u003d _(\"Backup is too large for given flavor or volume.\""},{"line_number":631,"context_line":"                    \" Backup size: %(backup_size)s GBs. \""},{"line_number":632,"context_line":"                    \"Available size: %(disk_size)s GBs\")"},{"line_number":633,"context_line":"            if VOLUME_SUPPORT:"},{"line_number":634,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":635,"context_line":"                # backup  and volume size already comes in Gb\u0027s"},{"line_number":636,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2Fx3I%3D","line":633,"updated":"2014-04-10 13:24:16.000000000","message":"Could this code be simplified to:\nif VOLUME_SUPPORT:\n    target_size \u003d volume_size\nelse \n    target_size \u003d flavor.disk\n\nif math.ceil(backup_info.size) \u003e target_size:\n....","commit_id":"4fcff61997078e86e484ff54b8d66bb14c4e1b01"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"9829f6ea5029e83b3520aac95f8699a224576f82","unresolved":false,"context_lines":[{"line_number":629,"context_line":""},{"line_number":630,"context_line":"            if VOLUME_SUPPORT:"},{"line_number":631,"context_line":"                # instance volume should have enough space for the backup"},{"line_number":632,"context_line":"                # backup  and volume size already comes in GB\u0027s"},{"line_number":633,"context_line":"                target_size \u003d volume_size"},{"line_number":634,"context_line":"            else:"},{"line_number":635,"context_line":"                target_size \u003d flavor.disk"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAW3%2F%2FY1E%3D","line":632,"updated":"2014-04-14 23:15:24.000000000","message":"(Grammar) Number mismatch.\n\n# Backup, and volume sizes are in GBs","commit_id":"b5d59e369de34cb019fee7e38b9f388f602704d6"},{"author":{"_account_id":10069,"name":"Zhou Yu","email":"vitas.yuzhou@huawei.com","username":"vitas.yuzhou"},"change_message_id":"937dc3b42b6a78318cd61ca194d9bf3a71cc83d0","unresolved":false,"context_lines":[{"line_number":634,"context_line":"            else:"},{"line_number":635,"context_line":"                target_size \u003d flavor.disk"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"            if math.ceil(backup_info.size) \u003e target_size:"},{"line_number":638,"context_line":"                raise exception.BackupIsTooLarge("},{"line_number":639,"context_line":"                    backup_size\u003dbackup_info.size, disk_size\u003dtarget_size)"},{"line_number":640,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAXH%2F%2FiH4%3D","line":637,"updated":"2014-04-20 06:25:04.000000000","message":"It is enough for backup file,but maybe it is not enough for executing restore the backup.","commit_id":"a459473832cbe5ecae5deb6f5ceef46c1be14579"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"75417c2032eb762f74ce39288d2209ed5c4ac227","unresolved":false,"context_lines":[{"line_number":634,"context_line":"            else:"},{"line_number":635,"context_line":"                target_size \u003d flavor.disk"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":"            if math.ceil(backup_info.size) \u003e target_size:"},{"line_number":638,"context_line":"                raise exception.BackupIsTooLarge("},{"line_number":639,"context_line":"                    backup_size\u003dbackup_info.size, disk_size\u003dtarget_size)"},{"line_number":640,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAXH%2F%2FiFA%3D","line":637,"in_reply_to":"AAAAXH%2F%2FiH4%3D","updated":"2014-04-20 06:48:47.000000000","message":"it\u0027s totally enough for pulling the backup into the instance\n\ni do agree that it\u0027s maybe not enough to execute, but this patch covers only this case, according to community discussion, we decided to do this first then discuss how can we define the way how can we define minimum size of the root disk/volume for each datastore that Trove supports.","commit_id":"a459473832cbe5ecae5deb6f5ceef46c1be14579"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"d88bb0bf44963b4de4a17c494e1214e516185d4c","unresolved":false,"context_lines":[{"line_number":628,"context_line":"            if backup_info.is_running:"},{"line_number":629,"context_line":"                raise exception.BackupNotCompleteError(backup_id\u003dbackup_id)"},{"line_number":630,"context_line":""},{"line_number":631,"context_line":"            if VOLUME_SUPPORT:"},{"line_number":632,"context_line":"                # Instance volume should have enough space for the backup"},{"line_number":633,"context_line":"                # Backup, and volume sizes are in GBs"},{"line_number":634,"context_line":"                target_size \u003d volume_size"}],"source_content_type":"text/x-python","patch_set":31,"id":"baada198_a8ec392b","line":631,"updated":"2014-07-07 09:21:18.000000000","message":"Why have a separate conditional here when you can use the one above to simplify the logic?","commit_id":"3bacd8a5a84701c5f24e206f7a2bc3c09e6e878d"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"d88bb0bf44963b4de4a17c494e1214e516185d4c","unresolved":false,"context_lines":[{"line_number":633,"context_line":"                # Backup, and volume sizes are in GBs"},{"line_number":634,"context_line":"                target_size \u003d volume_size"},{"line_number":635,"context_line":"            else:"},{"line_number":636,"context_line":"                target_size \u003d flavor.disk"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"            if math.ceil(backup_info.size) \u003e target_size:"},{"line_number":639,"context_line":"                raise exception.BackupTooLarge("}],"source_content_type":"text/x-python","patch_set":31,"id":"baada198_e8c9d1ac","line":636,"updated":"2014-07-07 09:21:18.000000000","message":"This should be flavor.ephemeral","commit_id":"3bacd8a5a84701c5f24e206f7a2bc3c09e6e878d"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"c1d0bf6d3feea2fc8b6218978642021d4e0cd053","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"CONF \u003d cfg.CONF"},{"line_number":48,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":49,"context_line":"VOLUME_SUPPORT \u003d CONF.trove_volume_support"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def filter_ips(ips, regex):"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_f782f350","line":49,"updated":"2014-07-10 19:20:02.000000000","message":"It appears that CONF.trove_volume_support is still used in two places in this file. Lines 617 and 734. Shouldn\u0027t those change to VOLUME_SUPPORT?","commit_id":"efc231e88c80476e510ab900697a310d966adf52"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aa027eea6aaa0f5cf5c92d26cfcb86bd8f9d7d47","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"CONF \u003d cfg.CONF"},{"line_number":48,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":49,"context_line":"VOLUME_SUPPORT \u003d CONF.trove_volume_support"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def filter_ips(ips, regex):"}],"source_content_type":"text/x-python","patch_set":33,"id":"baada198_087d88e7","line":49,"in_reply_to":"baada198_f782f350","updated":"2014-07-10 20:43:46.000000000","message":"agreed, will fix that, since i should do manual rebasing.","commit_id":"efc231e88c80476e510ab900697a310d966adf52"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"39e4eaacc71598dcf5630bba445c08d262900dd4","unresolved":false,"context_lines":[{"line_number":636,"context_line":"            target_size \u003d flavor.ephemeral"},{"line_number":637,"context_line":"            if volume_size is not None:"},{"line_number":638,"context_line":"                raise exception.VolumeNotSupported()"},{"line_number":639,"context_line":"            ephemeral_support \u003d datastore_cfg.device_path"},{"line_number":640,"context_line":"            if ephemeral_support:"},{"line_number":641,"context_line":"                if flavor.ephemeral \u003d\u003d 0:"},{"line_number":642,"context_line":"                    raise exception.LocalStorageNotSpecified(flavor\u003dflavor_id)"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_b1ff2765","line":639,"updated":"2014-08-29 20:42:49.000000000","message":"i think if ephermeral storage is supported then we should be using flavor.ephemeral. otherwise we should be using root_gb for local storage","commit_id":"afeaa42bdb780f1d951520fe79ed32572484253e"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"62d07fd57139700365582eaf76dae3418c390675","unresolved":false,"context_lines":[{"line_number":633,"context_line":"            # Backup, and volume sizes are in GBs"},{"line_number":634,"context_line":"            target_size \u003d volume_size"},{"line_number":635,"context_line":"        else:"},{"line_number":636,"context_line":"            target_size \u003d flavor.ephemeral if flavor.ephemeral else flavor.root_gb"},{"line_number":637,"context_line":"            if volume_size is not None:"},{"line_number":638,"context_line":"                raise exception.VolumeNotSupported()"},{"line_number":639,"context_line":"            ephemeral_support \u003d datastore_cfg.device_path"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa98f980_94519ada","line":636,"updated":"2014-09-02 15:51:35.000000000","message":"we should look at flavor.ephemeral if device_path is set.","commit_id":"6640863bafc44f305cbf770968d28400031e6b61"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d3b80c580e75cbe82cdb1f2726d13f3b8a9ca430","unresolved":false,"context_lines":[{"line_number":633,"context_line":"            # Backup, and volume sizes are in GBs"},{"line_number":634,"context_line":"            target_size \u003d volume_size"},{"line_number":635,"context_line":"        else:"},{"line_number":636,"context_line":"            target_size \u003d flavor.ephemeral if flavor.ephemeral else flavor.root_gb"},{"line_number":637,"context_line":"            if volume_size is not None:"},{"line_number":638,"context_line":"                raise exception.VolumeNotSupported()"},{"line_number":639,"context_line":"            ephemeral_support \u003d datastore_cfg.device_path"}],"source_content_type":"text/x-python","patch_set":38,"id":"fa98f980_8ac30d88","line":636,"in_reply_to":"fa98f980_94519ada","updated":"2014-09-03 12:01:33.000000000","message":"Done","commit_id":"6640863bafc44f305cbf770968d28400031e6b61"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"62d07fd57139700365582eaf76dae3418c390675","unresolved":false,"context_lines":[{"line_number":637,"context_line":"            if volume_size is not None:"},{"line_number":638,"context_line":"                raise exception.VolumeNotSupported()"},{"line_number":639,"context_line":"            ephemeral_support \u003d datastore_cfg.device_path"},{"line_number":640,"context_line":"            if ephemeral_support:"},{"line_number":641,"context_line":"                if flavor.ephemeral \u003d\u003d 0:"},{"line_number":642,"context_line":"                    raise exception.LocalStorageNotSpecified(flavor\u003dflavor_id)"},{"line_number":643,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"fa98f980_54f572c9","line":640,"updated":"2014-09-02 15:51:35.000000000","message":"so target_size \u003d flavor.ephemeral should be set here","commit_id":"6640863bafc44f305cbf770968d28400031e6b61"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"d3b80c580e75cbe82cdb1f2726d13f3b8a9ca430","unresolved":false,"context_lines":[{"line_number":637,"context_line":"            if volume_size is not None:"},{"line_number":638,"context_line":"                raise exception.VolumeNotSupported()"},{"line_number":639,"context_line":"            ephemeral_support \u003d datastore_cfg.device_path"},{"line_number":640,"context_line":"            if ephemeral_support:"},{"line_number":641,"context_line":"                if flavor.ephemeral \u003d\u003d 0:"},{"line_number":642,"context_line":"                    raise exception.LocalStorageNotSpecified(flavor\u003dflavor_id)"},{"line_number":643,"context_line":""}],"source_content_type":"text/x-python","patch_set":38,"id":"fa98f980_aabc5107","line":640,"in_reply_to":"fa98f980_54f572c9","updated":"2014-09-03 12:01:33.000000000","message":"Done","commit_id":"6640863bafc44f305cbf770968d28400031e6b61"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"16102a44533ce1567d14f7448fd45603fbf314c8","unresolved":false,"context_lines":[{"line_number":639,"context_line":"            if ephemeral_support:"},{"line_number":640,"context_line":"                if flavor.ephemeral \u003d\u003d 0:"},{"line_number":641,"context_line":"                    raise exception.LocalStorageNotSpecified(flavor\u003dflavor_id)"},{"line_number":642,"context_line":"                else:"},{"line_number":643,"context_line":"                    target_size \u003d (flavor.ephemeral"},{"line_number":644,"context_line":"                                   if flavor.ephemeral else flavor.root_gb)"},{"line_number":645,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"fa98f980_619d2759","line":642,"updated":"2014-09-03 15:15:31.000000000","message":"you don\u0027t need an else here. if it raises exception it will never get to the next line.\n\nif volume_support:\n   target_size \u003d volume_size #volume_storage\nelse:\n    target_size \u003d flavor.root_gb #local_storage\n    if ephemeral_support:\n         target_size \u003d flavor.ephemeral #ephemeral_Storage\n....","commit_id":"3201aaf9e33ac3b2024d7780d6382e45231d5493"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"18b5361c89b068206d3f366c299c32d86c7d0363","unresolved":false,"context_lines":[{"line_number":639,"context_line":"            if ephemeral_support:"},{"line_number":640,"context_line":"                if flavor.ephemeral \u003d\u003d 0:"},{"line_number":641,"context_line":"                    raise exception.LocalStorageNotSpecified(flavor\u003dflavor_id)"},{"line_number":642,"context_line":"                else:"},{"line_number":643,"context_line":"                    target_size \u003d (flavor.ephemeral"},{"line_number":644,"context_line":"                                   if flavor.ephemeral else flavor.root_gb)"},{"line_number":645,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"fa98f980_048e2679","line":642,"in_reply_to":"fa98f980_619d2759","updated":"2014-09-03 16:58:20.000000000","message":"i\u0027ll try to fix it.","commit_id":"3201aaf9e33ac3b2024d7780d6382e45231d5493"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"b58e104d7cbeb25e1403096c4945d95dd37917c0","unresolved":false,"context_lines":[{"line_number":633,"context_line":"            # Backup, and volume sizes are in GBs"},{"line_number":634,"context_line":"            target_size \u003d volume_size"},{"line_number":635,"context_line":"        else:"},{"line_number":636,"context_line":"            target_size \u003d flavor.root_gb  # local_storage"},{"line_number":637,"context_line":"            if datastore_cfg.device_path:"},{"line_number":638,"context_line":"                target_size \u003d flavor.ephemeral  # ephemeral_Storage"},{"line_number":639,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"fa98f980_0756282a","line":636,"updated":"2014-09-03 17:48:21.000000000","message":"hey denis we still want to keep the checks for raising exceptions. In my comments before i mentioned only the changes wrt to target. Sorry I was not more explicit.","commit_id":"f7a3f188656a604e0cc09dcaeaa2e326735ca259"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"30ef14d5afbec4c598e7c9e53fb507d28b8b2321","unresolved":false,"context_lines":[{"line_number":689,"context_line":""},{"line_number":690,"context_line":"            if math.ceil(backup_info.size) \u003e target_size:"},{"line_number":691,"context_line":"                raise exception.BackupTooLarge("},{"line_number":692,"context_line":"                    backup_size\u003dbackup_info.size, disk_size\u003dtarget_size)"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"            if not backup_info.check_swift_object_exist("},{"line_number":695,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":42,"id":"9aa7fdbe_664e7371","line":692,"updated":"2014-10-21 19:06:11.000000000","message":"Since the math above compares ceil(backup_size) and target_size you run the risk of generating an error which reads:\n\nBackup is too large, backup size \u003d 12.2GB, target_size \u003d 12.5GB etc.,","commit_id":"f050797402405d63df5e6e5db3e27c343ebc40c4"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"aa79fd2c1381c086bd50c00ea54dd740f6865ccb","unresolved":false,"context_lines":[{"line_number":689,"context_line":""},{"line_number":690,"context_line":"            if math.ceil(backup_info.size) \u003e target_size:"},{"line_number":691,"context_line":"                raise exception.BackupTooLarge("},{"line_number":692,"context_line":"                    backup_size\u003dbackup_info.size, disk_size\u003dtarget_size)"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"            if not backup_info.check_swift_object_exist("},{"line_number":695,"context_line":"                    context,"}],"source_content_type":"text/x-python","patch_set":42,"id":"9aa7fdbe_575d80e8","line":692,"in_reply_to":"9aa7fdbe_664e7371","updated":"2014-10-22 12:48:54.000000000","message":"Target size can\u0027t be a non-integer value.\nNova wouldn\u0027t allow you to create flavor with rood disk that size is not an integer value.\n\nSame for Cinder.","commit_id":"f050797402405d63df5e6e5db3e27c343ebc40c4"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"a4b023311cf267489285e93cdc446efed3c401b9","unresolved":false,"context_lines":[{"line_number":691,"context_line":"            if backup_info.is_running:"},{"line_number":692,"context_line":"                raise exception.BackupNotCompleteError(backup_id\u003dbackup_id)"},{"line_number":693,"context_line":""},{"line_number":694,"context_line":"            if math.ceil(backup_info.size) \u003e target_size:"},{"line_number":695,"context_line":"                raise exception.BackupTooLarge("},{"line_number":696,"context_line":"                    backup_size\u003dbackup_info.size, disk_size\u003dtarget_size)"},{"line_number":697,"context_line":""}],"source_content_type":"text/x-python","patch_set":44,"id":"9aa7fdbe_62739fe7","line":694,"updated":"2014-10-22 15:17:06.000000000","message":"Denis\u0027 comment in #42 (https://review.openstack.org/#/c/86300/42/trove/instance/models.py,cm) confuses me thoroughly.\n\nThe value of this code which compares \n\nceiling(backup_size) \u003e target_size\n\nOnly makes sense if target_size is potentially non-integral.\n\nBut Denis says that target_size can only be an integer.\n\nIf that\u0027s the case, then\n\nceiling(backup_size) \u003e target_size \n\nis analogous to\n\nbackup_size \u003e target_size\n\nConsidering that we had such a lot of discussion about using ceiling, there has to be something missing here.\n\nMaybe the intent was that it had to be\n\nceiling(backup_size) \u003e\u003d target_size","commit_id":"a5dda9a2af678ca7cdff474f6fa38cb8ed1399f4"},{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"8ee61f3d05c21ffdc438c4a478c047f8f0ee3e50","unresolved":false,"context_lines":[{"line_number":690,"context_line":"            if backup_info.is_running:"},{"line_number":691,"context_line":"                raise exception.BackupNotCompleteError(backup_id\u003dbackup_id)"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"            if backup_info.size \u003e target_size:"},{"line_number":694,"context_line":"                raise exception.BackupTooLarge("},{"line_number":695,"context_line":"                    backup_size\u003dbackup_info.size, disk_size\u003dtarget_size)"},{"line_number":696,"context_line":""}],"source_content_type":"text/x-python","patch_set":45,"id":"9aa7fdbe_ba4743bb","line":693,"updated":"2014-10-23 19:24:12.000000000","message":"I think this is correct and I\u0027d like other reviewers to confirm this for themselves as well.","commit_id":"82b94f5facab9caee9ce19c5e5127bfa7eb8bd49"},{"author":{"_account_id":8214,"name":"Auston McReynolds","email":"amcreynolds@ebaysf.com","username":"amcreynolds"},"change_message_id":"ae99f552069dbab813a0befe23911f3c03aed170","unresolved":false,"context_lines":[{"line_number":673,"context_line":"        if volume_support:"},{"line_number":674,"context_line":"            validate_volume_size(volume_size)"},{"line_number":675,"context_line":"            deltas[\u0027volumes\u0027] \u003d volume_size"},{"line_number":676,"context_line":"            # Instance volume should have enough space for the backup"},{"line_number":677,"context_line":"            # Backup, and volume sizes are in GBs"},{"line_number":678,"context_line":"            target_size \u003d volume_size"},{"line_number":679,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":46,"id":"5a890539_39720ab1","line":676,"updated":"2014-11-26 19:25:30.000000000","message":"this logic is a step in the right direction, but is by no means fool-proof.\nhowever, since this is definitely better than the current situation, let\u0027s merge it.","commit_id":"1611ba0b4f52469b4bdd2de2e55d8cc1af9d7621"}],"trove/tests/api/backups.py":[{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"4787beb8b811dcb95d4e8be32a5616b280b9ff82","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from trove.tests.util.users import Requirements"},{"line_number":28,"context_line":"from trove.tests.config import CONFIG"},{"line_number":29,"context_line":"from troveclient.compat import exceptions"},{"line_number":30,"context_line":"from trove.tests.api import instances"},{"line_number":31,"context_line":"from trove.tests.util import mysql"},{"line_number":32,"context_line":"from trove import tests"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1ae5cdf2_43aa15d5","line":30,"updated":"2014-06-02 21:08:24.000000000","message":"Was it necessary to remove all these imports? I find the newer formatting harder to read.","commit_id":"3b9841e4793f9d8f3178154ca2a6b5a0f07e796b"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"4787beb8b811dcb95d4e8be32a5616b280b9ff82","unresolved":false,"context_lines":[{"line_number":131,"context_line":"            instances.instance_info.dbaas.backups.delete, backup.id)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"class BackupRestoreMixin(object):"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    @classmethod"},{"line_number":137,"context_line":"    def verify_backup(cls, backup_id):"}],"source_content_type":"text/x-python","patch_set":22,"id":"1ae5cdf2_8050935f","line":134,"updated":"2014-06-02 21:08:24.000000000","message":"Why not actually make this class inherited (or \u0027mixed in\u0027) with the classes that use it?\n\nThe all of the classmethods could become normal methods.","commit_id":"3b9841e4793f9d8f3178154ca2a6b5a0f07e796b"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"4787beb8b811dcb95d4e8be32a5616b280b9ff82","unresolved":false,"context_lines":[{"line_number":451,"context_line":"@test(depends_on\u003d[instances.WaitForGuestInstallationToFinish],"},{"line_number":452,"context_line":"      runs_after\u003d[DeleteBackups],"},{"line_number":453,"context_line":"      groups\u003d[GROUP, tests.INSTANCES],"},{"line_number":454,"context_line":"      enabled\u003dCONFIG.fake_mode)"},{"line_number":455,"context_line":"class FakeTestHugeBackupOnSmallInstance(object):"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    report \u003d CONFIG.get_report()"}],"source_content_type":"text/x-python","patch_set":22,"id":"1ae5cdf2_2c4fbb93","line":454,"updated":"2014-06-02 21:08:24.000000000","message":"Please don\u0027t use the enabled flag with config settings like this (or any other variable). It makes figuring out why a test isn\u0027t running very difficult.\n\nInstead, write code like:\n\nif CONFIG.fake_mode:\n     raise SkipTest(\"Must run in fake mode.\")\n\nIt won\u0027t fail the test, just skip it, and skip anything that depends on it as well.\n\nAlso, if the goal is to only run it in fake mode via Tox, there\u0027s no need to add it to the existing groups as the tox tests will run all of the tests.","commit_id":"3b9841e4793f9d8f3178154ca2a6b5a0f07e796b"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"4787beb8b811dcb95d4e8be32a5616b280b9ff82","unresolved":false,"context_lines":[{"line_number":477,"context_line":"        assert_equal(202, instances.instance_info.dbaas.last_http_code)"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    @test(depends_on\u003d[test_create_huge_backup],"},{"line_number":480,"context_line":"          runs_after\u003d[test_create_huge_backup])"},{"line_number":481,"context_line":"    def test_verify_huge_backup_completed(self):"},{"line_number":482,"context_line":"        BackupRestoreMixin.verify_backup(new_backup.id)"},{"line_number":483,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"1ae5cdf2_608aa7c0","line":480,"updated":"2014-06-02 21:08:24.000000000","message":"depends_on implies it runs_after.  So you can remove the runs_after.","commit_id":"3b9841e4793f9d8f3178154ca2a6b5a0f07e796b"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"650391dcfb9a439864e34efad17a129310829562","unresolved":false,"context_lines":[{"line_number":526,"context_line":"@test(depends_on\u003d[WaitForGuestInstallationToFinish],"},{"line_number":527,"context_line":"      runs_after\u003d[DeleteBackups],"},{"line_number":528,"context_line":"      groups\u003d[HUGE_BACKUP_GROUP],"},{"line_number":529,"context_line":"      enabled\u003dnot CONFIG.fake_mode)"},{"line_number":530,"context_line":"class RealTestHugeBackupOnSmallInstance(BackupRestoreMixin):"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    report \u003d CONFIG.get_report()"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_79a20cfe","line":529,"updated":"2014-06-04 20:10:40.000000000","message":"Can you do this enabled the other way as well?","commit_id":"6be6b8618c51cdc7b88f2f40b89491d0b1647a47"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"487a639f51deb949691f53bf3163dc27803dc351","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    @test"},{"line_number":77,"context_line":"    def test_backup_create_instance_not_found(self):"},{"line_number":78,"context_line":"        \"\"\"test create backup with unknown instance.\"\"\""},{"line_number":79,"context_line":"        assert_raises(exceptions.NotFound,"},{"line_number":80,"context_line":"                      instance_info.dbaas.backups.create,"},{"line_number":81,"context_line":"                      BACKUP_NAME, generate_uuid(), BACKUP_DESC)"}],"source_content_type":"text/x-python","patch_set":27,"id":"1ae5cdf2_c5360e03","line":78,"updated":"2014-06-18 14:14:00.000000000","message":"Looks like a merge made many of the help/comments revert to starting with a lower-case letter.","commit_id":"4fa2240274e9d3a77720f28c1645c40fe56955e5"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"487a639f51deb949691f53bf3163dc27803dc351","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @test"},{"line_number":115,"context_line":"    def test_instance_action_right_after_backup_create(self):"},{"line_number":116,"context_line":"        \"\"\"test any instance action while backup is running.\"\"\""},{"line_number":117,"context_line":"        assert_unprocessable("},{"line_number":118,"context_line":"            instance_info.dbaas.instances.resize_instance,"},{"line_number":119,"context_line":"            instance_info.id, 1)"}],"source_content_type":"text/x-python","patch_set":27,"id":"1ae5cdf2_65161af4","line":116,"updated":"2014-06-18 14:14:00.000000000","message":"Another case of lower-cased help string after a merge (I won\u0027t point out any more; there are several).","commit_id":"4fa2240274e9d3a77720f28c1645c40fe56955e5"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"487a639f51deb949691f53bf3163dc27803dc351","unresolved":false,"context_lines":[{"line_number":522,"context_line":"# Current gate crushes with OutOfMemory/MemoryError exceptions"},{"line_number":523,"context_line":"# while filling mysql instance with data that required"},{"line_number":524,"context_line":"# for preparing huge backup that needed for testing scenario"},{"line_number":525,"context_line":"# of failed restoring due to small storage (volume/flavor)"},{"line_number":526,"context_line":"@test(depends_on\u003d[WaitForGuestInstallationToFinish],"},{"line_number":527,"context_line":"      runs_after\u003d[DeleteBackups],"},{"line_number":528,"context_line":"      groups\u003d[HUGE_BACKUP_GROUP])"}],"source_content_type":"text/x-python","patch_set":27,"id":"1ae5cdf2_c50a8ed1","line":525,"updated":"2014-06-18 14:14:00.000000000","message":"How about:\n\n # Current gate crashes with OutOfMemory/MemoryError exceptions\n # while trying to create a large mysql instance.  The backup\n # of this instance is needed to test the scenario of failing\n # to restore due to too small storage (volume/flavor)","commit_id":"4fa2240274e9d3a77720f28c1645c40fe56955e5"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"a8a3a3a5d22ecd60b533604076698884b7ec8667","unresolved":false,"context_lines":[{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    \"\"\""},{"line_number":382,"context_line":"        Wait until the instance is finished restoring from full backup."},{"line_number":383,"context_line":"    \"\"\""},{"line_number":384,"context_line":"    @test(depends_on\u003d[RestoreUsingBackup.test_restore])"},{"line_number":385,"context_line":"    def test_instance_restored(self):"},{"line_number":386,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_adac5689","line":383,"updated":"2014-06-19 15:10:40.000000000","message":"If you\u0027re going to fix this, the text should probably be on the same line as the first triple quote\n http://legacy.python.org/dev/peps/pep-0008/#documentation-strings","commit_id":"4c2e49d07e75a39342f8e3b94152540b1451e244"},{"author":{"_account_id":10215,"name":"Peter Stachowski","email":"peter@tesora.com","username":"peterstac"},"change_message_id":"a8a3a3a5d22ecd60b533604076698884b7ec8667","unresolved":false,"context_lines":[{"line_number":390,"context_line":""},{"line_number":391,"context_line":"    \"\"\""},{"line_number":392,"context_line":"        Wait until the instance is finished restoring from incremental backup."},{"line_number":393,"context_line":"    \"\"\""},{"line_number":394,"context_line":"    @test(depends_on\u003d[RestoreUsingBackup.test_restore_incremental])"},{"line_number":395,"context_line":"    def test_instance_restored_incremental(self):"},{"line_number":396,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_edd01ef9","line":393,"updated":"2014-06-19 15:10:40.000000000","message":"ditto","commit_id":"4c2e49d07e75a39342f8e3b94152540b1451e244"},{"author":{"_account_id":9683,"name":"Mat Lowery","email":"mlowery@ebaysf.com","username":"mat-lowery"},"change_message_id":"5a63680e62fa1df2f971243c2da0ff968be76170","unresolved":false,"context_lines":[{"line_number":531,"context_line":"    def test_create_huge_backup(self):"},{"line_number":532,"context_line":"        if not CONFIG.fake_mode:"},{"line_number":533,"context_line":"            raise SkipTest(\"Must run in fake mode.\")"},{"line_number":534,"context_line":"        global new_backup"},{"line_number":535,"context_line":"        new_backup \u003d instance_info.dbaas.backups.create("},{"line_number":536,"context_line":"            BACKUP_NAME,"},{"line_number":537,"context_line":"            instance_info.id,"}],"source_content_type":"text/x-python","patch_set":30,"id":"1ae5cdf2_d3848a0d","line":534,"updated":"2014-06-23 14:28:50.000000000","message":"SlickNik has stated on other int tests: \"Having globals means that we won\u0027t be able to parallelize such tests.\"","commit_id":"4c2e49d07e75a39342f8e3b94152540b1451e244"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"d88bb0bf44963b4de4a17c494e1214e516185d4c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        invalid_inst_id \u003d \u0027invalid-inst-id\u0027"},{"line_number":62,"context_line":"        try:"},{"line_number":63,"context_line":"            instance_info.dbaas.backups.create("},{"line_number":64,"context_line":"                BACKUP_NAME, invalid_inst_id, BACKUP_DESC)"},{"line_number":65,"context_line":"        except exceptions.BadRequest as e:"},{"line_number":66,"context_line":"            resp, body \u003d instance_info.dbaas.client.last_response"},{"line_number":67,"context_line":"            assert_equal(resp.status, 400)"}],"source_content_type":"text/x-python","patch_set":31,"id":"baada198_085b65f6","line":64,"updated":"2014-07-07 09:21:18.000000000","message":"Why all the random formatting changes here and below?\n\nThis makes the actual diff for this patch hard to read.","commit_id":"3bacd8a5a84701c5f24e206f7a2bc3c09e6e878d"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"d88bb0bf44963b4de4a17c494e1214e516185d4c","unresolved":false,"context_lines":[{"line_number":567,"context_line":"# while trying to fill a large amount of data into mysql instance."},{"line_number":568,"context_line":"# The backup of this instance is needed to test the scenario of failing"},{"line_number":569,"context_line":"# to restore due to too small storage (volume/flavor)"},{"line_number":570,"context_line":"@test(depends_on\u003d[WaitForGuestInstallationToFinish],"},{"line_number":571,"context_line":"      runs_after\u003d[DeleteBackups],"},{"line_number":572,"context_line":"      groups\u003d[HUGE_BACKUP_GROUP])"},{"line_number":573,"context_line":"class RealTestHugeBackupOnSmallInstance(BackupRestoreMixin):"}],"source_content_type":"text/x-python","patch_set":31,"id":"baada198_68c30138","line":570,"updated":"2014-07-07 09:21:18.000000000","message":"What\u0027s the point of adding these tests to a different group so they\u0027re not actually running in the gate? \n\nIf there is a OOM exception, we should try fixing the issue there; or better yet stage a backup with a fake size for the int tests.","commit_id":"3bacd8a5a84701c5f24e206f7a2bc3c09e6e878d"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"39e4eaacc71598dcf5630bba445c08d262900dd4","unresolved":false,"context_lines":[{"line_number":139,"context_line":"class BackupRestoreMixin():"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def verify_backup(self, backup_id):"},{"line_number":142,"context_line":"        def result_is_active():"},{"line_number":143,"context_line":"            backup \u003d instance_info.dbaas.backups.get(backup_id)"},{"line_number":144,"context_line":"            if backup.status \u003d\u003d \"COMPLETED\":"},{"line_number":145,"context_line":"                return True"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_91330b61","line":142,"updated":"2014-08-29 20:42:49.000000000","message":"Really like how you have tried to tidy up the code :) Good work Denis!","commit_id":"afeaa42bdb780f1d951520fe79ed32572484253e"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"39e4eaacc71598dcf5630bba445c08d262900dd4","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    report \u003d CONFIG.get_report()"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"    def tweek_fake_guest(self, size):"},{"line_number":507,"context_line":"        huge_backup_size \u003d size"},{"line_number":508,"context_line":"        from trove.tests.fakes import guestagent"},{"line_number":509,"context_line":"        guestagent.BACKUP_SIZE \u003d huge_backup_size"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_5107b3c9","line":506,"updated":"2014-08-29 20:42:49.000000000","message":"doesnt matter but i think the spelling is tweak :)","commit_id":"afeaa42bdb780f1d951520fe79ed32572484253e"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"39e4eaacc71598dcf5630bba445c08d262900dd4","unresolved":false,"context_lines":[{"line_number":506,"context_line":"    def tweek_fake_guest(self, size):"},{"line_number":507,"context_line":"        huge_backup_size \u003d size"},{"line_number":508,"context_line":"        from trove.tests.fakes import guestagent"},{"line_number":509,"context_line":"        guestagent.BACKUP_SIZE \u003d huge_backup_size"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    @test"},{"line_number":512,"context_line":"    def test_load_mysql_with_data(self):"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_31131702","line":509,"updated":"2014-08-29 20:42:49.000000000","message":"why redefine variable huge_backup_size why cant we just use the arg size?","commit_id":"afeaa42bdb780f1d951520fe79ed32572484253e"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"39e4eaacc71598dcf5630bba445c08d262900dd4","unresolved":false,"context_lines":[{"line_number":524,"context_line":"            BACKUP_DESC)"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        assert_equal(202, instance_info.dbaas.last_http_code)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"    @test(depends_on\u003d[test_create_huge_backup])"},{"line_number":529,"context_line":"    def test_verify_huge_backup_completed(self):"},{"line_number":530,"context_line":"        if not CONFIG.fake_mode:"}],"source_content_type":"text/x-python","patch_set":37,"id":"1abeadc6_31eb17a5","line":527,"updated":"2014-08-29 20:42:49.000000000","message":"Could you add in a test where the flavor is too small as well?","commit_id":"afeaa42bdb780f1d951520fe79ed32572484253e"},{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"caa5b71526dfb5610a4be7c7e7813e31571da32b","unresolved":false,"context_lines":[{"line_number":500,"context_line":""},{"line_number":501,"context_line":"@test(depends_on\u003d[WaitForGuestInstallationToFinish],"},{"line_number":502,"context_line":"      runs_after\u003d[DeleteBackups])"},{"line_number":503,"context_line":"class FakeTestHugeBackupOnSmallInstance(BackupRestoreMixin):"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    report \u003d CONFIG.get_report()"},{"line_number":506,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"fa98f980_4420079b","line":503,"updated":"2014-09-04 15:41:03.000000000","message":"maybe the name could be \nclass BackupSizeGreaterThanInstanceSize ?","commit_id":"60cc308a770e7c2b8a48c0bc7839699921ed4312"}],"trove/tests/api/instances.py":[{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"4787beb8b811dcb95d4e8be32a5616b280b9ff82","unresolved":false,"context_lines":[{"line_number":603,"context_line":"        assert_not_equal(len(securityGroup[0].rules), 0)"},{"line_number":604,"context_line":""},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"class Provisor(object):"},{"line_number":607,"context_line":"    \"\"\""},{"line_number":608,"context_line":"    Contain methods required for the instance provisioning"},{"line_number":609,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"1ae5cdf2_a0910f9b","line":606,"updated":"2014-06-02 21:08:24.000000000","message":"Two big issues with this:\n\n1. This should be in a different pull request. It is too complex to deal with at the same time as we solve this addition to backups. I mean I don\u0027t mind if you do it at the same time, but I was about to +2 your production code work until I saw there was all this refactoring to the test code which I disagreed with, so if you split it and pushed the production code changes separately I\u0027d have approved that.\n\n2. There is merit to a class that can do the create methods for the instance and deal with all the junk in \"instance_info\". The problem? This is using the same global variable as instance_info, which IMO is a huge mistake. So it looks like a class but effectively all the data it touches is the same (like static variables in other languages) so there\u0027s no point in even making it a class.\n\nI\u0027d rather this just be removed as it appears to add encapsulation but doesn\u0027t add any.","commit_id":"3b9841e4793f9d8f3178154ca2a6b5a0f07e796b"},{"author":{"_account_id":694,"name":"Tim Simpson","email":"tim.simpson@rackspace.com","username":"tim-simpson"},"change_message_id":"650391dcfb9a439864e34efad17a129310829562","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        if not hasattr(result, \u0027hostname\u0027):"},{"line_number":130,"context_line":"            return result.ip[0]"},{"line_number":131,"context_line":"        else:"},{"line_number":132,"context_line":"            return result.server[\u0027addresses\u0027]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_local_id(self):"},{"line_number":135,"context_line":"        mgmt_instance \u003d self.dbaas_admin.management.show(self.id)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_993fd886","line":132,"updated":"2014-06-04 20:10:40.000000000","message":"An entirely new method isn\u0027t necessary. Instead, change \"get_address\" as follows:\n\ndef get_address(selt, instance_id\u003dNone):\n     if instance_id is None:\n        instance_id \u003d self.id\n     result \u003d self.dbaas_admin.mgmt.instances.show(instance_id)\n     ...","commit_id":"6be6b8618c51cdc7b88f2f40b89491d0b1647a47"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"631be784acb161f8093ca047e44c08b1cd234948","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        if not hasattr(result, \u0027hostname\u0027):"},{"line_number":130,"context_line":"            return result.ip[0]"},{"line_number":131,"context_line":"        else:"},{"line_number":132,"context_line":"            return result.server[\u0027addresses\u0027]"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    def get_local_id(self):"},{"line_number":135,"context_line":"        mgmt_instance \u003d self.dbaas_admin.management.show(self.id)"}],"source_content_type":"text/x-python","patch_set":24,"id":"1ae5cdf2_990d18eb","line":132,"in_reply_to":"1ae5cdf2_993fd886","updated":"2014-06-04 20:12:08.000000000","message":"get that","commit_id":"6be6b8618c51cdc7b88f2f40b89491d0b1647a47"}],"trove/tests/fakes/nova.py":[{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"9829f6ea5029e83b3520aac95f8699a224576f82","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from trove.common.exception import PollTimeOut"},{"line_number":18,"context_line":"from trove.common import instance as rd_instance"},{"line_number":19,"context_line":"from trove.openstack.common import log as logging"},{"line_number":20,"context_line":"from trove.openstack.common.gettextutils import _"},{"line_number":21,"context_line":"from trove.tests.fakes.common import authorize"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import eventlet"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAW3%2F%2FY0w%3D","line":20,"updated":"2014-04-14 23:15:24.000000000","message":"Extra import?\nDon\u0027t see this used anywhere.","commit_id":"b5d59e369de34cb019fee7e38b9f388f602704d6"},{"author":{"_account_id":5293,"name":"Nikhil","email":"SlickNik@gmail.com","username":"slicknik"},"change_message_id":"c7c076ad5dd1ba7ccd73bcba55a021c0e78bb740","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from trove.common.exception import PollTimeOut"},{"line_number":18,"context_line":"from trove.common import instance as rd_instance"},{"line_number":19,"context_line":"from trove.openstack.common import log as logging"},{"line_number":20,"context_line":"from trove.openstack.common.gettextutils import _"},{"line_number":21,"context_line":"from trove.tests.fakes.common import authorize"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import eventlet"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAXH%2F%2F2Yg%3D","line":20,"in_reply_to":"AAAAW3%2F%2FSI4%3D","updated":"2014-04-17 00:36:23.000000000","message":"Cool. Thanks!","commit_id":"b5d59e369de34cb019fee7e38b9f388f602704d6"},{"author":{"_account_id":8415,"name":"Denis M.","email":"lildee1991@gmail.com","username":"dmakogon"},"change_message_id":"c65b953d910ef00c60793a450a4a6e863181fd5e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"from trove.common.exception import PollTimeOut"},{"line_number":18,"context_line":"from trove.common import instance as rd_instance"},{"line_number":19,"context_line":"from trove.openstack.common import log as logging"},{"line_number":20,"context_line":"from trove.openstack.common.gettextutils import _"},{"line_number":21,"context_line":"from trove.tests.fakes.common import authorize"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import eventlet"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAW3%2F%2FSI4%3D","line":20,"in_reply_to":"AAAAW3%2F%2FY0w%3D","updated":"2014-04-15 15:29:03.000000000","message":"Lines #:\n271\n276\n298\n321\n341\n351\n391\n483\n503\n513","commit_id":"b5d59e369de34cb019fee7e38b9f388f602704d6"}],"trove/tests/unittests/instance/test_instance_models.py":[{"author":{"_account_id":9664,"name":"amrith","email":"amrith.kumar@gmail.com","username":"amrith"},"change_message_id":"30ef14d5afbec4c598e7c9e53fb507d28b8b2321","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        models.create_nova_client \u003d self.orig_client"},{"line_number":164,"context_line":"        super(CreateInstanceTest, self).tearDown()"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def test_exception_on_invalid_backup_size(self):"},{"line_number":167,"context_line":"        self.assertRaises("},{"line_number":168,"context_line":"            exception.BackupTooLarge, models.Instance.create,"},{"line_number":169,"context_line":"            self.context, self.name, self.flavor_id,"}],"source_content_type":"text/x-python","patch_set":42,"id":"9aa7fdbe_c680ff48","line":166,"updated":"2014-10-21 19:06:11.000000000","message":"it would be nice if the test exercised something when the backup size and volume size were a little closer to each other than 1 and 10,000.00.\n\nFor example, exercising the CEIL() logic","commit_id":"f050797402405d63df5e6e5db3e27c343ebc40c4"}]}
