)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7051,"name":"Swapnil Kulkarni","email":"skulkarn@redhat.com","username":"swapnilkulkarni2608"},"change_message_id":"cf2277ed382d63835382fd619a0972e23d362f21","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Peter Hamilton \u003cpeter.hamilton@jhuapl.edu\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-13 17:43:26 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add encryption-type-update to cinderclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This modification adds support for updating volume encryption types."},{"line_number":10,"context_line":"The encryption-type-update command requires a single argument, the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAWH%2F%2BzJg%3D","line":7,"updated":"2014-03-24 09:14:35.000000000","message":"I think there is a feature freeze in v1. Someone from core can take the final call.","commit_id":"116acc8ef6974680e0261b48c1ad5346365beb3f"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"396cfe8a6c02e1908ad7320c434b93f454c45d71","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Peter Hamilton \u003cpeter.hamilton@jhuapl.edu\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-02-13 17:43:26 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add encryption-type-update to cinderclient"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This modification adds support for updating volume encryption types."},{"line_number":10,"context_line":"The encryption-type-update command requires a single argument, the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAWH%2F%2ByY4%3D","line":7,"in_reply_to":"AAAAWH%2F%2BzJg%3D","updated":"2014-03-24 11:19:13.000000000","message":"John Griffith has given related patches for v1 a pass in the past due to these being a single CRUD feature set for encryption types (see https://review.openstack.org/#/c/57245/ for more info). Thanks for looking at the patch!","commit_id":"116acc8ef6974680e0261b48c1ad5346365beb3f"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"80f923f52e300065674addabe34fe9df0d44431d","unresolved":false,"context_lines":[{"line_number":12,"context_line":"updated, and up to four optional arguments representing new values for"},{"line_number":13,"context_line":"the encryption type attributes. The update implementation supports three"},{"line_number":14,"context_line":"use cases:"},{"line_number":15,"context_line":"    "},{"line_number":16,"context_line":"1. The user wants to specify new values for attributes of an"},{"line_number":17,"context_line":"   encryption type."},{"line_number":18,"context_line":"   - include the attribute and its new value at invocation"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3afb71cf_a2224ba1","line":15,"updated":"2015-06-09 20:48:54.000000000","message":"There\u0027s some excess white space.","commit_id":"8edb9dd11f884d2b0831e00586f094fabc8bed2a"}],"cinderclient/tests/unit/v1/test_shell.py":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"f24c53f2eefbe105c0abeb9198474707b6d861af","unresolved":false,"context_lines":[{"line_number":401,"context_line":"        args \u003d \u0027 \u0027.join([\u0027%s %s\u0027 % (k, v) for k, v in parameters.items()])"},{"line_number":402,"context_line":"        expected_pairs \u003d [(k.strip(\u0027-\u0027).replace(\u0027-\u0027, \u0027_\u0027), v) for k, v in"},{"line_number":403,"context_line":"                          parameters.items()]"},{"line_number":404,"context_line":"        expected \u003d {\u0027encryption\u0027: dict(expected_pairs)}"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        self.run_command(\u0027encryption-type-update 1 %s\u0027 % args)"},{"line_number":407,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa53dc9_d62c6f4c","line":404,"updated":"2015-04-07 15:27:57.000000000","message":"As clever as this is, this unit test would be easier to read if the args and expected dictionary were created by hand rather than by manipulation.","commit_id":"236913bb71d862f1a9bcc8612f851306bc693616"}],"cinderclient/tests/unit/v2/test_shell.py":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"f24c53f2eefbe105c0abeb9198474707b6d861af","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        args \u003d \u0027 \u0027.join([\u0027%s %s\u0027 % (k, v) for k, v in parameters.items()])"},{"line_number":567,"context_line":"        expected_pairs \u003d [(k.strip(\u0027-\u0027).replace(\u0027-\u0027, \u0027_\u0027), v) for k, v in"},{"line_number":568,"context_line":"                          parameters.items()]"},{"line_number":569,"context_line":"        expected \u003d {\u0027encryption\u0027: dict(expected_pairs)}"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"        self.run_command(\u0027encryption-type-update 1 %s\u0027 % args)"},{"line_number":572,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9aa53dc9_769ec357","line":569,"updated":"2015-04-07 15:27:57.000000000","message":"See comment on v1.","commit_id":"236913bb71d862f1a9bcc8612f851306bc693616"}],"cinderclient/tests/utils.py":[{"author":{"_account_id":5538,"name":"Rushi Agrawal","email":"rushi.openstack@gmail.com","username":"rushiagr"},"change_message_id":"4965b538adda969b6391a96fc5c8efebc72ac0d8","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        return self._text"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"@contextmanager"},{"line_number":106,"context_line":"def expand_sys_argv(parameters):"},{"line_number":107,"context_line":"    # Save sys.argv state and add parameter keywords"},{"line_number":108,"context_line":"    len_argv \u003d len(sys.argv)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_d841c53a","line":105,"updated":"2014-12-09 12:42:20.000000000","message":"I think tests related to sys.argv is not required now, and should be removed..","commit_id":"b5d2ba00834552f3a520b94a3bca637cec8a914f"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"cfd444919d836de6ce2253d0e3775cfdf1c4572e","unresolved":false,"context_lines":[{"line_number":102,"context_line":"        return self._text"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"@contextmanager"},{"line_number":106,"context_line":"def expand_sys_argv(parameters):"},{"line_number":107,"context_line":"    # Save sys.argv state and add parameter keywords"},{"line_number":108,"context_line":"    len_argv \u003d len(sys.argv)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3a961159_58195587","line":105,"in_reply_to":"3a961159_d841c53a","updated":"2014-12-09 13:15:13.000000000","message":"Done","commit_id":"b5d2ba00834552f3a520b94a3bca637cec8a914f"}],"cinderclient/tests/v1/test_shell.py":[{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"b3e0a3b871f462758004424d4defb4e01c583a3d","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        self.run_command(\u0027encryption-type-update 1\u0027)"},{"line_number":291,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":292,"context_line":"        self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":293,"context_line":"        self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_encryption_type_delete(self):"},{"line_number":296,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F6CI%3D","line":293,"updated":"2014-04-16 15:20:14.000000000","message":"IMO the test could include the available parameters to check that those parameter are parser correctly and the request body is correctly assembled","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"8270170b77e39d1e6546c390b3f83e4b39336415","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        self.run_command(\u0027encryption-type-update 1\u0027)"},{"line_number":291,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":292,"context_line":"        self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":293,"context_line":"        self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_encryption_type_delete(self):"},{"line_number":296,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FTuw%3D","line":293,"in_reply_to":"AAAAXH%2F%2F5ng%3D","updated":"2014-04-22 16:21:06.000000000","message":"So this turns out to be trickier than I first thought. encryption-type-update checks sys.argv to determine if the user specified certain parameters to be updated. It is not sufficient to simply look at args within encryption-type-update because args always contains the optional parameters; it just maps them to some default value (usually None). The problem is that None is actually a valid value for some of these encryption-type parameters. If sys.argv is not checked, the user would need to provide every optional parameter (no longer really optional) to avoid setting the ones she omitted to None.\n\nWhy does this matter? Because the tests do not populate sys.argv with the parameters when invoked. The sys.argv check then fails and encryption-type-update always passes on an empty update body when run in a testing context.\n\nOther update-style commands in python-cinderclient use a metadata construct to handle this problem; users provide a list of key\u003dvalue pairs to specify which attributes to update. However, this does not capture the notion of a default value, which the encryption provider provides in the case of encryption-types. Users would have to explicitly indicate that they want to use a provider default (e.g., key-size\u003ddefault) when updating an encryption-type, as opposed to simply providing the parameter with no value (e.g., --key-size), as is done now. This would also require \"reserved word\" status for whatever symbol is used to indicate the use of the provider default (e.g., \"default\" in the above example), which I am uncomfortable with.\n\nI\u0027m on the fence. I think the current implementation nicely expresses the three different use cases for encryption-type-update. The downside is that it has to check against sys.argv and thus cannot be fully tested. The metadata implementation would allow for full testing but introduces some kludgey artifacts when dealing with setting default values.\n\nI\u0027m inclined to leave this test case, and the encryption-type-update implementation, as is.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"d43b4a4b20638967c6ac00e99c886858adf1680e","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        self.run_command(\u0027encryption-type-update 1\u0027)"},{"line_number":291,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":292,"context_line":"        self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":293,"context_line":"        self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_encryption_type_delete(self):"},{"line_number":296,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F5ng%3D","line":293,"in_reply_to":"AAAAXH%2F%2F6CI%3D","updated":"2014-04-16 15:50:56.000000000","message":"Good suggestion, I\u0027ll look into it.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"7e6fd880982112bf90f969f03eea5e0cf620f020","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        self.run_command(\u0027encryption-type-update 1\u0027)"},{"line_number":291,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":292,"context_line":"        self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":293,"context_line":"        self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_encryption_type_delete(self):"},{"line_number":296,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FLcw%3D","line":293,"in_reply_to":"AAAAXH%2F%2FLqc%3D","updated":"2014-04-23 14:23:43.000000000","message":"After further consideration, one way to get around the problem with the above test would be to simply manually add the test parameters to sys.argv before the test and then remove them once the test is complete. This is super kludgey in my view but I\u0027m willing to try it.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"663f43410c5ca7828abf3000a4aa5e8ddef12fec","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        self.run_command(\u0027encryption-type-update 1\u0027)"},{"line_number":291,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":292,"context_line":"        self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":293,"context_line":"        self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_encryption_type_delete(self):"},{"line_number":296,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FLqc%3D","line":293,"in_reply_to":"AAAAXH%2F%2FTNE%3D","updated":"2014-04-23 14:02:36.000000000","message":"I agree that those are the correct tests. However, the second test will not work with encryption-type-update as it is currently written. The update parameters (e.g., --provider, --cipher) will not show up in sys.argv, so there is no way to know if the test PUT command actually specified values for those parameters. encryption-type-update will not parse the values and the resulting encryption body produced will always be an empty dictionary. This is an artifact of the testing environment and the current implementation of encryption-type-update. To my knowledge, there is no way around this without changing the implementation of encryption-type-update, as I described in my last post.\n\nHowever, working through this testing issue has revealed an incorrect assumption I made with the testing framework for these new update methods. I\u0027ve addressed this in fakes.py and test_volume_encryption_types.py, which will be included in the new patch.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"983624a45666fe4faa05281a1dcd1765d9a9b3fc","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        self.run_command(\u0027encryption-type-update 1\u0027)"},{"line_number":291,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":292,"context_line":"        self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":293,"context_line":"        self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def test_encryption_type_delete(self):"},{"line_number":296,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FTNE%3D","line":293,"in_reply_to":"AAAAXH%2F%2FTuw%3D","updated":"2014-04-22 16:41:38.000000000","message":"IMO the 2 valid test here are:\n\n - self.run_command(\u0027encryption-type-update 1\u0027)\n   self.assert_called_anytime(\u0027PUT\u0027, /types/1/encryption/provider\u0027 , body\u003dexpected_body1)\n\n - self.run_command(\u0027encryption-type-update --provider my_provider [....all other parameters] 1\u0027)\n   self.assert_called_anytime(\u0027PUT\u0027, /types/1/encryption/provider\u0027 , body\u003dexpected_body2)\n\nwhere expected_body1 is simply {}\nand expected_body2 has all the parameters correcly parse (to test that the logic that populate the body is correct with the corrects keys)","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"}],"cinderclient/tests/v2/test_shell.py":[{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"b3e0a3b871f462758004424d4defb4e01c583a3d","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        self.run_command(\u0027encryption-type-update 1\u0027)"},{"line_number":279,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":280,"context_line":"        self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":281,"context_line":"        self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def test_encryption_type_delete(self):"},{"line_number":284,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F6CQ%3D","line":281,"updated":"2014-04-16 15:20:14.000000000","message":"IMO the test could include the available parameters to check that those parameter are parser correctly and the request body is correctly assembled","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"8270170b77e39d1e6546c390b3f83e4b39336415","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        self.run_command(\u0027encryption-type-update 1\u0027)"},{"line_number":279,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":280,"context_line":"        self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":281,"context_line":"        self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def test_encryption_type_delete(self):"},{"line_number":284,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FTs4%3D","line":281,"in_reply_to":"AAAAXH%2F%2F5nU%3D","updated":"2014-04-22 16:21:06.000000000","message":"See v1/test_shell.py long comment.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"d43b4a4b20638967c6ac00e99c886858adf1680e","unresolved":false,"context_lines":[{"line_number":278,"context_line":"        self.run_command(\u0027encryption-type-update 1\u0027)"},{"line_number":279,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":280,"context_line":"        self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":281,"context_line":"        self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027)"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"    def test_encryption_type_delete(self):"},{"line_number":284,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F5nU%3D","line":281,"in_reply_to":"AAAAXH%2F%2F6CQ%3D","updated":"2014-04-16 15:50:56.000000000","message":"See v2/test_shell.py comment.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"1488b526e2ed8caf5115afcd422c29f3883aa60d","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":293,"context_line":"            self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":294,"context_line":"            self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027,"},{"line_number":295,"context_line":"                                       body\u003dexpected)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def test_encryption_type_update_no_attributes(self):"},{"line_number":298,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXH%2F%2FBBk%3D","line":295,"updated":"2014-04-24 16:31:02.000000000","message":"Interesting way to test this. \nNow I see why default\u003dargparse.SUPPRESS is not enough and you need to check un sys.argv\n\nBut due to the fact that using optional parameters alone to add in the body the defaults parameters, IMO you need an extra test, in which you test  for example\n\n\u0027encryption-type-update 1 --provider\u0027","commit_id":"a00214c3da2179c28f8b36ca3c5b33cf1df47c31"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"051c948118f40117752cdb8291bf321bb44ea721","unresolved":false,"context_lines":[{"line_number":292,"context_line":"            self.assert_called(\u0027GET\u0027, \u0027/types/1/encryption\u0027)"},{"line_number":293,"context_line":"            self.assert_called_anytime(\u0027GET\u0027, \u0027/types/1\u0027)"},{"line_number":294,"context_line":"            self.assert_called_anytime(\u0027PUT\u0027, \u0027/types/1/encryption/provider\u0027,"},{"line_number":295,"context_line":"                                       body\u003dexpected)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def test_encryption_type_update_no_attributes(self):"},{"line_number":298,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAXH%2F%2FA60%3D","line":295,"in_reply_to":"AAAAXH%2F%2FBBk%3D","updated":"2014-04-24 16:45:59.000000000","message":"I agree. I\u0027ll add in a couple more tests to cover this case. Thanks, Juan!","commit_id":"a00214c3da2179c28f8b36ca3c5b33cf1df47c31"}],"cinderclient/v1/shell.py":[{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"b3e0a3b871f462758004424d4defb4e01c583a3d","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"           help\u003d\"Encryption algorithm/mode to use (e.g., aes-xts-plain64). \""},{"line_number":1192,"context_line":"           \"Provide parameter without value to set to provider default. \""},{"line_number":1193,"context_line":"           \"(Optional)\")"},{"line_number":1194,"context_line":"@utils.arg(\u0027--key_size\u0027,"},{"line_number":1195,"context_line":"           metavar\u003d\u0027\u003ckey_size\u003e\u0027,"},{"line_number":1196,"context_line":"           type\u003dint,"},{"line_number":1197,"context_line":"           nargs\u003d\u0027?\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F6Ls%3D","line":1194,"updated":"2014-04-16 15:20:14.000000000","message":"I think convention require --key-size","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"e68003b32a75cc1539c6c30fb8478e0b77c26b3c","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"           help\u003d\"Encryption algorithm/mode to use (e.g., aes-xts-plain64). \""},{"line_number":1192,"context_line":"           \"Provide parameter without value to set to provider default. \""},{"line_number":1193,"context_line":"           \"(Optional)\")"},{"line_number":1194,"context_line":"@utils.arg(\u0027--key_size\u0027,"},{"line_number":1195,"context_line":"           metavar\u003d\u0027\u003ckey_size\u003e\u0027,"},{"line_number":1196,"context_line":"           type\u003dint,"},{"line_number":1197,"context_line":"           nargs\u003d\u0027?\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F4%2F0%3D","line":1194,"in_reply_to":"AAAAXH%2F%2F5u4%3D","updated":"2014-04-16 16:56:26.000000000","message":"Yes, perhaps if you have time you could also change for encryptation family function (do_encryptation_type_create). But only if you have time.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"d43b4a4b20638967c6ac00e99c886858adf1680e","unresolved":false,"context_lines":[{"line_number":1191,"context_line":"           help\u003d\"Encryption algorithm/mode to use (e.g., aes-xts-plain64). \""},{"line_number":1192,"context_line":"           \"Provide parameter without value to set to provider default. \""},{"line_number":1193,"context_line":"           \"(Optional)\")"},{"line_number":1194,"context_line":"@utils.arg(\u0027--key_size\u0027,"},{"line_number":1195,"context_line":"           metavar\u003d\u0027\u003ckey_size\u003e\u0027,"},{"line_number":1196,"context_line":"           type\u003dint,"},{"line_number":1197,"context_line":"           nargs\u003d\u0027?\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F5u4%3D","line":1194,"in_reply_to":"AAAAXH%2F%2F6Ls%3D","updated":"2014-04-16 15:50:56.000000000","message":"Hmm. I think you\u0027re right. All (or almost all) examples I see of --xxx_xxx appear to be deprecated with argparse.SUPPRESS, with the --xxx-xxx form being preferred. Thanks!","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"b3e0a3b871f462758004424d4defb4e01c583a3d","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"           help\u003d\"Size of the encryption key, in bits (e.g., 128, 256). \""},{"line_number":1201,"context_line":"           \"Provide parameter without value to set to provider default. \""},{"line_number":1202,"context_line":"           \"(Optional)\")"},{"line_number":1203,"context_line":"@utils.arg(\u0027--control_location\u0027,"},{"line_number":1204,"context_line":"           metavar\u003d\u0027\u003ccontrol_location\u003e\u0027,"},{"line_number":1205,"context_line":"           choices\u003d[\u0027front-end\u0027, \u0027back-end\u0027],"},{"line_number":1206,"context_line":"           type\u003dstr,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F6LY%3D","line":1203,"updated":"2014-04-16 15:20:14.000000000","message":"again, I think it should be --control-location","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"d43b4a4b20638967c6ac00e99c886858adf1680e","unresolved":false,"context_lines":[{"line_number":1200,"context_line":"           help\u003d\"Size of the encryption key, in bits (e.g., 128, 256). \""},{"line_number":1201,"context_line":"           \"Provide parameter without value to set to provider default. \""},{"line_number":1202,"context_line":"           \"(Optional)\")"},{"line_number":1203,"context_line":"@utils.arg(\u0027--control_location\u0027,"},{"line_number":1204,"context_line":"           metavar\u003d\u0027\u003ccontrol_location\u003e\u0027,"},{"line_number":1205,"context_line":"           choices\u003d[\u0027front-end\u0027, \u0027back-end\u0027],"},{"line_number":1206,"context_line":"           type\u003dstr,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F5xA%3D","line":1203,"in_reply_to":"AAAAXH%2F%2F6LY%3D","updated":"2014-04-16 15:50:56.000000000","message":"See above.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"88edcc9da7841263dcd765bbbf3845df3704699d","unresolved":false,"context_lines":[{"line_number":1248,"context_line":""},{"line_number":1249,"context_line":"    # An argument should only be pulled if the user specified the parameter."},{"line_number":1250,"context_line":"    body \u003d {}"},{"line_number":1251,"context_line":"    if hasattr(args, \u0027provider\u0027):"},{"line_number":1252,"context_line":"        body[\u0027provider\u0027] \u003d args.provider"},{"line_number":1253,"context_line":"    if hasattr(args, \u0027cipher\u0027):"},{"line_number":1254,"context_line":"        body[\u0027cipher\u0027] \u003d args.cipher"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_e23932f3","line":1251,"updated":"2014-12-10 22:36:32.000000000","message":"I prefer to write something like:\nfor attr in [\u0027provider\u0027, \u0027cipher\u0027]:\n    if hasattr(args, attr):\n        body[attr] \u003d getattr(args, attr)\n\nIt\u0027s just IMO and thing to discuss","commit_id":"9ecadf9e7f1191dfe7fbf89c649fa8941e6cdc6c"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"4e8adfbe6310f55048e0fb18612efe3addba71b4","unresolved":false,"context_lines":[{"line_number":1248,"context_line":""},{"line_number":1249,"context_line":"    # An argument should only be pulled if the user specified the parameter."},{"line_number":1250,"context_line":"    body \u003d {}"},{"line_number":1251,"context_line":"    if hasattr(args, \u0027provider\u0027):"},{"line_number":1252,"context_line":"        body[\u0027provider\u0027] \u003d args.provider"},{"line_number":1253,"context_line":"    if hasattr(args, \u0027cipher\u0027):"},{"line_number":1254,"context_line":"        body[\u0027cipher\u0027] \u003d args.cipher"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a961159_6b80a846","line":1251,"in_reply_to":"3a961159_e23932f3","updated":"2014-12-11 13:32:16.000000000","message":"Yep, I agree, I definitely like this better. I\u0027ll update real quick.","commit_id":"9ecadf9e7f1191dfe7fbf89c649fa8941e6cdc6c"}],"cinderclient/v2/shell.py":[{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"b3e0a3b871f462758004424d4defb4e01c583a3d","unresolved":false,"context_lines":[{"line_number":1323,"context_line":"           help\u003d\"Encryption algorithm/mode to use (e.g., aes-xts-plain64). \""},{"line_number":1324,"context_line":"           \"Provide parameter without value to set to provider default. \""},{"line_number":1325,"context_line":"           \"(Optional)\")"},{"line_number":1326,"context_line":"@utils.arg(\u0027--key_size\u0027,"},{"line_number":1327,"context_line":"           metavar\u003d\u0027\u003ckey_size\u003e\u0027,"},{"line_number":1328,"context_line":"           type\u003dint,"},{"line_number":1329,"context_line":"           nargs\u003d\u0027?\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F6K8%3D","line":1326,"updated":"2014-04-16 15:20:14.000000000","message":"I think this should be --key-size by convention","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"d43b4a4b20638967c6ac00e99c886858adf1680e","unresolved":false,"context_lines":[{"line_number":1323,"context_line":"           help\u003d\"Encryption algorithm/mode to use (e.g., aes-xts-plain64). \""},{"line_number":1324,"context_line":"           \"Provide parameter without value to set to provider default. \""},{"line_number":1325,"context_line":"           \"(Optional)\")"},{"line_number":1326,"context_line":"@utils.arg(\u0027--key_size\u0027,"},{"line_number":1327,"context_line":"           metavar\u003d\u0027\u003ckey_size\u003e\u0027,"},{"line_number":1328,"context_line":"           type\u003dint,"},{"line_number":1329,"context_line":"           nargs\u003d\u0027?\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F5pE%3D","line":1326,"in_reply_to":"AAAAXH%2F%2F6K8%3D","updated":"2014-04-16 15:50:56.000000000","message":"See v1/shell.py comments.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":9450,"name":"Juan Manuel Ollé","email":"juan.m.olle@intel.com","username":"jmolle"},"change_message_id":"b3e0a3b871f462758004424d4defb4e01c583a3d","unresolved":false,"context_lines":[{"line_number":1332,"context_line":"           help\u003d\"Size of the encryption key, in bits (e.g., 128, 256). \""},{"line_number":1333,"context_line":"           \"Provide parameter without value to set to provider default. \""},{"line_number":1334,"context_line":"           \"(Optional)\")"},{"line_number":1335,"context_line":"@utils.arg(\u0027--control_location\u0027,"},{"line_number":1336,"context_line":"           metavar\u003d\u0027\u003ccontrol_location\u003e\u0027,"},{"line_number":1337,"context_line":"           choices\u003d[\u0027front-end\u0027, \u0027back-end\u0027],"},{"line_number":1338,"context_line":"           type\u003dstr,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F6LI%3D","line":1335,"updated":"2014-04-16 15:20:14.000000000","message":"I think it shoudl be --control-location","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"d43b4a4b20638967c6ac00e99c886858adf1680e","unresolved":false,"context_lines":[{"line_number":1332,"context_line":"           help\u003d\"Size of the encryption key, in bits (e.g., 128, 256). \""},{"line_number":1333,"context_line":"           \"Provide parameter without value to set to provider default. \""},{"line_number":1334,"context_line":"           \"(Optional)\")"},{"line_number":1335,"context_line":"@utils.arg(\u0027--control_location\u0027,"},{"line_number":1336,"context_line":"           metavar\u003d\u0027\u003ccontrol_location\u003e\u0027,"},{"line_number":1337,"context_line":"           choices\u003d[\u0027front-end\u0027, \u0027back-end\u0027],"},{"line_number":1338,"context_line":"           type\u003dstr,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2F5og%3D","line":1335,"in_reply_to":"AAAAXH%2F%2F6LI%3D","updated":"2014-04-16 15:50:56.000000000","message":"See above.","commit_id":"f188366b73bed91985d079127e43fd59435ce8af"}]}
