)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"9c6eafb16a51e954537817ab648767545d0c59a2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Haomeng, Wang \u003cwhaom@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-16 03:18:01 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"validate the command empty arguments"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ironic commands does not validate the empty arguments"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5aa745d1_7a81308f","line":7,"updated":"2015-04-16 03:29:51.000000000","message":"Ensure command line arguments are not empty","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ca02c25dc9798bbb5830d65cb94363db4ac2b280","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Haomeng, Wang \u003cwhaom@cn.ibm.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-04-16 03:18:01 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"validate the command empty arguments"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ironic commands does not validate the empty arguments"},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5aa745d1_0bbbfcc5","line":7,"in_reply_to":"5aa745d1_7a81308f","updated":"2015-04-16 06:23:43.000000000","message":"Done","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"9c6eafb16a51e954537817ab648767545d0c59a2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"validate the command empty arguments"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ironic commands does not validate the empty arguments"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch adds the empty arguments validation from client side to raise"},{"line_number":12,"context_line":"command exception if command argument is empty string or blank spaces."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5aa745d1_3a4a8884","line":9,"updated":"2015-04-16 03:29:51.000000000","message":"Ironic does not ensure that arguments are not empty.","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ca02c25dc9798bbb5830d65cb94363db4ac2b280","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"validate the command empty arguments"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"ironic commands does not validate the empty arguments"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch adds the empty arguments validation from client side to raise"},{"line_number":12,"context_line":"command exception if command argument is empty string or blank spaces."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5aa745d1_ebafb07b","line":9,"in_reply_to":"5aa745d1_3a4a8884","updated":"2015-04-16 06:23:43.000000000","message":"Done","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"9c6eafb16a51e954537817ab648767545d0c59a2","unresolved":false,"context_lines":[{"line_number":9,"context_line":"ironic commands does not validate the empty arguments"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch adds the empty arguments validation from client side to raise"},{"line_number":12,"context_line":"command exception if command argument is empty string or blank spaces."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ia34957922006da5ecbbfc7483040d67ac51f0ada"},{"line_number":15,"context_line":"Closes-Bug: 1442436"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5aa745d1_9a5bdc54","line":12,"updated":"2015-04-16 03:29:51.000000000","message":"This patch adds checks to the client to ensure that command line arguments are not empty strings or only whitespace.  It will raise a command exception if a command line argument is an empty string or only whitespace.","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ca02c25dc9798bbb5830d65cb94363db4ac2b280","unresolved":false,"context_lines":[{"line_number":9,"context_line":"ironic commands does not validate the empty arguments"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This patch adds the empty arguments validation from client side to raise"},{"line_number":12,"context_line":"command exception if command argument is empty string or blank spaces."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ia34957922006da5ecbbfc7483040d67ac51f0ada"},{"line_number":15,"context_line":"Closes-Bug: 1442436"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5aa745d1_cbb4f4d2","line":12,"in_reply_to":"5aa745d1_9a5bdc54","updated":"2015-04-16 06:23:43.000000000","message":"Done","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"}],"ironicclient/common/utils.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"87635d47f027a5778e448cab31b1fa35319e207b","unresolved":false,"context_lines":[{"line_number":250,"context_line":"def check_empty_uuid(uuid):"},{"line_number":251,"context_line":"    if not uuid.strip():"},{"line_number":252,"context_line":"        raise exc.CommandError(_(\u0027The uuid should not be empty or \u0027"},{"line_number":253,"context_line":"                                 \u0027blank spaces\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"dac4157f_0af6438f","line":253,"updated":"2015-04-20 16:37:33.000000000","message":"My suggestion is to generalize this so that it can be used for any argument that shouldn\u0027t be empty.\n\nEg:\ncheck_empty_arg(arg, arg_descriptor)\n\nwhere arg_descriptor is the string used in the msg to the user, eg: \u0027%(arg)s cannot be empty or only have blank spaces\u0027 % {arg:arg_descriptor}","commit_id":"272ef62e237d36d36e1470cbe0755862e66eb57d"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"8da7a9ee4d9ec21760530950e5cc37c59fea14a5","unresolved":false,"context_lines":[{"line_number":250,"context_line":"def check_empty_uuid(uuid):"},{"line_number":251,"context_line":"    if not uuid.strip():"},{"line_number":252,"context_line":"        raise exc.CommandError(_(\u0027The uuid should not be empty or \u0027"},{"line_number":253,"context_line":"                                 \u0027blank spaces\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"dac4157f_d28fd821","line":253,"in_reply_to":"dac4157f_0af6438f","updated":"2015-04-20 22:47:35.000000000","message":"Ok, good idea will address in next patch.","commit_id":"272ef62e237d36d36e1470cbe0755862e66eb57d"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"593d68d809ee4b3b13421d2c198db6209a6079d0","unresolved":false,"context_lines":[{"line_number":250,"context_line":"def check_empty_uuid(uuid):"},{"line_number":251,"context_line":"    if not uuid.strip():"},{"line_number":252,"context_line":"        raise exc.CommandError(_(\u0027The uuid should not be empty or \u0027"},{"line_number":253,"context_line":"                                 \u0027blank spaces\u0027))"}],"source_content_type":"text/x-python","patch_set":15,"id":"dac4157f_1730a200","line":253,"in_reply_to":"dac4157f_0af6438f","updated":"2015-04-20 22:37:11.000000000","message":"Yes, but for some field, such as chassis\u0027s description, that can be empty for updating case I think, how do you think?","commit_id":"272ef62e237d36d36e1470cbe0755862e66eb57d"}],"ironicclient/shell.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"ce347aace3d30b03b0787feab431036fac4e4962","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            return 0"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        for argv_item in argv:"},{"line_number":404,"context_line":"            if len(argv_item.strip()) \u003d\u003d 0:"},{"line_number":405,"context_line":"                raise exc.CommandError(_(\"Command argument value should be \""},{"line_number":406,"context_line":"                                         \"non-empty and not blank spaces\"))"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5aa745d1_fab5407e","line":404,"updated":"2015-04-16 03:25:51.000000000","message":"Idea/nit:\n\n if not argv_item.strip():","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ca02c25dc9798bbb5830d65cb94363db4ac2b280","unresolved":false,"context_lines":[{"line_number":401,"context_line":"            return 0"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        for argv_item in argv:"},{"line_number":404,"context_line":"            if len(argv_item.strip()) \u003d\u003d 0:"},{"line_number":405,"context_line":"                raise exc.CommandError(_(\"Command argument value should be \""},{"line_number":406,"context_line":"                                         \"non-empty and not blank spaces\"))"},{"line_number":407,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5aa745d1_2bb6b8dc","line":404,"in_reply_to":"5aa745d1_fab5407e","updated":"2015-04-16 06:23:43.000000000","message":"good idea:)","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4cde45b446c62b8db897a5a7ada82338f2a60944","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            api_major_version \u003d versions[0]"},{"line_number":382,"context_line":"            return (api_major_version, os_ironic_api_version)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    def main(self, argv):"},{"line_number":385,"context_line":"        # Parse args once to find version"},{"line_number":386,"context_line":"        parser \u003d self.get_base_parser()"},{"line_number":387,"context_line":"        (options, args) \u003d parser.parse_known_args(argv)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5aa745d1_a12c1a4b","line":384,"updated":"2015-04-16 13:49:16.000000000","message":"I think the right way to fix this problem is to eliminate empty parameters so that the output will be consistent all the time.\n\nWhat about:\n\n def main(self, argv):\n     # Remove empty arguments\n     argv \u003d filter(lambda item: item.strip(), argv)\n\n...\n\nThat way you have consistent output:\n\n stack@virtual-machine:~/python-ironicclient$ ironic node-show \"\"\nusage: ironic node-show [--instance] \u003cid\u003e\nironic node-show: error: too few arguments\n\n stack@ubuntu-virtual-machine:~/python-ironicclient$ ironic node-show \" \"\nusage: ironic node-show [--instance] \u003cid\u003e\nironic node-show: error: too few arguments\n\n stack@ubuntu-virtual-machine:~/python-ironicclient$ ironic node-show\nusage: ironic node-show [--instance] \u003cid\u003e\nironic node-show: error: too few arguments","commit_id":"93092fdab66d60a94582ea63cc4db75ab4f75c87"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"7de88c1ad0f2a0ef7832d8c395ed3fe82dad7140","unresolved":false,"context_lines":[{"line_number":381,"context_line":"            api_major_version \u003d versions[0]"},{"line_number":382,"context_line":"            return (api_major_version, os_ironic_api_version)"},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"    def main(self, argv):"},{"line_number":385,"context_line":"        # Parse args once to find version"},{"line_number":386,"context_line":"        parser \u003d self.get_base_parser()"},{"line_number":387,"context_line":"        (options, args) \u003d parser.parse_known_args(argv)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3ab451fb_51553ec4","line":384,"in_reply_to":"5aa745d1_a12c1a4b","updated":"2015-04-16 23:58:46.000000000","message":"Lucas, good idea, thank you.","commit_id":"93092fdab66d60a94582ea63cc4db75ab4f75c87"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4cde45b446c62b8db897a5a7ada82338f2a60944","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        for argv_item in argv:"},{"line_number":404,"context_line":"            if not argv_item.strip():"},{"line_number":405,"context_line":"                raise exc.CommandError(_(\"Command argument value should be \""},{"line_number":406,"context_line":"                                         \"non-empty and not blank spaces\"))"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        # Parse args again and call whatever callback was selected"},{"line_number":409,"context_line":"        args \u003d subcommand_parser.parse_args(argv)"}],"source_content_type":"text/x-python","patch_set":13,"id":"5aa745d1_c15286dd","line":406,"updated":"2015-04-16 13:49:16.000000000","message":"I think that\u0027s the wrong way to fix it, because it gives different output for empty arguments (which should be threaded as non passed).\n\nSee:\n\n stack@virtual-machine:~/python-ironicclient$ ironic node-show \" \"                                       \nCommand argument value should be non-empty and not blank spaces\n\n stack@virtual-machine:~/python-ironicclient$ ironic node-show \"\"\nCommand argument value should be non-empty and not blank spaces\n\n stack@virtual-machine:~/python-ironicclient$ ironic node-show\nusage: ironic node-show [--instance] \u003cid\u003e\nironic node-show: error: too few arguments\n\nSee my suggestion on L385","commit_id":"93092fdab66d60a94582ea63cc4db75ab4f75c87"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"7de88c1ad0f2a0ef7832d8c395ed3fe82dad7140","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        for argv_item in argv:"},{"line_number":404,"context_line":"            if not argv_item.strip():"},{"line_number":405,"context_line":"                raise exc.CommandError(_(\"Command argument value should be \""},{"line_number":406,"context_line":"                                         \"non-empty and not blank spaces\"))"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"        # Parse args again and call whatever callback was selected"},{"line_number":409,"context_line":"        args \u003d subcommand_parser.parse_args(argv)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3ab451fb_115e96e9","line":406,"in_reply_to":"5aa745d1_c15286dd","updated":"2015-04-16 23:58:46.000000000","message":"agree with you, we should handle both two case with same logic, thank you.","commit_id":"93092fdab66d60a94582ea63cc4db75ab4f75c87"}],"ironicclient/tests/unit/test_shell.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"ce347aace3d30b03b0787feab431036fac4e4962","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_blankspaces_arguments(self):"},{"line_number":107,"context_line":"        shell \u003d ironic_shell.IronicShell()"},{"line_number":108,"context_line":"        self.assertRaises(exc.CommandError, shell.main, \u0027--help \\\u0027 \\\u0027 \u0027)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_empty_arguments(self):"},{"line_number":111,"context_line":"        shell \u003d ironic_shell.IronicShell()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5aa745d1_3abcc86b","line":108,"updated":"2015-04-16 03:25:51.000000000","message":"nit: If used double quotes on entire string would not need to escape single quotes.\n\n\"--help \u0027\u0027 \"","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"0649ece0cc5affd96e9a52a86b96af5af15d6432","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_blankspaces_arguments(self):"},{"line_number":107,"context_line":"        shell \u003d ironic_shell.IronicShell()"},{"line_number":108,"context_line":"        self.assertRaises(exc.CommandError, shell.main, \u0027--help \\\u0027 \\\u0027 \u0027)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_empty_arguments(self):"},{"line_number":111,"context_line":"        shell \u003d ironic_shell.IronicShell()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5aa745d1_7a2ff0a1","line":108,"in_reply_to":"5aa745d1_3abcc86b","updated":"2015-04-16 03:36:25.000000000","message":"I meant:\n\n\"--help \u0027 \u0027 \"","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ca02c25dc9798bbb5830d65cb94363db4ac2b280","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_blankspaces_arguments(self):"},{"line_number":107,"context_line":"        shell \u003d ironic_shell.IronicShell()"},{"line_number":108,"context_line":"        self.assertRaises(exc.CommandError, shell.main, \u0027--help \\\u0027 \\\u0027 \u0027)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_empty_arguments(self):"},{"line_number":111,"context_line":"        shell \u003d ironic_shell.IronicShell()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5aa745d1_4bc1042e","line":108,"in_reply_to":"5aa745d1_3abcc86b","updated":"2015-04-16 06:23:43.000000000","message":"good idea","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"ca02c25dc9798bbb5830d65cb94363db4ac2b280","unresolved":false,"context_lines":[{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    def test_blankspaces_arguments(self):"},{"line_number":107,"context_line":"        shell \u003d ironic_shell.IronicShell()"},{"line_number":108,"context_line":"        self.assertRaises(exc.CommandError, shell.main, \u0027--help \\\u0027 \\\u0027 \u0027)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_empty_arguments(self):"},{"line_number":111,"context_line":"        shell \u003d ironic_shell.IronicShell()"}],"source_content_type":"text/x-python","patch_set":11,"id":"5aa745d1_2bdd9814","line":108,"in_reply_to":"5aa745d1_7a2ff0a1","updated":"2015-04-16 06:23:43.000000000","message":"Done","commit_id":"abd36a154639b1ae812d1212d6a5f3dc0565d682"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4cde45b446c62b8db897a5a7ada82338f2a60944","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_empty_arguments(self):"},{"line_number":111,"context_line":"        shell \u003d ironic_shell.IronicShell()"},{"line_number":112,"context_line":"        self.assertRaises(exc.CommandError, shell.main, \"--help \u0027\u0027\")"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def test_help_on_subcommand(self):"},{"line_number":115,"context_line":"        required \u003d ["}],"source_content_type":"text/x-python","patch_set":13,"id":"5aa745d1_d902803e","line":112,"updated":"2015-04-16 13:49:16.000000000","message":"hmm odd, because the check for empty argv happens after the --help command. Makes me wonder if we are testing the real thing here.\n\nSee: http://paste.openstack.org/show/204099/","commit_id":"93092fdab66d60a94582ea63cc4db75ab4f75c87"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"7de88c1ad0f2a0ef7832d8c395ed3fe82dad7140","unresolved":false,"context_lines":[{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def test_empty_arguments(self):"},{"line_number":111,"context_line":"        shell \u003d ironic_shell.IronicShell()"},{"line_number":112,"context_line":"        self.assertRaises(exc.CommandError, shell.main, \"--help \u0027\u0027\")"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def test_help_on_subcommand(self):"},{"line_number":115,"context_line":"        required \u003d ["}],"source_content_type":"text/x-python","patch_set":13,"id":"3ab451fb_716f1a93","line":112,"in_reply_to":"5aa745d1_d902803e","updated":"2015-04-16 23:58:46.000000000","message":"yes, \u0027--help\u0027 is not required, let me remove it with next patch, thank you Lucas.","commit_id":"93092fdab66d60a94582ea63cc4db75ab4f75c87"}],"ironicclient/tests/unit/v1/test_node_shell.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b311a382fc848926e09626fe04a4a03021dfc486","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                          n_shell.do_node_show,"},{"line_number":207,"context_line":"                          client_mock, args)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def test_do_inode_show_by_empty_instance_uuid(self):"},{"line_number":210,"context_line":"        client_mock \u003d mock.MagicMock()"},{"line_number":211,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":212,"context_line":"        args.node \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"dac4157f_3516e2f1","line":209,"updated":"2015-04-21 14:50:48.000000000","message":"why do the names of the tests have \u0027test_do_inode...\u0027 instead of test_do_node...\u0027?\n\nJust a suggestion (you don\u0027t have to do this). It looks like you could have some general method where you pass the value of args.node and args.instance_uuid -- there would be less duplication of code then.","commit_id":"a2bb094065c2e67d3d87dc6ab61e08d7344066d6"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"b39bf0b3bbfc32257cf49aeb1702efdd5478907c","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                          n_shell.do_node_show,"},{"line_number":207,"context_line":"                          client_mock, args)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def test_do_inode_show_by_empty_instance_uuid(self):"},{"line_number":210,"context_line":"        client_mock \u003d mock.MagicMock()"},{"line_number":211,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":212,"context_line":"        args.node \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"dac4157f_5a9848c0","line":209,"in_reply_to":"dac4157f_3516e2f1","updated":"2015-04-22 02:44:21.000000000","message":"yes, should remove \u0027i\u0027 char.","commit_id":"a2bb094065c2e67d3d87dc6ab61e08d7344066d6"}],"ironicclient/tests/unit/v1/test_port_shell.py":[{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"54d88731559146366c13f9c5408ba6ed8df044ce","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def test_do_port_show_space_uuid(self):"},{"line_number":51,"context_line":"        client_mock \u003d mock.MagicMock()"},{"line_number":52,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":53,"context_line":"        args.port \u003d \u0027 \u0027"},{"line_number":54,"context_line":"        args.address \u003d False"},{"line_number":55,"context_line":"        self.assertRaises(exceptions.CommandError,"},{"line_number":56,"context_line":"                          p_shell.do_port_show,"}],"source_content_type":"text/x-python","patch_set":14,"id":"dac4157f_1f2c6baa","line":53,"updated":"2015-04-18 23:51:54.000000000","message":"just a question. how does it works when the port is blank space-s?","commit_id":"852843e8a28c523aa0cca6e65042f6b36af8f0cb"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"f494cddd251c4087597fe5b652453d3620125633","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def test_do_port_show_space_uuid(self):"},{"line_number":51,"context_line":"        client_mock \u003d mock.MagicMock()"},{"line_number":52,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":53,"context_line":"        args.port \u003d \u0027 \u0027"},{"line_number":54,"context_line":"        args.address \u003d False"},{"line_number":55,"context_line":"        self.assertRaises(exceptions.CommandError,"},{"line_number":56,"context_line":"                          p_shell.do_port_show,"}],"source_content_type":"text/x-python","patch_set":14,"id":"dac4157f_8254a054","line":53,"in_reply_to":"dac4157f_1f2c6baa","updated":"2015-04-19 02:34:38.000000000","message":"Thanks for your comments, let me add one more case to cover mult-spaces case.","commit_id":"852843e8a28c523aa0cca6e65042f6b36af8f0cb"}],"ironicclient/v1/chassis_shell.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b311a382fc848926e09626fe04a4a03021dfc486","unresolved":false,"context_lines":[{"line_number":29,"context_line":"@cliutils.arg(\u0027chassis\u0027, metavar\u003d\u0027\u003cchassis\u003e\u0027, help\u003d\"UUID of the chassis.\")"},{"line_number":30,"context_line":"def do_chassis_show(cc, args):"},{"line_number":31,"context_line":"    \"\"\"Show detailed information about a chassis.\"\"\""},{"line_number":32,"context_line":"    utils.check_empty_arg(args.chassis, \u0027chassis_uuid\u0027)"},{"line_number":33,"context_line":"    chassis \u003d cc.chassis.get(args.chassis)"},{"line_number":34,"context_line":"    _print_chassis_show(chassis)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"dac4157f_55aef685","line":32,"updated":"2015-04-21 14:50:48.000000000","message":"my suggestion is to use \u0027\u003cchassis\u003e\u0027 (the metavar value) instead of \u0027chassis_uuid\u0027 because that is what the user sees if they do a \u0027ironic help chassis-show\u0027.","commit_id":"a2bb094065c2e67d3d87dc6ab61e08d7344066d6"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"b39bf0b3bbfc32257cf49aeb1702efdd5478907c","unresolved":false,"context_lines":[{"line_number":29,"context_line":"@cliutils.arg(\u0027chassis\u0027, metavar\u003d\u0027\u003cchassis\u003e\u0027, help\u003d\"UUID of the chassis.\")"},{"line_number":30,"context_line":"def do_chassis_show(cc, args):"},{"line_number":31,"context_line":"    \"\"\"Show detailed information about a chassis.\"\"\""},{"line_number":32,"context_line":"    utils.check_empty_arg(args.chassis, \u0027chassis_uuid\u0027)"},{"line_number":33,"context_line":"    chassis \u003d cc.chassis.get(args.chassis)"},{"line_number":34,"context_line":"    _print_chassis_show(chassis)"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"dac4157f_daea180f","line":32,"in_reply_to":"dac4157f_55aef685","updated":"2015-04-22 02:44:21.000000000","message":"make sense, done.","commit_id":"a2bb094065c2e67d3d87dc6ab61e08d7344066d6"}],"ironicclient/v1/node_shell.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b311a382fc848926e09626fe04a4a03021dfc486","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        utils.check_empty_arg(args.node, \u0027instance_uuid\u0027)"},{"line_number":49,"context_line":"        node \u003d cc.node.get_by_instance_uuid(args.node)"},{"line_number":50,"context_line":"    else:"},{"line_number":51,"context_line":"        utils.check_empty_arg(args.node, \u0027node_uuid\u0027)"},{"line_number":52,"context_line":"        node \u003d cc.node.get(args.node)"},{"line_number":53,"context_line":"    _print_node_show(node)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"dac4157f_b538b23e","line":51,"updated":"2015-04-21 14:50:48.000000000","message":"if you do a \u0027ironic help node-show\u0027, you\u0027ll see \u0027usage: ironic node-show [--instance] \u003cid\u003e\u0027. So my suggestion is to not bother with the if/else, but just do utils.check_empty_arg(args.node, \u0027\u003cid\u003e\u0027)","commit_id":"a2bb094065c2e67d3d87dc6ab61e08d7344066d6"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"b39bf0b3bbfc32257cf49aeb1702efdd5478907c","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        utils.check_empty_arg(args.node, \u0027instance_uuid\u0027)"},{"line_number":49,"context_line":"        node \u003d cc.node.get_by_instance_uuid(args.node)"},{"line_number":50,"context_line":"    else:"},{"line_number":51,"context_line":"        utils.check_empty_arg(args.node, \u0027node_uuid\u0027)"},{"line_number":52,"context_line":"        node \u003d cc.node.get(args.node)"},{"line_number":53,"context_line":"    _print_node_show(node)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"dac4157f_3ac11481","line":51,"in_reply_to":"dac4157f_b538b23e","updated":"2015-04-22 02:44:21.000000000","message":"Good idea, thanks Ruby.","commit_id":"a2bb094065c2e67d3d87dc6ab61e08d7344066d6"}],"ironicclient/v1/port_shell.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b311a382fc848926e09626fe04a4a03021dfc486","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    if args.address:"},{"line_number":43,"context_line":"        port \u003d cc.port.get_by_address(args.port)"},{"line_number":44,"context_line":"    else:"},{"line_number":45,"context_line":"        utils.check_empty_arg(args.port, \u0027port_uuid\u0027)"},{"line_number":46,"context_line":"        port \u003d cc.port.get(args.port)"},{"line_number":47,"context_line":"    _print_port_show(port)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"dac4157f_f5150a9b","line":45,"updated":"2015-04-21 14:50:48.000000000","message":"the metavar is \u0027\u003cid\u003e\u0027, so I\u0027d use that string instead of \u0027port_uuid\u0027.","commit_id":"a2bb094065c2e67d3d87dc6ab61e08d7344066d6"}]}
