)]}'
{"ironicclient/tests/functional/osc/v1/base.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"00049353165a1cf17c7dc9958ca2d42652cf1a52","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        return \u0027 \u0027.join(str(x) for x in parts)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @staticmethod"},{"line_number":43,"context_line":"    def generate_params(argument, params):"},{"line_number":44,"context_line":"        params_str \u003d \u0027\u0027"},{"line_number":45,"context_line":"        for key, value in params.iteritems():"},{"line_number":46,"context_line":"            params_str +\u003d \u0027 {} {}\u003d{}\u0027.format(argument, key, value)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_8c70f809","line":43,"updated":"2017-08-30 01:26:44.000000000","message":"it\u0027s be nice to add a docstring to describe what these parameters are.","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"37aa77a88a7e1beae18705cb780e0d05e78841c5","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        return \u0027 \u0027.join(str(x) for x in parts)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    @staticmethod"},{"line_number":43,"context_line":"    def generate_params(argument, params):"},{"line_number":44,"context_line":"        params_str \u003d \u0027\u0027"},{"line_number":45,"context_line":"        for key, value in params.iteritems():"},{"line_number":46,"context_line":"            params_str +\u003d \u0027 {} {}\u003d{}\u0027.format(argument, key, value)"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_dfc95a25","line":43,"in_reply_to":"7f287b81_8c70f809","updated":"2017-09-06 13:21:57.000000000","message":"Done","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e1d5cd778ce040d4857be9cd2d98298b7006d7f9","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    def generate_params(argument, params):"},{"line_number":44,"context_line":"        \"\"\"Generate parameters string."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        :param argument: argument"},{"line_number":47,"context_line":"        :param params: values passed with argument"},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        params_str \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_92944646","line":46,"updated":"2017-10-10 21:33:16.000000000","message":"this is a string, the name of the argument. or option.","commit_id":"57d88f3f5868f02e6ac89e409aa0b103d9e4c242"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e1d5cd778ce040d4857be9cd2d98298b7006d7f9","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        \"\"\"Generate parameters string."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        :param argument: argument"},{"line_number":47,"context_line":"        :param params: values passed with argument"},{"line_number":48,"context_line":"        \"\"\""},{"line_number":49,"context_line":"        params_str \u003d \u0027\u0027"},{"line_number":50,"context_line":"        for key, value in params.iteritems():"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_f2c01a53","line":47,"updated":"2017-10-10 21:33:16.000000000","message":"is this a dictionary?","commit_id":"57d88f3f5868f02e6ac89e409aa0b103d9e4c242"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e1d5cd778ce040d4857be9cd2d98298b7006d7f9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        params_str \u003d \u0027\u0027"},{"line_number":50,"context_line":"        for key, value in params.iteritems():"},{"line_number":51,"context_line":"            params_str +\u003d \u0027 {} {}\u003d{}\u0027.format(argument, key, value)"},{"line_number":52,"context_line":"        return params_str"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def assert_dict_is_subset(self, expected, actual):"},{"line_number":55,"context_line":"        \"\"\"Check if expected keys/values exist in actual response body."}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_3db56332","line":52,"updated":"2017-10-10 21:33:16.000000000","message":"This method assumes things, so you should document it. It looks like\n\nThis generates a parameters string for use with a CLI command. The parameter string is in the format: \u003cargument\u003e \u003ckey1\u003e\u003d\u003cvalue1\u003e \u003cargument\u003e \u003ckey2\u003e\u003d\u003cvalue2\u003e ...\n\nFWIW, the term \u0027params\u0027 in generate_params seems incorrect to me. The openstackclient documentation [1] refers to these as command arguments, and what you refer to here as an \u0027argument\u0027 seems to be an \u0027option\u0027 in [1].\n\nHow about \n\nThis returns an arguments string for use with an openstackclient command. The string is in the format: \u003coption\u003e \u003ckey1\u003e\u003d\u003cvalue1\u003e \u003coption\u003e \u003ckey2\u003e\u003d\u003cvalue2\u003e ...\n\nAnd maybe call the method get_cmd_arguments(option, values)? \u0027get\u0027 because you have \u0027get_opts() above\u0027 and this is somewhat similar?\n\n[1] https://docs.openstack.org/python-openstackclient/latest/cli/commands.html#","commit_id":"57d88f3f5868f02e6ac89e409aa0b103d9e4c242"}],"ironicclient/tests/functional/osc/v1/test_baremetal_node_create.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"00049353165a1cf17c7dc9958ca2d42652cf1a52","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        for driver_info in driver_info_list:"},{"line_number":37,"context_line":"            params \u003d self.generate_params(arg, driver_info)"},{"line_number":38,"context_line":"            node \u003d self.node_create(params\u003dparams)"},{"line_number":39,"context_line":"            self.assert_dict_is_subset(driver_info, node[\u0027driver_info\u0027])"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_create_chassis_uuid(self):"},{"line_number":42,"context_line":"        \"\"\"Check baremetal node create command with --chassis-uuid."}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_4cf69065","line":39,"updated":"2017-08-30 01:26:44.000000000","message":"why do you check for subset? Shouldn\u0027t it be equal to?","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"37aa77a88a7e1beae18705cb780e0d05e78841c5","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        for driver_info in driver_info_list:"},{"line_number":37,"context_line":"            params \u003d self.generate_params(arg, driver_info)"},{"line_number":38,"context_line":"            node \u003d self.node_create(params\u003dparams)"},{"line_number":39,"context_line":"            self.assert_dict_is_subset(driver_info, node[\u0027driver_info\u0027])"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def test_create_chassis_uuid(self):"},{"line_number":42,"context_line":"        \"\"\"Check baremetal node create command with --chassis-uuid."}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_82125557","line":39,"in_reply_to":"7f287b81_4cf69065","updated":"2017-09-06 13:21:57.000000000","message":"it seems i have missed this detail :)","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"8db7595b94355cbd3accabb9786ee4cfcb28d423","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        Test steps:"},{"line_number":45,"context_line":"        1) Create node using --chassis-uuid with specified chassis."},{"line_number":46,"context_line":"        2) Check that node successfully created with right chassis_uuid."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        chassis \u003d self.chassis_create()"},{"line_number":49,"context_line":"        node \u003d self.node_create("}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_2ff013fe","line":46,"range":{"start_line":46,"start_character":22,"end_line":46,"end_character":47},"updated":"2017-08-28 06:42:42.000000000","message":"Nit: s/node successfully created/node is successfully created/ or something like that in all tests.","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"37aa77a88a7e1beae18705cb780e0d05e78841c5","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        Test steps:"},{"line_number":45,"context_line":"        1) Create node using --chassis-uuid with specified chassis."},{"line_number":46,"context_line":"        2) Check that node successfully created with right chassis_uuid."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        chassis \u003d self.chassis_create()"},{"line_number":49,"context_line":"        node \u003d self.node_create("}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_c2561d07","line":46,"range":{"start_line":46,"start_character":22,"end_line":46,"end_character":47},"in_reply_to":"7f287b81_2ff013fe","updated":"2017-09-06 13:21:57.000000000","message":"Done","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"00049353165a1cf17c7dc9958ca2d42652cf1a52","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        chassis \u003d self.chassis_create()"},{"line_number":49,"context_line":"        node \u003d self.node_create("},{"line_number":50,"context_line":"            params\u003d\u0027--chassis-uuid {}\u0027.format(chassis[\u0027uuid\u0027]))"},{"line_number":51,"context_line":"        self.assertEqual(node[\u0027chassis_uuid\u0027], chassis[\u0027uuid\u0027])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_create_property(self):"},{"line_number":54,"context_line":"        \"\"\"Check baremetal node create command with properties."}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_ecb41c82","line":51,"updated":"2017-08-30 01:26:44.000000000","message":"it is the other way around, assertEqual(expected, actual)","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"37aa77a88a7e1beae18705cb780e0d05e78841c5","unresolved":false,"context_lines":[{"line_number":48,"context_line":"        chassis \u003d self.chassis_create()"},{"line_number":49,"context_line":"        node \u003d self.node_create("},{"line_number":50,"context_line":"            params\u003d\u0027--chassis-uuid {}\u0027.format(chassis[\u0027uuid\u0027]))"},{"line_number":51,"context_line":"        self.assertEqual(node[\u0027chassis_uuid\u0027], chassis[\u0027uuid\u0027])"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_create_property(self):"},{"line_number":54,"context_line":"        \"\"\"Check baremetal node create command with properties."}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_02ff8501","line":51,"in_reply_to":"7f287b81_ecb41c82","updated":"2017-09-06 13:21:57.000000000","message":"Done","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1595de724b9f0f94ba9ba990b93101b8b5da1b1f","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        arg \u003d \u0027--network-interface\u0027"},{"line_number":93,"context_line":"        api \u003d \u0027--os-baremetal-api-version 1.20\u0027"},{"line_number":94,"context_line":"        node \u003d self.node_create("},{"line_number":95,"context_line":"            params\u003d\u0027{} {} {}\u0027.format(arg, network_interface, api))"},{"line_number":96,"context_line":"        self.assertEqual(network_interface, node[\u0027network_interface\u0027])"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_create_resource_class(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_8d295de7","line":95,"updated":"2017-08-26 11:41:16.000000000","message":"why use formatting here, the string is constant..","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"00049353165a1cf17c7dc9958ca2d42652cf1a52","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        arg \u003d \u0027--network-interface\u0027"},{"line_number":93,"context_line":"        api \u003d \u0027--os-baremetal-api-version 1.20\u0027"},{"line_number":94,"context_line":"        node \u003d self.node_create("},{"line_number":95,"context_line":"            params\u003d\u0027{} {} {}\u0027.format(arg, network_interface, api))"},{"line_number":96,"context_line":"        self.assertEqual(network_interface, node[\u0027network_interface\u0027])"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_create_resource_class(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_4c69f0f6","line":95,"in_reply_to":"7f287b81_8d295de7","updated":"2017-08-30 01:26:44.000000000","message":"+1","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"37aa77a88a7e1beae18705cb780e0d05e78841c5","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        arg \u003d \u0027--network-interface\u0027"},{"line_number":93,"context_line":"        api \u003d \u0027--os-baremetal-api-version 1.20\u0027"},{"line_number":94,"context_line":"        node \u003d self.node_create("},{"line_number":95,"context_line":"            params\u003d\u0027{} {} {}\u0027.format(arg, network_interface, api))"},{"line_number":96,"context_line":"        self.assertEqual(network_interface, node[\u0027network_interface\u0027])"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def test_create_resource_class(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_224f2135","line":95,"in_reply_to":"7f287b81_8d295de7","updated":"2017-09-06 13:21:57.000000000","message":"Done","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1595de724b9f0f94ba9ba990b93101b8b5da1b1f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        arg \u003d \u0027--resource-class\u0027"},{"line_number":107,"context_line":"        api \u003d \u0027--os-baremetal-api-version 1.21\u0027"},{"line_number":108,"context_line":"        node \u003d self.node_create("},{"line_number":109,"context_line":"            params\u003d\u0027{} {} {}\u0027.format(arg, resource_class, api))"},{"line_number":110,"context_line":"        self.assertEqual(resource_class, node[\u0027resource_class\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_6d263118","line":109,"updated":"2017-08-26 11:41:16.000000000","message":"ditto","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":14614,"name":"Kyrylo Romanenko","display_name":"K.Romanenko","email":"romanenko-kv@hotmail.com","username":"kromanenko"},"change_message_id":"37aa77a88a7e1beae18705cb780e0d05e78841c5","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        arg \u003d \u0027--resource-class\u0027"},{"line_number":107,"context_line":"        api \u003d \u0027--os-baremetal-api-version 1.21\u0027"},{"line_number":108,"context_line":"        node \u003d self.node_create("},{"line_number":109,"context_line":"            params\u003d\u0027{} {} {}\u0027.format(arg, resource_class, api))"},{"line_number":110,"context_line":"        self.assertEqual(resource_class, node[\u0027resource_class\u0027])"}],"source_content_type":"text/x-python","patch_set":13,"id":"7f287b81_0260a5a4","line":109,"in_reply_to":"7f287b81_6d263118","updated":"2017-09-06 13:21:57.000000000","message":"Done","commit_id":"ee71e8bde02c973c4965c4df279593a4120ea751"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e1d5cd778ce040d4857be9cd2d98298b7006d7f9","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        driver_info_list \u003d [{\u0027support_ssh\u0027: \u0027yes\u0027},"},{"line_number":33,"context_line":"                            {\u0027boot\u0027: \u0027no\u0027, \u0027schedule\u0027: \u0027enable\u0027,"},{"line_number":34,"context_line":"                             \u0027power\u0027: \u0027VCC\u0027}]"},{"line_number":35,"context_line":"        arg \u003d \u0027--driver-info\u0027"},{"line_number":36,"context_line":"        for driver_info in driver_info_list:"},{"line_number":37,"context_line":"            params \u003d self.generate_params(arg, driver_info)"},{"line_number":38,"context_line":"            node \u003d self.node_create(params\u003dparams)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_52924ef8","line":35,"updated":"2017-10-10 21:33:16.000000000","message":"nit, this is static so you can just use it in L37","commit_id":"57d88f3f5868f02e6ac89e409aa0b103d9e4c242"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e1d5cd778ce040d4857be9cd2d98298b7006d7f9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        props_list \u003d [{\u0027cpu_arch\u0027: \u0027x86_64\u0027},"},{"line_number":61,"context_line":"                      {\u0027memory\u0027: 1024, \u0027cpu\u0027: \u0027x86_64\u0027,"},{"line_number":62,"context_line":"                       \u0027local\u0027: 10, \u0027cpus\u0027: 1}]"},{"line_number":63,"context_line":"        arg \u003d \u0027--property\u0027"},{"line_number":64,"context_line":"        for props in props_list:"},{"line_number":65,"context_line":"            params \u003d self.generate_params(arg, props)"},{"line_number":66,"context_line":"            node \u003d self.node_create(params\u003dparams)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_72854aad","line":63,"updated":"2017-10-10 21:33:16.000000000","message":"nit, this is static so you can just use it in L65.","commit_id":"57d88f3f5868f02e6ac89e409aa0b103d9e4c242"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e1d5cd778ce040d4857be9cd2d98298b7006d7f9","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        for props in props_list:"},{"line_number":65,"context_line":"            params \u003d self.generate_params(arg, props)"},{"line_number":66,"context_line":"            node \u003d self.node_create(params\u003dparams)"},{"line_number":67,"context_line":"            self.assert_dict_is_subset(props, node[\u0027properties\u0027])"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_create_extras(self):"},{"line_number":70,"context_line":"        \"\"\"Check baremetal node create command with extra data."}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_b2398242","line":67,"updated":"2017-10-10 21:33:16.000000000","message":"is it a subset, or equal?","commit_id":"57d88f3f5868f02e6ac89e409aa0b103d9e4c242"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e1d5cd778ce040d4857be9cd2d98298b7006d7f9","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        extras \u003d [{\u0027cores\u0027: 16},"},{"line_number":77,"context_line":"                  {\u0027cores\u0027: 16, \u0027maintenance\u0027: \u0027no\u0027, \u0027chassis\u0027: \u0027enable\u0027}]"},{"line_number":78,"context_line":"        arg \u003d \u0027--extra\u0027"},{"line_number":79,"context_line":"        for extra in extras:"},{"line_number":80,"context_line":"            params \u003d self.generate_params(arg, extra)"},{"line_number":81,"context_line":"            node \u003d self.node_create(params\u003dparams)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_b2a3c24f","line":78,"updated":"2017-10-10 21:33:16.000000000","message":"nit, this is static so you can just use it in L80.","commit_id":"57d88f3f5868f02e6ac89e409aa0b103d9e4c242"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e1d5cd778ce040d4857be9cd2d98298b7006d7f9","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        for extra in extras:"},{"line_number":80,"context_line":"            params \u003d self.generate_params(arg, extra)"},{"line_number":81,"context_line":"            node \u003d self.node_create(params\u003dparams)"},{"line_number":82,"context_line":"            self.assert_dict_is_subset(extra, node[\u0027extra\u0027])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    def test_create_network_interface(self):"},{"line_number":85,"context_line":"        \"\"\"Check baremetal node create command with --network-interface."}],"source_content_type":"text/x-python","patch_set":14,"id":"5f4e5783_d25bde84","line":82,"updated":"2017-10-10 21:33:16.000000000","message":"is it a subset, or equal?","commit_id":"57d88f3f5868f02e6ac89e409aa0b103d9e4c242"}]}
