)]}'
{"ironicclient/common/base.py":[{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"291d2afe1a363a41a7ec1e67da0343da9df3fb02","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            for item in self.__dict__.items():"},{"line_number":265,"context_line":"                targets.append(item)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        for k, v in targets:"},{"line_number":268,"context_line":"            if isinstance(v, (list, tuple, set, frozenset)):"},{"line_number":269,"context_line":"                v \u003d \u0027, \u0027.join(map(six.text_type, v))"},{"line_number":270,"context_line":"                setattr(self, k, v)"},{"line_number":271,"context_line":"                self._info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":28,"id":"5ff73747_13d5a0b9","line":271,"range":{"start_line":267,"start_character":8,"end_line":271,"end_character":33},"updated":"2017-04-26 09:42:50.000000000","message":"Not sure, that the Resource class need to be updated, I thought this is for pretty output to the table only\n\nThe point is that resource will be used later on as full-featured object (see [1]) and I am not sure how converting list attributes to simple string will affect this (may be list will be still needed). Can you just return the dictionary updated in this method, but not actually update the Resource itself?\n\nJust \n\nget rid of lines 270-271 and do return your modified targets?\n\nWDYT?\n\n[1] https://review.openstack.org/#/c/400335/32/ironicclient/common/base.py","commit_id":"1aec59796fbeeedaab7b737cc43930c9c78b46ea"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"30c5b4ab8d8a0475bd959ae051da8cf868a5ea94","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            for item in self.__dict__.items():"},{"line_number":265,"context_line":"                targets.append(item)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        for k, v in targets:"},{"line_number":268,"context_line":"            if isinstance(v, (list, tuple, set, frozenset)):"},{"line_number":269,"context_line":"                v \u003d \u0027, \u0027.join(map(six.text_type, v))"},{"line_number":270,"context_line":"                setattr(self, k, v)"},{"line_number":271,"context_line":"                self._info[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":28,"id":"5ff73747_6afe1938","line":271,"range":{"start_line":267,"start_character":8,"end_line":271,"end_character":33},"in_reply_to":"5ff73747_13d5a0b9","updated":"2017-04-26 14:15:29.000000000","message":"Hmm, this is interesting, although I think I agree with Galyna. I can see why you did this, but I think that if we really wanted to always convert list attrs to comma-separated, we\u0027d do it internally versus providing a method that can be called to do it. (i.e., we\u0027d always have a Resource with comma-separated values instead of lists.) But I think internally, we want to keep using lists, so we don\u0027t want to modify the internal information.\n\nI think, for now anyway (I haven\u0027t thought too much about it), that we move this method to one of the utils files, i see we have three, utils.py \u0026 cliutils.py in common/, and v1/utils.py. I looked quickly, and it seems like common/utils.py has things that are more similar to this.","commit_id":"1aec59796fbeeedaab7b737cc43930c9c78b46ea"}],"ironicclient/common/utils.py":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"ccebea1ed2c79f6fbea64eb7e23b6aadb2ad2bf5","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    for prop in props:"},{"line_number":163,"context_line":"        val \u003d data.get(prop, None)"},{"line_number":164,"context_line":"        if isinstance(val, (list, tuple, set, frozenset)):"},{"line_number":165,"context_line":"            result[prop] \u003d \u0027, \u0027.join(map(six.text_type, val))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    return result"}],"source_content_type":"text/x-python","patch_set":30,"id":"5ff73747_f4708c0a","line":164,"range":{"start_line":164,"start_character":34,"end_line":164,"end_character":55},"updated":"2017-04-28 07:58:55.000000000","message":"O_o, can you please show an example where those will be matched? Api returns json, from json we can get only string, int, list, dict, bool but no tuple, set or frozenset?","commit_id":"7935b82d14bf5c01cbae0eb32addd7dc407ef6d8"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"43421ecc562c49c44bb91d36bf829ca00e943069","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    for prop in props:"},{"line_number":163,"context_line":"        val \u003d data.get(prop, None)"},{"line_number":164,"context_line":"        if isinstance(val, (list, tuple, set, frozenset)):"},{"line_number":165,"context_line":"            result[prop] \u003d \u0027, \u0027.join(map(six.text_type, val))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    return result"}],"source_content_type":"text/x-python","patch_set":30,"id":"5ff73747_b74e816c","line":164,"range":{"start_line":164,"start_character":34,"end_line":164,"end_character":55},"in_reply_to":"5ff73747_01e4d33a","updated":"2017-04-28 11:00:53.000000000","message":"yes please drop unneeded types, as it is a dead code.","commit_id":"7935b82d14bf5c01cbae0eb32addd7dc407ef6d8"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"dbfbe7aeffa169a3d08a8253f809cbd74b6f099b","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"    for prop in props:"},{"line_number":163,"context_line":"        val \u003d data.get(prop, None)"},{"line_number":164,"context_line":"        if isinstance(val, (list, tuple, set, frozenset)):"},{"line_number":165,"context_line":"            result[prop] \u003d \u0027, \u0027.join(map(six.text_type, val))"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    return result"}],"source_content_type":"text/x-python","patch_set":30,"id":"5ff73747_01e4d33a","line":164,"range":{"start_line":164,"start_character":34,"end_line":164,"end_character":55},"in_reply_to":"5ff73747_f4708c0a","updated":"2017-04-28 10:14:35.000000000","message":"I made this support tuple and set because this is an utility method. I\u0027m fine with supporting list type only as it\u0027s enough for our need.","commit_id":"7935b82d14bf5c01cbae0eb32addd7dc407ef6d8"}],"ironicclient/osc/v1/baremetal_driver.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f384711fcd255ba9e0f2618f908a56db3c98a5c5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        client \u003d self.app.client_manager.baremetal"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        columns \u003d res_fields.DRIVER_RESOURCE.fields"},{"line_number":47,"context_line":"        labels \u003d res_fields.DRIVER_RESOURCE.labels"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        drivers \u003d client.driver.list(parsed_args.type)"},{"line_number":50,"context_line":"        drivers \u003d oscutils.sort_items(drivers, \u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_98825d93","line":47,"updated":"2017-01-26 16:57:14.000000000","message":"detail too?","commit_id":"0ee09d99792696a49ffb9d9ff5fbc61b1f432a81"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"c722e0eed3b092c66305eb50f995413d6dcf96ea","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        client \u003d self.app.client_manager.baremetal"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        columns \u003d res_fields.DRIVER_RESOURCE.fields"},{"line_number":47,"context_line":"        labels \u003d res_fields.DRIVER_RESOURCE.labels"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        drivers \u003d client.driver.list(parsed_args.type)"},{"line_number":50,"context_line":"        drivers \u003d oscutils.sort_items(drivers, \u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_a760bf36","line":47,"in_reply_to":"3a461143_98825d93","updated":"2017-01-27 05:48:10.000000000","message":"The code bases on ListBaremetalNode, but I see no --detail for baremetal node-list. I\u0027ve rechecked that and it has --long instead of --detail.","commit_id":"0ee09d99792696a49ffb9d9ff5fbc61b1f432a81"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e087ef617e5224820629af37eed5fe8512c16726","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def get_parser(self, prog_name):"},{"line_number":33,"context_line":"        parser \u003d super(ListBaremetalDriver, self).get_parser(prog_name)"},{"line_number":34,"context_line":"        parser.add_argument("},{"line_number":35,"context_line":"            \u0027-t\u0027, \u0027--type\u0027,"},{"line_number":36,"context_line":"            metavar\u003d\u0027\u003ctype\u003e\u0027,"},{"line_number":37,"context_line":"            choices\u003d[\"classic\", \"dynamic\"],"},{"line_number":38,"context_line":"            help\u003d\u0027Type of driver to list.\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_573a9fe8","line":35,"updated":"2017-02-02 10:57:44.000000000","message":"per guidelines, we should not use short options in the OSC plugin, so please leave out -t","commit_id":"dadf79908ed33331c485742506beb0a2af42ac51"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"c837a2a9dbaa1def08090fdb2c1be74933f5eb7d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def get_parser(self, prog_name):"},{"line_number":33,"context_line":"        parser \u003d super(ListBaremetalDriver, self).get_parser(prog_name)"},{"line_number":34,"context_line":"        parser.add_argument("},{"line_number":35,"context_line":"            \u0027-t\u0027, \u0027--type\u0027,"},{"line_number":36,"context_line":"            metavar\u003d\u0027\u003ctype\u003e\u0027,"},{"line_number":37,"context_line":"            choices\u003d[\"classic\", \"dynamic\"],"},{"line_number":38,"context_line":"            help\u003d\u0027Type of driver to list.\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a461143_702a412e","line":35,"in_reply_to":"3a461143_573a9fe8","updated":"2017-02-02 11:55:36.000000000","message":"Done","commit_id":"dadf79908ed33331c485742506beb0a2af42ac51"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"471fa8b9fe5112a9047f4b2d6bdf828ba18dd8ee","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \u0027--detail\u0027,"},{"line_number":43,"context_line":"            dest\u003d\u0027detail\u0027,"},{"line_number":44,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":45,"context_line":"            default\u003dFalse,"},{"line_number":46,"context_line":"            help\u003d\"Show detailed information about the drivers.\")"},{"line_number":47,"context_line":"        return parser"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7a25e98e_ed08362b","line":45,"range":{"start_line":45,"start_character":20,"end_line":45,"end_character":25},"updated":"2017-03-13 21:06:35.000000000","message":"should be None by default","commit_id":"b20c05331000e1a4a09072fc59511b951c98b81d"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"be26a08f0f0229e6239597bde7ee79c98303c737","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            \u0027--type\u0027,"},{"line_number":37,"context_line":"            metavar\u003d\u0027\u003ctype\u003e\u0027,"},{"line_number":38,"context_line":"            choices\u003d[\"classic\", \"dynamic\"],"},{"line_number":39,"context_line":"            help\u003d\u0027Type of driver to list.\u0027"},{"line_number":40,"context_line":"        )"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027--detail\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a1ff146_f973744b","line":39,"range":{"start_line":39,"start_character":26,"end_line":39,"end_character":32},"updated":"2017-03-15 12:28:40.000000000","message":"s/driver/drivers/","commit_id":"0d54f5046233c7cf5f6a258addb849594a38a026"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"fb0a80d7032ea912f8012a6649e9f09e4bdbf6eb","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            \u0027--type\u0027,"},{"line_number":37,"context_line":"            metavar\u003d\u0027\u003ctype\u003e\u0027,"},{"line_number":38,"context_line":"            choices\u003d[\"classic\", \"dynamic\"],"},{"line_number":39,"context_line":"            help\u003d\u0027Type of driver to list.\u0027"},{"line_number":40,"context_line":"        )"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027--detail\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a1ff146_1379da2f","line":39,"range":{"start_line":39,"start_character":26,"end_line":39,"end_character":32},"in_reply_to":"3a1ff146_f973744b","updated":"2017-03-16 13:02:54.000000000","message":"Done","commit_id":"0d54f5046233c7cf5f6a258addb849594a38a026"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"58feac1010465c0d8afd9d20ed6bbbb77d0d37a2","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \u0027--detail\u0027,"},{"line_number":43,"context_line":"            dest\u003d\u0027detail\u0027,"},{"line_number":44,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":45,"context_line":"            default\u003dNone,"},{"line_number":46,"context_line":"            help\u003d\"Show detailed information about the drivers.\")"},{"line_number":47,"context_line":"        return parser"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a1ced50_466e4297","line":45,"updated":"2017-03-20 09:17:47.000000000","message":"nit: redundant","commit_id":"9d183b220c5382f0f0a2371b71358479dd56020e"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"b1646cf80ce6cfe4bb844ac61b64f9bb2bff4a7b","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \u0027--detail\u0027,"},{"line_number":43,"context_line":"            dest\u003d\u0027detail\u0027,"},{"line_number":44,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":45,"context_line":"            default\u003dNone,"},{"line_number":46,"context_line":"            help\u003d\"Show detailed information about the drivers.\")"},{"line_number":47,"context_line":"        return parser"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1a1ced50_19bc7bdb","line":45,"in_reply_to":"1a1ced50_466e4297","updated":"2017-03-21 09:37:48.000000000","message":"Done","commit_id":"9d183b220c5382f0f0a2371b71358479dd56020e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c11bf62676f067a3316b46d695d02f17aa9a46","unresolved":false,"context_lines":[{"line_number":36,"context_line":"            \u0027--type\u0027,"},{"line_number":37,"context_line":"            metavar\u003d\u0027\u003ctype\u003e\u0027,"},{"line_number":38,"context_line":"            choices\u003d[\"classic\", \"dynamic\"],"},{"line_number":39,"context_line":"            help\u003d\u0027Type of drivers to list.\u0027"},{"line_number":40,"context_line":"        )"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027--detail\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_4ef8d949","line":39,"updated":"2017-03-21 14:13:30.000000000","message":"if you do eg \u0027openstack baremetal -h driver list\u0027, it\u0027ll show this line. It\u0027d be good to add the choices. E.g.: \u0027Type of driver (\"classic\" or \"dynamic\"). The default is to list all of them.\u0027","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c11bf62676f067a3316b46d695d02f17aa9a46","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            help\u003d\u0027Type of drivers to list.\u0027"},{"line_number":40,"context_line":"        )"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027--detail\u0027,"},{"line_number":43,"context_line":"            dest\u003d\u0027detail\u0027,"},{"line_number":44,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":45,"context_line":"            default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_f9f86dc5","line":42,"updated":"2017-03-21 14:13:30.000000000","message":"in OSC, we use --long, not --detail. (Take a look at the other resource commands.)","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"709f3c74c3a9dd24b99fc71dd165e86df2357810","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            help\u003d\u0027Type of drivers to list.\u0027"},{"line_number":40,"context_line":"        )"},{"line_number":41,"context_line":"        parser.add_argument("},{"line_number":42,"context_line":"            \u0027--detail\u0027,"},{"line_number":43,"context_line":"            dest\u003d\u0027detail\u0027,"},{"line_number":44,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":45,"context_line":"            default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_7938fdef","line":42,"in_reply_to":"1a1ced50_f9f86dc5","updated":"2017-03-21 14:25:43.000000000","message":"+1","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c11bf62676f067a3316b46d695d02f17aa9a46","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            metavar\u003d\u0027\u003cdriver\u003e\u0027,"},{"line_number":163,"context_line":"            help\u003d_(\u0027Name of the driver.\u0027))"},{"line_number":164,"context_line":"        parser.add_argument("},{"line_number":165,"context_line":"            \u0027--detail\u0027,"},{"line_number":166,"context_line":"            dest\u003d\u0027detail\u0027,"},{"line_number":167,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":168,"context_line":"            default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_5907c1c9","line":165,"updated":"2017-03-21 14:13:30.000000000","message":"same question i had with ironic driver-show.","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"14ecf2fd1274db8c5fb775f31c77601e5cb18721","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        #             whereas \u0027ironic driver show\u0027 displays this as a list"},{"line_number":177,"context_line":"        #             of hosts (eg \"host1, host2\" vs \"[u\u0027host1\u0027, u\u0027host2\u0027]\""},{"line_number":178,"context_line":"        driver[\u0027hosts\u0027] \u003d \u0027, \u0027.join(driver.get(\u0027hosts\u0027, ()))"},{"line_number":179,"context_line":"        return zip(*sorted(driver.items()))"}],"source_content_type":"text/x-python","patch_set":24,"id":"7ffa3b31_41a23b4d","line":179,"updated":"2017-04-18 19:28:17.000000000","message":"please have look at the rendered output enabled_*_interfaces looks ugly\nbetter to do the same formatting as done for hosts at L178\n\nhttp://paste.openstack.org/show/606962/","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"045163a29a024a36daa7a8f249434bb59f9082e0","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        #             whereas \u0027ironic driver show\u0027 displays this as a list"},{"line_number":177,"context_line":"        #             of hosts (eg \"host1, host2\" vs \"[u\u0027host1\u0027, u\u0027host2\u0027]\""},{"line_number":178,"context_line":"        driver[\u0027hosts\u0027] \u003d \u0027, \u0027.join(driver.get(\u0027hosts\u0027, ()))"},{"line_number":179,"context_line":"        return zip(*sorted(driver.items()))"}],"source_content_type":"text/x-python","patch_set":24,"id":"5ff73747_837d191e","line":179,"in_reply_to":"5ff73747_91833e05","updated":"2017-04-24 20:09:11.000000000","message":"Sigh. I am not sure if we should change ironic driver-list --detail (should it be consistent with OSC command, or ironic driver-show?) So I am fine either way.\n\nYes, we should also change openstack baremetal driver list --long, so it is consistent with openstack baremetal driver show.\n\nwrt ironic driver-show. We want to deprecate the ironic commands, AND  it isn\u0027t clear to me whether/how to make the change since it will break anyone that has a script that parses that information. So for those reasons, I wouldn\u0027t touch/fix it.","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"75f4b2caaed651ac5939de70e1c69b50ba2a1236","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        #             whereas \u0027ironic driver show\u0027 displays this as a list"},{"line_number":177,"context_line":"        #             of hosts (eg \"host1, host2\" vs \"[u\u0027host1\u0027, u\u0027host2\u0027]\""},{"line_number":178,"context_line":"        driver[\u0027hosts\u0027] \u003d \u0027, \u0027.join(driver.get(\u0027hosts\u0027, ()))"},{"line_number":179,"context_line":"        return zip(*sorted(driver.items()))"}],"source_content_type":"text/x-python","patch_set":24,"id":"7ffa3b31_2b4ed76e","line":179,"in_reply_to":"7ffa3b31_41a23b4d","updated":"2017-04-21 09:47:46.000000000","message":"Done","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4fa309d5e77bbd613b5b93b86b28cb4725efbaff","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        #             whereas \u0027ironic driver show\u0027 displays this as a list"},{"line_number":177,"context_line":"        #             of hosts (eg \"host1, host2\" vs \"[u\u0027host1\u0027, u\u0027host2\u0027]\""},{"line_number":178,"context_line":"        driver[\u0027hosts\u0027] \u003d \u0027, \u0027.join(driver.get(\u0027hosts\u0027, ()))"},{"line_number":179,"context_line":"        return zip(*sorted(driver.items()))"}],"source_content_type":"text/x-python","patch_set":24,"id":"7ffa3b31_6f075584","line":179,"in_reply_to":"7ffa3b31_41a23b4d","updated":"2017-04-18 21:20:25.000000000","message":"Good catch Vasyl. I thought I had tested this but I guess I forgot.","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"9eecfc728b2be585610a5f2c58369b702e72fcc0","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        #             whereas \u0027ironic driver show\u0027 displays this as a list"},{"line_number":177,"context_line":"        #             of hosts (eg \"host1, host2\" vs \"[u\u0027host1\u0027, u\u0027host2\u0027]\""},{"line_number":178,"context_line":"        driver[\u0027hosts\u0027] \u003d \u0027, \u0027.join(driver.get(\u0027hosts\u0027, ()))"},{"line_number":179,"context_line":"        return zip(*sorted(driver.items()))"}],"source_content_type":"text/x-python","patch_set":24,"id":"7ffa3b31_76a8fb8a","line":179,"in_reply_to":"7ffa3b31_41a23b4d","updated":"2017-04-21 06:01:52.000000000","message":"The same issue still exist for:\n\nopenstack baremetal driver list --long\nironic driver-list --detail\nironic driver-show ipmi","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"75f4b2caaed651ac5939de70e1c69b50ba2a1236","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        #             whereas \u0027ironic driver show\u0027 displays this as a list"},{"line_number":177,"context_line":"        #             of hosts (eg \"host1, host2\" vs \"[u\u0027host1\u0027, u\u0027host2\u0027]\""},{"line_number":178,"context_line":"        driver[\u0027hosts\u0027] \u003d \u0027, \u0027.join(driver.get(\u0027hosts\u0027, ()))"},{"line_number":179,"context_line":"        return zip(*sorted(driver.items()))"}],"source_content_type":"text/x-python","patch_set":24,"id":"7ffa3b31_cb5ad328","line":179,"in_reply_to":"7ffa3b31_6f075584","updated":"2017-04-21 09:47:46.000000000","message":"Done","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"75f4b2caaed651ac5939de70e1c69b50ba2a1236","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        #             whereas \u0027ironic driver show\u0027 displays this as a list"},{"line_number":177,"context_line":"        #             of hosts (eg \"host1, host2\" vs \"[u\u0027host1\u0027, u\u0027host2\u0027]\""},{"line_number":178,"context_line":"        driver[\u0027hosts\u0027] \u003d \u0027, \u0027.join(driver.get(\u0027hosts\u0027, ()))"},{"line_number":179,"context_line":"        return zip(*sorted(driver.items()))"}],"source_content_type":"text/x-python","patch_set":24,"id":"7ffa3b31_8f1fe506","line":179,"in_reply_to":"7ffa3b31_76a8fb8a","updated":"2017-04-21 09:47:46.000000000","message":"Sorry. I should notice the other cases. I can update the first two cases, but I\u0027m not sure for the \"ironic driver-show\". Please see the Ruby\u0027s comment at L175. I would want to hear more opinions about this before updating the patch.","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"c9ee583c2c01bb41f9d9024851b61636acb91b50","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        #             whereas \u0027ironic driver show\u0027 displays this as a list"},{"line_number":177,"context_line":"        #             of hosts (eg \"host1, host2\" vs \"[u\u0027host1\u0027, u\u0027host2\u0027]\""},{"line_number":178,"context_line":"        driver[\u0027hosts\u0027] \u003d \u0027, \u0027.join(driver.get(\u0027hosts\u0027, ()))"},{"line_number":179,"context_line":"        return zip(*sorted(driver.items()))"}],"source_content_type":"text/x-python","patch_set":24,"id":"5ff73747_91833e05","line":179,"in_reply_to":"7ffa3b31_8f1fe506","updated":"2017-04-24 07:16:08.000000000","message":"hm... indeed at the moment ironic driver-show returns hosts as \"| hosts    | [u\u0027vsaienko-ir-multinode-subnode\u0027] |\" I\u0027m ok if we fix now new commands that adding, and maybe fix \u0027ironic driver-show\u0027 in future as separate patch.","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"659c1395df3af791216a145bd107740bb9dd7e0b","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        for prop in list_props:"},{"line_number":199,"context_line":"            val \u003d driver.get(prop, None)"},{"line_number":200,"context_line":"            if val is not None:"},{"line_number":201,"context_line":"                driver[prop] \u003d \u0027, \u0027.join(val)"},{"line_number":202,"context_line":"        return zip(*sorted(driver.items()))"}],"source_content_type":"text/x-python","patch_set":27,"id":"5ff73747_2f3ccdbd","line":201,"updated":"2017-04-25 13:52:57.000000000","message":"We\u0027ve got duplicated code now. It looks like list_props is the same here as for L67.\n\nI can\u0027t remember the type of driver, vs d at L74, but it seems to me that if they are similar, all this could be done in a helper function that both these methods could call.","commit_id":"608f5c4807965df8d348246e24f3e213c4c1ea74"},{"author":{"_account_id":22724,"name":"Galyna Zholtkevych","email":"galynazholtkevych1991@gmail.com","username":"gzholtkevych"},"change_message_id":"291d2afe1a363a41a7ec1e67da0343da9df3fb02","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        # For list-type properties, show the values as comma separated"},{"line_number":66,"context_line":"        # strings. It\u0027s easier to read."},{"line_number":67,"context_line":"        for d in drivers:"},{"line_number":68,"context_line":"            d.convert_list_attrs_to_comma_separated()"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return (labels,"},{"line_number":71,"context_line":"                (oscutils.get_item_properties(s, columns) for s in drivers))"}],"source_content_type":"text/x-python","patch_set":28,"id":"5ff73747_4ecb7b1d","line":68,"range":{"start_line":68,"start_character":12,"end_line":68,"end_character":53},"updated":"2017-04-26 09:42:50.000000000","message":"as I said in common/base make this method not changing resource class, so here just:\n\nd \u003d convert_list_...()","commit_id":"1aec59796fbeeedaab7b737cc43930c9c78b46ea"}],"ironicclient/tests/functional/test_table_structure.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d5658ddcd5021ca4cea97999a786b9622dd4b413","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            2) check table structure"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        driver_list_header \u003d self.get_table_headers(\u0027driver-list\u0027)"},{"line_number":61,"context_line":"        self.assertTableHeaders("},{"line_number":62,"context_line":"            [\u0027Supported driver(s)\u0027, \u0027Active host(s)\u0027],"},{"line_number":63,"context_line":"            driver_list_header)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7ffa3b31_3a3515f8","line":61,"updated":"2017-04-18 16:55:57.000000000","message":"nit, you could \u0027undo\u0027 your changes here, so that this file isn\u0027t modified.","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"14ecf2fd1274db8c5fb775f31c77601e5cb18721","unresolved":false,"context_lines":[{"line_number":58,"context_line":"            2) check table structure"},{"line_number":59,"context_line":"        \"\"\""},{"line_number":60,"context_line":"        driver_list_header \u003d self.get_table_headers(\u0027driver-list\u0027)"},{"line_number":61,"context_line":"        self.assertTableHeaders("},{"line_number":62,"context_line":"            [\u0027Supported driver(s)\u0027, \u0027Active host(s)\u0027],"},{"line_number":63,"context_line":"            driver_list_header)"}],"source_content_type":"text/x-python","patch_set":24,"id":"7ffa3b31_d1086bda","line":61,"updated":"2017-04-18 19:28:17.000000000","message":"nit: not related change.","commit_id":"5db12de98db775e7d986993d7aa35c6d5abcd904"}],"ironicclient/tests/unit/osc/v1/fakes.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f384711fcd255ba9e0f2618f908a56db3c98a5c5","unresolved":false,"context_lines":[{"line_number":66,"context_line":"BAREMETAL_DRIVER \u003d {"},{"line_number":67,"context_line":"    \u0027hosts\u0027: baremetal_driver_hosts,"},{"line_number":68,"context_line":"    \u0027name\u0027: baremetal_driver_name,"},{"line_number":69,"context_line":"    \u0027type\u0027: baremetal_driver_type,"},{"line_number":70,"context_line":"}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"baremetal_driver_passthru_method \u003d \u0027lookup\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_389de959","line":69,"updated":"2017-01-26 16:57:14.000000000","message":"What about all the enabled/default interfaces fields?","commit_id":"0ee09d99792696a49ffb9d9ff5fbc61b1f432a81"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"c722e0eed3b092c66305eb50f995413d6dcf96ea","unresolved":false,"context_lines":[{"line_number":66,"context_line":"BAREMETAL_DRIVER \u003d {"},{"line_number":67,"context_line":"    \u0027hosts\u0027: baremetal_driver_hosts,"},{"line_number":68,"context_line":"    \u0027name\u0027: baremetal_driver_name,"},{"line_number":69,"context_line":"    \u0027type\u0027: baremetal_driver_type,"},{"line_number":70,"context_line":"}"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"baremetal_driver_passthru_method \u003d \u0027lookup\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_a7319f0d","line":69,"in_reply_to":"3a461143_389de959","updated":"2017-01-27 05:48:10.000000000","message":"Done","commit_id":"0ee09d99792696a49ffb9d9ff5fbc61b1f432a81"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5eaa10405e849d733531c6eded1f703f711ee765","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    \u0027enabled_network_interfaces\u0027: [\u0027network\u0027, \u0027network2\u0027],"},{"line_number":85,"context_line":"    \u0027enabled_power_interfaces\u0027: [\u0027power\u0027, \u0027power2\u0027],"},{"line_number":86,"context_line":"    \u0027enabled_raid_interfaces\u0027: [\u0027raid\u0027, \u0027raid2\u0027],"},{"line_number":87,"context_line":"    \u0027enabled_vendor_interfaces\u0027: [\u0027vendor\u0027, \u0027vendor2\u0027],"},{"line_number":88,"context_line":"}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"baremetal_driver_passthru_method \u003d \u0027lookup\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_8af44b5b","line":87,"updated":"2017-03-22 14:52:30.000000000","message":"I was looking at your tests. It might be a bit more work, but I was wondering if we should have variables for all of these values, so that the tests themselves, don\u0027t hardcode the values., e.g. baremetal_driver_vendor_ifaces\u003d .., baremetal_driver_def_vendor_iface\u003d..\n\n(I don\u0027t even think we need the \u0027baremetal\u0027 prefix but someone started that so I guess we should just be consistent...)","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"b322b2d0dfb1b7df3a6145f176c31cfba9325ac2","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    \u0027enabled_network_interfaces\u0027: [\u0027network\u0027, \u0027network2\u0027],"},{"line_number":85,"context_line":"    \u0027enabled_power_interfaces\u0027: [\u0027power\u0027, \u0027power2\u0027],"},{"line_number":86,"context_line":"    \u0027enabled_raid_interfaces\u0027: [\u0027raid\u0027, \u0027raid2\u0027],"},{"line_number":87,"context_line":"    \u0027enabled_vendor_interfaces\u0027: [\u0027vendor\u0027, \u0027vendor2\u0027],"},{"line_number":88,"context_line":"}"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"baremetal_driver_passthru_method \u003d \u0027lookup\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_b14312ae","line":87,"in_reply_to":"1a1ced50_8af44b5b","updated":"2017-03-23 10:13:37.000000000","message":"Done","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"}],"ironicclient/tests/unit/osc/v1/test_baremetal_driver.py":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"be26a08f0f0229e6239597bde7ee79c98303c737","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        columns, data \u003d self.cmd.take_action(parsed_args)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        collist \u003d ("},{"line_number":54,"context_line":"            \"Name\","},{"line_number":55,"context_line":"            \"Type\","},{"line_number":56,"context_line":"            \"Hosts\")"},{"line_number":57,"context_line":"        self.assertEqual(collist, tuple(columns))"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a1ff146_d462fdd7","line":54,"updated":"2017-03-15 12:28:40.000000000","message":"Why the naming was changed? It was possible to show specific column by name for example. This will be breaking change.\n\nopenstack baremetal driver list -c \u0027Supported driver(s)\u0027                                                                                           \n+---------------------+                                                                                                                                                                      \n| Supported driver(s) |                                                                                                                                                                      \n+---------------------+                                                                                                                                                                      \n| agent_ipmitool      |                                                                                                                                                                      \n| fake                |                                                                                                                                                                      \n| ipmi                |                                                                                                                                                                      \n| pxe_ipmitool        |                                                                                                                                                                      \n+---------------------+","commit_id":"0d54f5046233c7cf5f6a258addb849594a38a026"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"fb0a80d7032ea912f8012a6649e9f09e4bdbf6eb","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        columns, data \u003d self.cmd.take_action(parsed_args)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        collist \u003d ("},{"line_number":54,"context_line":"            \"Name\","},{"line_number":55,"context_line":"            \"Type\","},{"line_number":56,"context_line":"            \"Hosts\")"},{"line_number":57,"context_line":"        self.assertEqual(collist, tuple(columns))"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a1ff146_b3d2c6d0","line":54,"in_reply_to":"3a1ff146_d462fdd7","updated":"2017-03-16 13:02:54.000000000","message":"I see the column names for driver CLI are hard-coded, but the names for other CLI are defined in resource_fields.py. My solution is to make the code consistent, however it requires the column names to be changed. It seems that a recently merged patch set from Ruby Loo fixed the inconsistency issue without changing the names. I updated my code, too.","commit_id":"0d54f5046233c7cf5f6a258addb849594a38a026"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5eaa10405e849d733531c6eded1f703f711ee765","unresolved":false,"context_lines":[{"line_number":92,"context_line":"            \"Supported driver(s)\","},{"line_number":93,"context_line":"            \"Type\","},{"line_number":94,"context_line":"            \"Active host(s)\","},{"line_number":95,"context_line":"            \u0027Default Boot Interface\u0027,"},{"line_number":96,"context_line":"            \u0027Default Console Interface\u0027,"},{"line_number":97,"context_line":"            \u0027Default Deploy Interface\u0027,"},{"line_number":98,"context_line":"            \u0027Default Inspect Interface\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_8a952b34","line":95,"updated":"2017-03-22 14:52:30.000000000","message":"Oh. The above only uppercase the first word.","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"}],"ironicclient/tests/unit/v1/test_driver_shell.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5eaa10405e849d733531c6eded1f703f711ee765","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        client_mock \u003d self.client_mock"},{"line_number":148,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":149,"context_line":"        args.driver_name \u003d \u0027fake\u0027"},{"line_number":150,"context_line":"        args.detail \u003d None"},{"line_number":151,"context_line":"        args.json \u003d False"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        d_shell.do_driver_show(client_mock, args)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_5044c2b5","line":150,"updated":"2017-03-22 14:52:30.000000000","message":"don\u0027t need this","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"b322b2d0dfb1b7df3a6145f176c31cfba9325ac2","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        client_mock \u003d self.client_mock"},{"line_number":148,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":149,"context_line":"        args.driver_name \u003d \u0027fake\u0027"},{"line_number":150,"context_line":"        args.detail \u003d None"},{"line_number":151,"context_line":"        args.json \u003d False"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        d_shell.do_driver_show(client_mock, args)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_731543e3","line":150,"in_reply_to":"1a1ced50_5044c2b5","updated":"2017-03-23 10:13:37.000000000","message":"Done","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5eaa10405e849d733531c6eded1f703f711ee765","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        client_mock \u003d self.client_mock"},{"line_number":158,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":159,"context_line":"        args.driver_name \u003d \u0027fake\u0027"},{"line_number":160,"context_line":"        args.detail \u003d True"},{"line_number":161,"context_line":"        args.json \u003d False"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        d_shell.do_driver_show(client_mock, args)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_b00b367c","line":160,"updated":"2017-03-22 14:52:30.000000000","message":"ditto\n\nActually, I don\u0027t think you need this test.","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"b322b2d0dfb1b7df3a6145f176c31cfba9325ac2","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        client_mock \u003d self.client_mock"},{"line_number":158,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":159,"context_line":"        args.driver_name \u003d \u0027fake\u0027"},{"line_number":160,"context_line":"        args.detail \u003d True"},{"line_number":161,"context_line":"        args.json \u003d False"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        d_shell.do_driver_show(client_mock, args)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_93d63f26","line":160,"in_reply_to":"1a1ced50_b00b367c","updated":"2017-03-23 10:13:37.000000000","message":"Done","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5eaa10405e849d733531c6eded1f703f711ee765","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        d_shell.do_driver_list(client_mock, args)"},{"line_number":174,"context_line":"        client_mock.driver.list.assert_called_once_with(None, None)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_do_driver_list_with_type(self):"},{"line_number":177,"context_line":"        client_mock \u003d self.client_mock"},{"line_number":178,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":179,"context_line":"        args.type \u003d \u0027classic\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_106c0a34","line":176,"updated":"2017-03-22 14:52:30.000000000","message":"this tests type \u0026 detail","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"b322b2d0dfb1b7df3a6145f176c31cfba9325ac2","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        d_shell.do_driver_list(client_mock, args)"},{"line_number":174,"context_line":"        client_mock.driver.list.assert_called_once_with(None, None)"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def test_do_driver_list_with_type(self):"},{"line_number":177,"context_line":"        client_mock \u003d self.client_mock"},{"line_number":178,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":179,"context_line":"        args.type \u003d \u0027classic\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_f3df7337","line":176,"in_reply_to":"1a1ced50_106c0a34","updated":"2017-03-23 10:13:37.000000000","message":"Done","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"61dd1e2dc330697b4c085a6115934a712b601cb6","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        client_mock.driver.list.assert_called_once_with(driver_type\u003dNone,"},{"line_number":164,"context_line":"                                                        detail\u003dNone)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def test_do_driver_list_with_type_and_detail(self):"},{"line_number":167,"context_line":"        client_mock \u003d self.client_mock"},{"line_number":168,"context_line":"        args \u003d mock.MagicMock()"},{"line_number":169,"context_line":"        args.type \u003d \u0027classic\u0027"}],"source_content_type":"text/x-python","patch_set":29,"id":"5ff73747_5da300b3","line":166,"updated":"2017-04-27 14:43:08.000000000","message":"nit, usually \u0027detail\u0027 would mean that \u0027detail\u0027 is true, but it is false here. Maybe s/detail/no_detail/","commit_id":"ea2a8cc914778bddb43094ce81266c878fd2f417"}],"ironicclient/v1/driver.py":[{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"5e6aa98019d45b51de7b699a7a4e5c4b988c7919","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        path \u003d \u0027\u0027"},{"line_number":43,"context_line":"        if detail:"},{"line_number":44,"context_line":"            path +\u003d \u0027detail\u0027"},{"line_number":45,"context_line":"        if filters:"},{"line_number":46,"context_line":"            path +\u003d \u0027?\u0027 + \u0027\u0026\u0027.join(filters)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a461143_6e6252af","line":44,"updated":"2017-02-02 19:01:52.000000000","message":"This should be a filter, not part of the path. This will hit /v1/drivers/detail, and \"detail\" is not a driver name.\n\nExperienced this while trying the client in practice:\n\n(venv) stack@mario-devstack:~/python-ironicclient$ ironic --ironic-api-version\u003d1.31 driver-list --detail\nCould not find the following driver(s) or hardware type(s): detail. (HTTP 404)\n\nCode indicating that this should be a filter:\n\nhttps://github.com/openstack/ironic/commit/e77675781231409d16744ab9d1b13ffc92d358f6#diff-5c66a685e7ec3af38d94979ec33b4407R354","commit_id":"53cf7f010f7ef20b60131a9de9daf377a0735740"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"a757e31eed2462d794c75a1e8511093d4fbccc27","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        path \u003d \u0027\u0027"},{"line_number":43,"context_line":"        if detail:"},{"line_number":44,"context_line":"            path +\u003d \u0027detail\u0027"},{"line_number":45,"context_line":"        if filters:"},{"line_number":46,"context_line":"            path +\u003d \u0027?\u0027 + \u0027\u0026\u0027.join(filters)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a430d35_48c4de91","line":44,"in_reply_to":"3a461143_6e6252af","updated":"2017-02-03 07:34:39.000000000","message":"Done","commit_id":"53cf7f010f7ef20b60131a9de9daf377a0735740"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"08da2d10e89e90b0c264e5339060ec384de385f5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        filters \u003d []"},{"line_number":39,"context_line":"        if driver_type is not None:"},{"line_number":40,"context_line":"            filters.append(\u0027type\u003d%s\u0027 % driver_type)"},{"line_number":41,"context_line":"        if detail:"},{"line_number":42,"context_line":"            filters.append(\u0027detail\u003dtrue\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        path \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_19428f68","line":41,"updated":"2017-02-07 20:35:42.000000000","message":"I would prefer to set detail\u003dNone in L30 and add do\nif detail is not None:\n  append....\n\nThe problem here that it will hide API error for example when user do request with old api version and set detail to False. Normally request should be rejected from API, but with current client implementation it will succeed because detail argument will not be passed.","commit_id":"5e38b6c5ed1a529c179dafac1849fcff547701c0"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"cdec0143a64b90ed2acbecdb249ea3943174c5f9","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        filters \u003d []"},{"line_number":39,"context_line":"        if driver_type is not None:"},{"line_number":40,"context_line":"            filters.append(\u0027type\u003d%s\u0027 % driver_type)"},{"line_number":41,"context_line":"        if detail:"},{"line_number":42,"context_line":"            filters.append(\u0027detail\u003dtrue\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        path \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a430d35_28288499","line":41,"in_reply_to":"1a430d35_19428f68","updated":"2017-02-09 12:33:15.000000000","message":"I post a new patch set for that. Maybe I misunderstand your point, but I think both True and False are not None. So, if we pass detail\u003dFalse, we get all details, that seems not very correct.","commit_id":"5e38b6c5ed1a529c179dafac1849fcff547701c0"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"edc21ce4489360e2bda9dd73eb02d3cca928e21e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if driver_type is not None:"},{"line_number":40,"context_line":"            filters.append(\u0027type\u003d%s\u0027 % driver_type)"},{"line_number":41,"context_line":"        if detail is not None:"},{"line_number":42,"context_line":"            filters.append(\u0027detail\u003dtrue\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        path \u003d \u0027\u0027"},{"line_number":45,"context_line":"        if filters:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_04363103","line":42,"range":{"start_line":42,"start_character":28,"end_line":42,"end_character":39},"updated":"2017-02-10 12:08:20.000000000","message":"\u0027detail\u003d%s\u0027 % detail, we shouldn\u0027t override requested value.","commit_id":"b857e656dd11f25e1f6f456d7a5dc42638730d56"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"8771146177a51369ffa9ba06016eeae179b29b4e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        if driver_type is not None:"},{"line_number":40,"context_line":"            filters.append(\u0027type\u003d%s\u0027 % driver_type)"},{"line_number":41,"context_line":"        if detail is not None:"},{"line_number":42,"context_line":"            filters.append(\u0027detail\u003dtrue\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        path \u003d \u0027\u0027"},{"line_number":45,"context_line":"        if filters:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa31d9ce_973fa724","line":42,"range":{"start_line":42,"start_character":28,"end_line":42,"end_character":39},"in_reply_to":"fa31d9ce_04363103","updated":"2017-02-10 17:34:48.000000000","message":"Done","commit_id":"b857e656dd11f25e1f6f456d7a5dc42638730d56"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cc109925acfecb8362deb5e22fec27ffcc88246e","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    resource_class \u003d Driver"},{"line_number":28,"context_line":"    _resource_name \u003d \u0027drivers\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def list(self, driver_type\u003dNone, detail\u003dNone):"},{"line_number":31,"context_line":"        \"\"\"Retrieve a list of drivers."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        :param driver_type: Optional, string to filter the drivers by type."}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_8be111d3","line":30,"range":{"start_line":30,"start_character":44,"end_line":30,"end_character":48},"updated":"2017-03-08 16:57:34.000000000","message":"please change to False, see below for reasons.","commit_id":"2172298de39226c9e0d3a086e3676ed679896470"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"cc109925acfecb8362deb5e22fec27ffcc88246e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        filters \u003d []"},{"line_number":39,"context_line":"        if driver_type is not None:"},{"line_number":40,"context_line":"            filters.append(\u0027type\u003d%s\u0027 % driver_type)"},{"line_number":41,"context_line":"        if detail is not None:"},{"line_number":42,"context_line":"            filters.append(\u0027detail\u003d%s\u0027 % detail)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        path \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a30ddce_8bbaf1be","line":41,"range":{"start_line":41,"start_character":0,"end_line":41,"end_character":30},"updated":"2017-03-08 16:57:34.000000000","message":"Please change it to\n\n if detail:\n\nUsing detail requires a higher API version, so passing detail\u003dFalse (which is the default for your driver-list command change) makes tests fail.","commit_id":"2172298de39226c9e0d3a086e3676ed679896470"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"3268f646b1b1c65cb530655ac0004a01632324c6","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        filters \u003d []"},{"line_number":39,"context_line":"        if driver_type is not None:"},{"line_number":40,"context_line":"            filters.append(\u0027type\u003d%s\u0027 % driver_type)"},{"line_number":41,"context_line":"        if detail:"},{"line_number":42,"context_line":"            filters.append(\u0027detail\u003dtrue\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        path \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_38ebba79","line":41,"updated":"2017-03-10 15:27:50.000000000","message":"It will look strange for user if calling \u0027ironic driver-list --detail False\u0027 doesn\u0027t require API version, but \u0027ironic driver-list --detail True\u0027 requires. In my opinion it is better to always pass detail argument as it was specified by user to avoid confusion.","commit_id":"91eefdfd884322d2aca632f059622245e3666707"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"751012c22e8f8e295862932c1d4d4e3d632098a2","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        filters \u003d []"},{"line_number":39,"context_line":"        if driver_type is not None:"},{"line_number":40,"context_line":"            filters.append(\u0027type\u003d%s\u0027 % driver_type)"},{"line_number":41,"context_line":"        if detail:"},{"line_number":42,"context_line":"            filters.append(\u0027detail\u003dtrue\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        path \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_787612d8","line":41,"in_reply_to":"9a30ddce_38ebba79","updated":"2017-03-10 15:29:19.000000000","message":"Hmm, probably. Then we should default it to None in CLI.","commit_id":"91eefdfd884322d2aca632f059622245e3666707"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"2bc3f55239ed1b450faf63893c556808168040ed","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        filters \u003d []"},{"line_number":39,"context_line":"        if driver_type is not None:"},{"line_number":40,"context_line":"            filters.append(\u0027type\u003d%s\u0027 % driver_type)"},{"line_number":41,"context_line":"        if detail:"},{"line_number":42,"context_line":"            filters.append(\u0027detail\u003dtrue\u0027)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        path \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a30ddce_13db3950","line":41,"in_reply_to":"9a30ddce_787612d8","updated":"2017-03-10 15:36:46.000000000","message":"yeah, actually it was the reason why I asked to change this logic.","commit_id":"91eefdfd884322d2aca632f059622245e3666707"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c11bf62676f067a3316b46d695d02f17aa9a46","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \"\"\"Retrieve a list of drivers."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        :param driver_type: Optional, string to filter the drivers by type."},{"line_number":34,"context_line":"        :param detail: Optional, boolean whether to return detailed information"},{"line_number":35,"context_line":"                       about drivers."},{"line_number":36,"context_line":"        :returns: A list of drivers."},{"line_number":37,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_e8609d03","line":34,"updated":"2017-03-21 14:13:30.000000000","message":"nit, it can also be None which is not a Boolean value.","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c11bf62676f067a3316b46d695d02f17aa9a46","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        :param driver_type: Optional, string to filter the drivers by type."},{"line_number":34,"context_line":"        :param detail: Optional, boolean whether to return detailed information"},{"line_number":35,"context_line":"                       about drivers."},{"line_number":36,"context_line":"        :returns: A list of drivers."},{"line_number":37,"context_line":"        \"\"\""},{"line_number":38,"context_line":"        filters \u003d []"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_4bc0cb2a","line":35,"updated":"2017-03-21 14:13:30.000000000","message":"It would be good to put a note, either here or in driver_shell, to mention that this detail is handled differently from the other resources, because older versions of the server cannot handle filtering on detail, so we don\u0027t want to send that unless the user explicitly sets this value.","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5eaa10405e849d733531c6eded1f703f711ee765","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def list(self, driver_type\u003dNone, detail\u003dNone):"},{"line_number":31,"context_line":"        \"\"\"Retrieve a list of drivers."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        :param driver_type: Optional, string to filter the drivers by type."},{"line_number":34,"context_line":"        :param detail: Optional, flag whether to return detailed information"},{"line_number":35,"context_line":"                       about drivers. Default is None means not to send the arg"},{"line_number":36,"context_line":"                       to the server due to older versions of the server cannot"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_ca46437a","line":33,"updated":"2017-03-22 14:52:30.000000000","message":"should mention that it should be \u0027classic\u0027 or \u0027dynamic\u0027.","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"b322b2d0dfb1b7df3a6145f176c31cfba9325ac2","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def list(self, driver_type\u003dNone, detail\u003dNone):"},{"line_number":31,"context_line":"        \"\"\"Retrieve a list of drivers."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        :param driver_type: Optional, string to filter the drivers by type."},{"line_number":34,"context_line":"        :param detail: Optional, flag whether to return detailed information"},{"line_number":35,"context_line":"                       about drivers. Default is None means not to send the arg"},{"line_number":36,"context_line":"                       to the server due to older versions of the server cannot"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_316f22fd","line":33,"in_reply_to":"1a1ced50_ca46437a","updated":"2017-03-23 10:13:37.000000000","message":"Done","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"}],"ironicclient/v1/driver_shell.py":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"12b98eac5705fc6872189cec0c5944ebca2af81f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"              \u0027enabled_deploy_interfaces\u0027, \u0027enabled_inspect_interfaces\u0027,"},{"line_number":33,"context_line":"              \u0027enabled_management_interfaces\u0027, \u0027enabled_network_interfaces\u0027,"},{"line_number":34,"context_line":"              \u0027enabled_power_interfaces\u0027, \u0027enabled_raid_interfaces\u0027,"},{"line_number":35,"context_line":"              \u0027enabled_storage_interfaces\u0027, \u0027enabled_vendor_interfaces\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    data \u003d dict([(f, getattr(driver, f, \u0027\u0027)) for f in fields])"},{"line_number":38,"context_line":"    cliutils.print_dict(data, wrap\u003d72, json_flag\u003djson)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a461143_475e8d46","line":35,"updated":"2017-01-25 17:08:50.000000000","message":"We removed enabled_storage_interfaces and default_storage_interface for now, by the way. Should remove it here and elsewhere in this patch.","commit_id":"35854407955bd788b6516a40405037d2dbc378c7"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"738fd738a20326a818d391678ee9d8b756d677f2","unresolved":false,"context_lines":[{"line_number":32,"context_line":"              \u0027enabled_deploy_interfaces\u0027, \u0027enabled_inspect_interfaces\u0027,"},{"line_number":33,"context_line":"              \u0027enabled_management_interfaces\u0027, \u0027enabled_network_interfaces\u0027,"},{"line_number":34,"context_line":"              \u0027enabled_power_interfaces\u0027, \u0027enabled_raid_interfaces\u0027,"},{"line_number":35,"context_line":"              \u0027enabled_storage_interfaces\u0027, \u0027enabled_vendor_interfaces\u0027]"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    data \u003d dict([(f, getattr(driver, f, \u0027\u0027)) for f in fields])"},{"line_number":38,"context_line":"    cliutils.print_dict(data, wrap\u003d72, json_flag\u003djson)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a461143_a6e71311","line":35,"in_reply_to":"3a461143_475e8d46","updated":"2017-01-26 09:14:39.000000000","message":"Done","commit_id":"35854407955bd788b6516a40405037d2dbc378c7"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"8630036ee36aa74726e4f4eca54c673c7f2de8fb","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    if args.detail:"},{"line_number":50,"context_line":"        fields \u003d res_fields.DRIVER_DETAILED_RESOURCE.fields"},{"line_number":51,"context_line":"        field_labels \u003d res_fields.DRIVER_DETAILED_RESOURCE.labels"},{"line_number":52,"context_line":"    else:"},{"line_number":53,"context_line":"        fields \u003d res_fields.DRIVER_RESOURCE.fields"},{"line_number":54,"context_line":"        field_labels \u003d res_fields.DRIVER_RESOURCE.labels"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a461143_46bbcfc4","line":51,"updated":"2017-01-26 09:15:47.000000000","message":"Declaring resource fields within resource_fields.py is more consistent with others, such as declarations for Node, Chassis, Port, etc. But it causes the columns\u0027 labels in this case to be changed. So, what do you think?","commit_id":"0ee09d99792696a49ffb9d9ff5fbc61b1f432a81"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"471fa8b9fe5112a9047f4b2d6bdf828ba18dd8ee","unresolved":false,"context_lines":[{"line_number":36,"context_line":"@cliutils.arg(\u0027--detail\u0027,"},{"line_number":37,"context_line":"              dest\u003d\u0027detail\u0027,"},{"line_number":38,"context_line":"              action\u003d\u0027store_true\u0027,"},{"line_number":39,"context_line":"              default\u003dFalse,"},{"line_number":40,"context_line":"              help\u003d\"Show detailed information about the drivers.\")"},{"line_number":41,"context_line":"def do_driver_list(cc, args):"},{"line_number":42,"context_line":"    \"\"\"List the enabled drivers.\"\"\""}],"source_content_type":"text/x-python","patch_set":12,"id":"7a25e98e_ad739eb3","line":39,"range":{"start_line":39,"start_character":22,"end_line":39,"end_character":27},"updated":"2017-03-13 21:06:35.000000000","message":"should be None by default","commit_id":"b20c05331000e1a4a09072fc59511b951c98b81d"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"be26a08f0f0229e6239597bde7ee79c98303c737","unresolved":false,"context_lines":[{"line_number":32,"context_line":"@cliutils.arg(\u0027-t\u0027, \u0027--type\u0027,"},{"line_number":33,"context_line":"              metavar\u003d\u0027\u003ctype\u003e\u0027,"},{"line_number":34,"context_line":"              choices\u003d[\"classic\", \"dynamic\"],"},{"line_number":35,"context_line":"              help\u003d\u0027Type of driver to list.\u0027)"},{"line_number":36,"context_line":"@cliutils.arg(\u0027--detail\u0027,"},{"line_number":37,"context_line":"              dest\u003d\u0027detail\u0027,"},{"line_number":38,"context_line":"              action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a1ff146_74aa29d6","line":35,"range":{"start_line":35,"start_character":28,"end_line":35,"end_character":34},"updated":"2017-03-15 12:28:40.000000000","message":"s/driver/drivers/","commit_id":"0d54f5046233c7cf5f6a258addb849594a38a026"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"fb0a80d7032ea912f8012a6649e9f09e4bdbf6eb","unresolved":false,"context_lines":[{"line_number":32,"context_line":"@cliutils.arg(\u0027-t\u0027, \u0027--type\u0027,"},{"line_number":33,"context_line":"              metavar\u003d\u0027\u003ctype\u003e\u0027,"},{"line_number":34,"context_line":"              choices\u003d[\"classic\", \"dynamic\"],"},{"line_number":35,"context_line":"              help\u003d\u0027Type of driver to list.\u0027)"},{"line_number":36,"context_line":"@cliutils.arg(\u0027--detail\u0027,"},{"line_number":37,"context_line":"              dest\u003d\u0027detail\u0027,"},{"line_number":38,"context_line":"              action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a1ff146_53e272a0","line":35,"range":{"start_line":35,"start_character":28,"end_line":35,"end_character":34},"in_reply_to":"3a1ff146_74aa29d6","updated":"2017-03-16 13:02:54.000000000","message":"Done","commit_id":"0d54f5046233c7cf5f6a258addb849594a38a026"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c11bf62676f067a3316b46d695d02f17aa9a46","unresolved":false,"context_lines":[{"line_number":29,"context_line":"@cliutils.arg(\u0027-t\u0027, \u0027--type\u0027,"},{"line_number":30,"context_line":"              metavar\u003d\u0027\u003ctype\u003e\u0027,"},{"line_number":31,"context_line":"              choices\u003d[\"classic\", \"dynamic\"],"},{"line_number":32,"context_line":"              help\u003d\u0027Type of drivers to list.\u0027)"},{"line_number":33,"context_line":"@cliutils.arg(\u0027--detail\u0027,"},{"line_number":34,"context_line":"              dest\u003d\u0027detail\u0027,"},{"line_number":35,"context_line":"              action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_2e92bdf6","line":32,"updated":"2017-03-21 14:13:30.000000000","message":"if you do eg \u0027ironic help driver-list\u0027, it\u0027ll show this line. It\u0027d be good to add the choices. E.g.: \u0027Type of driver (\"classic\" or \"dynamic\"). The default is to list all of them.\u0027","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e26453fde14e16fac76ed482f4c9b5292a982ebf","unresolved":false,"context_lines":[{"line_number":34,"context_line":"              dest\u003d\u0027detail\u0027,"},{"line_number":35,"context_line":"              action\u003d\u0027store_true\u0027,"},{"line_number":36,"context_line":"              default\u003dNone,"},{"line_number":37,"context_line":"              help\u003d\"Show detailed information about the drivers.\")"},{"line_number":38,"context_line":"def do_driver_list(cc, args):"},{"line_number":39,"context_line":"    \"\"\"List the enabled drivers.\"\"\""},{"line_number":40,"context_line":"    drivers \u003d cc.driver.list(args.type, args.detail)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_59b8a1c8","line":37,"updated":"2017-03-21 14:15:29.000000000","message":"by the way, we might want to consider adding --fields here too.","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"709f3c74c3a9dd24b99fc71dd165e86df2357810","unresolved":false,"context_lines":[{"line_number":34,"context_line":"              dest\u003d\u0027detail\u0027,"},{"line_number":35,"context_line":"              action\u003d\u0027store_true\u0027,"},{"line_number":36,"context_line":"              default\u003dNone,"},{"line_number":37,"context_line":"              help\u003d\"Show detailed information about the drivers.\")"},{"line_number":38,"context_line":"def do_driver_list(cc, args):"},{"line_number":39,"context_line":"    \"\"\"List the enabled drivers.\"\"\""},{"line_number":40,"context_line":"    drivers \u003d cc.driver.list(args.type, args.detail)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_b915154a","line":37,"in_reply_to":"1a1ced50_59b8a1c8","updated":"2017-03-21 14:25:43.000000000","message":"The driver APIs don\u0027t support this, so -1 to adding --fields","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"9f27a3150e573fc8aab8ddb0ae612351a178cb68","unresolved":false,"context_lines":[{"line_number":34,"context_line":"              dest\u003d\u0027detail\u0027,"},{"line_number":35,"context_line":"              action\u003d\u0027store_true\u0027,"},{"line_number":36,"context_line":"              default\u003dNone,"},{"line_number":37,"context_line":"              help\u003d\"Show detailed information about the drivers.\")"},{"line_number":38,"context_line":"def do_driver_list(cc, args):"},{"line_number":39,"context_line":"    \"\"\"List the enabled drivers.\"\"\""},{"line_number":40,"context_line":"    drivers \u003d cc.driver.list(args.type, args.detail)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_17cd08b7","line":37,"in_reply_to":"1a1ced50_b915154a","updated":"2017-03-21 17:59:15.000000000","message":"Good point. I opened an RFE about it: https://bugs.launchpad.net/ironic/+bug/1674775","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c11bf62676f067a3316b46d695d02f17aa9a46","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"@cliutils.arg(\u0027driver_name\u0027, metavar\u003d\u0027\u003cdriver\u003e\u0027,"},{"line_number":58,"context_line":"              help\u003d\u0027Name of the driver.\u0027)"},{"line_number":59,"context_line":"@cliutils.arg(\u0027--detail\u0027,"},{"line_number":60,"context_line":"              dest\u003d\u0027detail\u0027,"},{"line_number":61,"context_line":"              action\u003d\u0027store_true\u0027,"},{"line_number":62,"context_line":"              default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_2e02bdb4","line":59,"updated":"2017-03-21 14:13:30.000000000","message":"this doesn\u0027t seem right. the driver-show already shows detailed information about a driver. It is odd to have a --detail option here. Why do we need it? If the api microversion is \u003e\u003d 1.30, they should see all the information.\n\nThis isn\u0027t mentioned in the spec: http://specs.openstack.org/openstack/ironic-specs/specs/7.0/driver-composition-reform.html#client-cli-impact\n\nWhat would make sense is a fields list that includes the desired fields. This is what the other \u003cresource\u003e_show commands support. (I am fine if we do this in a separate patch.)","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"709f3c74c3a9dd24b99fc71dd165e86df2357810","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"@cliutils.arg(\u0027driver_name\u0027, metavar\u003d\u0027\u003cdriver\u003e\u0027,"},{"line_number":58,"context_line":"              help\u003d\u0027Name of the driver.\u0027)"},{"line_number":59,"context_line":"@cliutils.arg(\u0027--detail\u0027,"},{"line_number":60,"context_line":"              dest\u003d\u0027detail\u0027,"},{"line_number":61,"context_line":"              action\u003d\u0027store_true\u0027,"},{"line_number":62,"context_line":"              default\u003dNone,"}],"source_content_type":"text/x-python","patch_set":17,"id":"1a1ced50_54014804","line":59,"in_reply_to":"1a1ced50_2e02bdb4","updated":"2017-03-21 14:25:43.000000000","message":"+1, just always show everything, similar to node_show","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5eaa10405e849d733531c6eded1f703f711ee765","unresolved":false,"context_lines":[{"line_number":39,"context_line":"              help\u003d\"Show detailed information about the drivers.\")"},{"line_number":40,"context_line":"def do_driver_list(cc, args):"},{"line_number":41,"context_line":"    \"\"\"List the enabled drivers.\"\"\""},{"line_number":42,"context_line":"    drivers \u003d cc.driver.list(args.type, args.detail)"},{"line_number":43,"context_line":"    # NOTE(lucasagomes): Separate each host by a comma."},{"line_number":44,"context_line":"    # It\u0027s easier to read."},{"line_number":45,"context_line":"    for d in drivers:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_c4b39708","line":42,"updated":"2017-03-22 14:52:30.000000000","message":"Please do driver_type\u003dargs.type, detail\u003dargs.detail","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"b322b2d0dfb1b7df3a6145f176c31cfba9325ac2","unresolved":false,"context_lines":[{"line_number":39,"context_line":"              help\u003d\"Show detailed information about the drivers.\")"},{"line_number":40,"context_line":"def do_driver_list(cc, args):"},{"line_number":41,"context_line":"    \"\"\"List the enabled drivers.\"\"\""},{"line_number":42,"context_line":"    drivers \u003d cc.driver.list(args.type, args.detail)"},{"line_number":43,"context_line":"    # NOTE(lucasagomes): Separate each host by a comma."},{"line_number":44,"context_line":"    # It\u0027s easier to read."},{"line_number":45,"context_line":"    for d in drivers:"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_f4049815","line":42,"in_reply_to":"1a1ced50_c4b39708","updated":"2017-03-23 10:13:37.000000000","message":"Done","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"fdfeb3e99d4016d11400d974ece95c6b7d4d61ab","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        field_labels \u003d res_fields.DRIVER_RESOURCE.labels"},{"line_number":53,"context_line":"        fields \u003d res_fields.DRIVER_RESOURCE.fields"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    cliutils.print_list(drivers, fields, field_labels\u003dfield_labels,"},{"line_number":56,"context_line":"                        json_flag\u003dargs.json)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ffe62b97_eb1d0110","line":55,"updated":"2017-03-23 21:07:52.000000000","message":"One thing I was wondering: should we still display the \"Type\" header if the user\u0027s using an API microversion that doesn\u0027t support it?\n\nThis is what the output looks like for the default version (1.9): http://paste.openstack.org/show/603982/\n\nCompare this to driver show, where we hide fields appropriately for older microversions: http://paste.openstack.org/show/603983/\n\nIt might be better if we hid it.","commit_id":"d1687942b45929152c164640468493ec50e68255"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"59999bdca7f4870bf68d92de836ae9d5081c77d5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        field_labels \u003d res_fields.DRIVER_RESOURCE.labels"},{"line_number":53,"context_line":"        fields \u003d res_fields.DRIVER_RESOURCE.fields"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    cliutils.print_list(drivers, fields, field_labels\u003dfield_labels,"},{"line_number":56,"context_line":"                        json_flag\u003dargs.json)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ffe62b97_d7c24234","line":55,"in_reply_to":"ffe62b97_64f1b4cd","updated":"2017-03-31 14:49:19.000000000","message":"I think we should follow the same way when adding new column as when adding field to object.\nIf new field is added it showed in client as empty field, why not do the same for new columns?","commit_id":"d1687942b45929152c164640468493ec50e68255"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f09a832987e17aee9c4e2f1c77e2e6664afc594a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        field_labels \u003d res_fields.DRIVER_RESOURCE.labels"},{"line_number":53,"context_line":"        fields \u003d res_fields.DRIVER_RESOURCE.fields"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    cliutils.print_list(drivers, fields, field_labels\u003dfield_labels,"},{"line_number":56,"context_line":"                        json_flag\u003dargs.json)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"bff0334d_1540a2a4","line":55,"in_reply_to":"ffe62b97_d7c24234","updated":"2017-04-10 18:01:00.000000000","message":"Vasyl has a good point. Although we probably shouldn\u0027t be showing those new fields (in rows).","commit_id":"d1687942b45929152c164640468493ec50e68255"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"00d6b9dfb2a5aeb07430a4264fb84ba10298f0fa","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        field_labels \u003d res_fields.DRIVER_RESOURCE.labels"},{"line_number":53,"context_line":"        fields \u003d res_fields.DRIVER_RESOURCE.fields"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    cliutils.print_list(drivers, fields, field_labels\u003dfield_labels,"},{"line_number":56,"context_line":"                        json_flag\u003dargs.json)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ffe62b97_64f1b4cd","line":55,"in_reply_to":"ffe62b97_eb1d0110","updated":"2017-03-27 14:56:04.000000000","message":"Sigh. Yes, Mario is right. I think this is probably the first time where we\u0027ve added a new column based on a microversion. The alternative is not to show a \u0027type\u0027 column unless --detail is specified, but I see in the spec and code, that the type info is being returned if microversion \u003e\u003d .30 so I guess to be consistent...","commit_id":"d1687942b45929152c164640468493ec50e68255"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"659c1395df3af791216a145bd107740bb9dd7e0b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        for prop in list_props:"},{"line_number":54,"context_line":"            val \u003d getattr(d, prop, None)"},{"line_number":55,"context_line":"            if val is not None:"},{"line_number":56,"context_line":"                setattr(d, prop, \u0027, \u0027.join(val))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    if args.detail:"},{"line_number":59,"context_line":"        field_labels \u003d res_fields.DRIVER_DETAILED_RESOURCE.labels"}],"source_content_type":"text/x-python","patch_set":27,"id":"5ff73747_2fd84d7d","line":56,"updated":"2017-04-25 13:52:57.000000000","message":"if you create a helper function as mentioned in baremetal_driver.py, then  it could be used here too.","commit_id":"608f5c4807965df8d348246e24f3e213c4c1ea74"}],"ironicclient/v1/resource_fields.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5eaa10405e849d733531c6eded1f703f711ee765","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        \u0027clean_step\u0027: \u0027Clean Step\u0027,"},{"line_number":39,"context_line":"        \u0027console_enabled\u0027: \u0027Console Enabled\u0027,"},{"line_number":40,"context_line":"        \u0027created_at\u0027: \u0027Created At\u0027,"},{"line_number":41,"context_line":"        \u0027default_boot_interface\u0027: \u0027Default Boot Interface\u0027,"},{"line_number":42,"context_line":"        \u0027default_console_interface\u0027: \u0027Default Console Interface\u0027,"},{"line_number":43,"context_line":"        \u0027default_deploy_interface\u0027: \u0027Default Deploy Interface\u0027,"},{"line_number":44,"context_line":"        \u0027default_inspect_interface\u0027: \u0027Default Inspect Interface\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"1a1ced50_95c0ec51","line":41,"updated":"2017-03-22 14:52:30.000000000","message":"we unfortunately are not consistent with our labels. I thought this was OK, but for the driver, it seems like the other labels (Supported driver(s), Active host(s)\u0027) only have the first letter in first word upper-cased.\n\nTwo choices: do the same for these, eg \u0027Default boot interface\u0027, or change the existing labels to conform to this.\n\nJust wondering if OSC has any guidelines on this; what do they do? Ok, I scanned a few OSC/compute commands, and they use this format. I opened bug https://bugs.launchpad.net/python-ironicclient/+bug/1675041 to track that.\n\nThis is OK but leaving this here in case someone thinks otherwise. :)","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"}],"releasenotes/notes/bug-1524745-extend-driver-list-and-driver-show-800d96393aa17342.yaml":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"12b98eac5705fc6872189cec0c5944ebca2af81f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Extend the CLI driver-list and driver-show for supporting the new ironic"},{"line_number":4,"context_line":"    dynamic drivers. These changes are available starting with ironic API"},{"line_number":5,"context_line":"    microversion 1.29."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3a461143_6722a9bb","line":5,"updated":"2017-01-25 17:08:50.000000000","message":"1.30.\n\nWe should also mention the new arguments (--type, and --detail)","commit_id":"35854407955bd788b6516a40405037d2dbc378c7"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"738fd738a20326a818d391678ee9d8b756d677f2","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Extend the CLI driver-list and driver-show for supporting the new ironic"},{"line_number":4,"context_line":"    dynamic drivers. These changes are available starting with ironic API"},{"line_number":5,"context_line":"    microversion 1.29."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"3a461143_0618e71c","line":5,"in_reply_to":"3a461143_6722a9bb","updated":"2017-01-26 09:14:39.000000000","message":"Done","commit_id":"35854407955bd788b6516a40405037d2dbc378c7"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e087ef617e5224820629af37eed5fe8512c16726","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Extend the CLI driver-list and driver-show for supporting the new ironic"},{"line_number":4,"context_line":"    dynamic drivers. These changes are available starting with ironic API"},{"line_number":5,"context_line":"    microversion 1.30."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3a461143_773f9bd6","line":5,"updated":"2017-02-02 10:57:44.000000000","message":"please also mention OSC changes","commit_id":"dadf79908ed33331c485742506beb0a2af42ac51"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"c837a2a9dbaa1def08090fdb2c1be74933f5eb7d","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Extend the CLI driver-list and driver-show for supporting the new ironic"},{"line_number":4,"context_line":"    dynamic drivers. These changes are available starting with ironic API"},{"line_number":5,"context_line":"    microversion 1.30."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3a461143_901fad08","line":5,"in_reply_to":"3a461143_773f9bd6","updated":"2017-02-02 11:55:36.000000000","message":"Done","commit_id":"dadf79908ed33331c485742506beb0a2af42ac51"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c11bf62676f067a3316b46d695d02f17aa9a46","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Extend the CLI driver-list, driver-show and the equivalent OSC commands"},{"line_number":4,"context_line":"    for supporting the new ironic dynamic drivers. These changes are available"},{"line_number":5,"context_line":"    starting with ironic API microversion 1.30."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1a1ced50_c8384140","line":3,"updated":"2017-03-21 14:13:30.000000000","message":"nit s/Extend/Extends/\n\nI think the OSC is also a CLI, so it would be better to s/CLI/ironic CLI commands/\n\nsee https://docs.openstack.org/developer/ironic/dev/faq.html#create-a-new-release-note","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"67c11bf62676f067a3316b46d695d02f17aa9a46","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Extend the CLI driver-list, driver-show and the equivalent OSC commands"},{"line_number":4,"context_line":"    for supporting the new ironic dynamic drivers. These changes are available"},{"line_number":5,"context_line":"    starting with ironic API microversion 1.30."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"1a1ced50_6814ad9f","line":4,"updated":"2017-03-21 14:13:30.000000000","message":"How about\n\nExtends the ironic CLI commands driver-list and driver-show, as well as the corresponding OSC commands, to support dynamic drivers.","commit_id":"47769a7859faf79c1725cb7562dccba455b68d1a"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"5eaa10405e849d733531c6eded1f703f711ee765","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"1a1ced50_44588756","line":6,"updated":"2017-03-22 14:52:30.000000000","message":"How about (the formatting needs to be fixed):\n\nTo support dynamic drivers (available starting with ironic API microversion 1.30):\n\n- ironic driver-list has two new optional arguments, ``--type \u003ctype\u003e`` for the type of driver (\u0027classic\u0027 or \u0027dynamic\u0027) to list, and ``--detail`` to show detailed information about the drivers.\n\n- ironic driver-show returns a lot more information, including the type of driver and the default and enabled interfaces.\n\n- openstack baremetal driver list has two new optional arguments, ``--type \u003ctype\u003e`` for the type of driver (\u0027classic\u0027 or \u0027dynamic\u0027) to list, and ``--long`` to show detailed information about the drivers.\n\n- openstack baremetal driver show returns a lot more information, including the type of driver and the default and enabled interfaces.\n\nWe should probably mention the python API but we\u0027ve never done that before so why start...","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"},{"author":{"_account_id":18320,"name":"Dao Cong Tien","email":"tiendc@vn.fujitsu.com","username":"TienDC"},"change_message_id":"b322b2d0dfb1b7df3a6145f176c31cfba9325ac2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"1a1ced50_34cc70ba","line":6,"in_reply_to":"1a1ced50_44588756","updated":"2017-03-23 10:13:37.000000000","message":"Done","commit_id":"80ea0758624b8f428dad99d92ee8db7cd85929ec"}]}
