)]}'
{"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"8fd666ac5dd05220dceda6ef13ec11de6a913564","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                            models.ConductorHardwareInterfaces.interface_name)"},{"line_number":807,"context_line":"                  .join(models.Conductor)"},{"line_number":808,"context_line":"                  .filter_by(online\u003dTrue)"},{"line_number":809,"context_line":"                  .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        d2c \u003d collections.defaultdict(set)"},{"line_number":812,"context_line":"        for iface_row, cdr_row in result:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_5973c6b1","line":809,"range":{"start_line":809,"start_character":26,"end_line":809,"end_character":63},"updated":"2017-01-13 11:06:34.000000000","message":"Hrm, this is the same as L788. Might be good to introduce get_online_conductors, if anything else needs it?","commit_id":"8b36b0c89c67ede85c6bc57c014f1a825057848d"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"30ab1c0153285ce0e7172f738dfa246d3c6d949b","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                            models.ConductorHardwareInterfaces.interface_name)"},{"line_number":807,"context_line":"                  .join(models.Conductor)"},{"line_number":808,"context_line":"                  .filter_by(online\u003dTrue)"},{"line_number":809,"context_line":"                  .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        d2c \u003d collections.defaultdict(set)"},{"line_number":812,"context_line":"        for iface_row, cdr_row in result:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_77270dca","line":809,"range":{"start_line":809,"start_character":26,"end_line":809,"end_character":63},"in_reply_to":"7a3c09a3_5973c6b1","updated":"2017-01-17 17:38:37.000000000","message":"Meh, don\u0027t think it\u0027s worth it to save two lines.","commit_id":"8b36b0c89c67ede85c6bc57c014f1a825057848d"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"d04d2b86b8e4976db92d3888b03b15202e91c5d2","unresolved":false,"context_lines":[{"line_number":806,"context_line":"                            models.ConductorHardwareInterfaces.interface_name)"},{"line_number":807,"context_line":"                  .join(models.Conductor)"},{"line_number":808,"context_line":"                  .filter_by(online\u003dTrue)"},{"line_number":809,"context_line":"                  .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        d2c \u003d collections.defaultdict(set)"},{"line_number":812,"context_line":"        for iface_row, cdr_row in result:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_b0fa5b41","line":809,"range":{"start_line":809,"start_character":26,"end_line":809,"end_character":63},"in_reply_to":"7a3c09a3_77270dca","updated":"2017-01-17 18:20:47.000000000","message":"On second thought, I\u0027m using this again later, so I\u0027ll do it.","commit_id":"8b36b0c89c67ede85c6bc57c014f1a825057848d"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dd245eebe331b239356af3832b57fb3ad3224fdb","unresolved":false,"context_lines":[{"line_number":808,"context_line":"                  .filter_by(online\u003dTrue)"},{"line_number":809,"context_line":"                  .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        d2c \u003d collections.defaultdict(set)"},{"line_number":812,"context_line":"        for iface_row, cdr_row in result:"},{"line_number":813,"context_line":"            d2c[iface_row[\u0027hardware_type\u0027]].add(cdr_row[\u0027hostname\u0027])"},{"line_number":814,"context_line":"        return d2c"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a3c09a3_821cdc14","line":811,"updated":"2017-01-18 23:16:52.000000000","message":"if \u0027d2c\u0027 \u003d\u003d driver-to-conductor in the method above, then this might be better as hw2c. But I don\u0027t like either name anyway, so it is fine as is :)\n\nIf I got to choose something, I\u0027d prefer a method docstring that describes what this is doing/returning :)","commit_id":"43167abca639a467ced897c75dcc9a1cd8d32867"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"611c6297a0bb057f90d8d8ef391838040d354c0c","unresolved":false,"context_lines":[{"line_number":808,"context_line":"                  .filter_by(online\u003dTrue)"},{"line_number":809,"context_line":"                  .filter(models.Conductor.updated_at \u003e\u003d limit))"},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"        d2c \u003d collections.defaultdict(set)"},{"line_number":812,"context_line":"        for iface_row, cdr_row in result:"},{"line_number":813,"context_line":"            d2c[iface_row[\u0027hardware_type\u0027]].add(cdr_row[\u0027hostname\u0027])"},{"line_number":814,"context_line":"        return d2c"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a3905b3_75cb2a73","line":811,"in_reply_to":"7a3c09a3_821cdc14","updated":"2017-01-19 11:32:04.000000000","message":"Well, this made me realize I didn\u0027t add this to db/api.py, so I\u0027ll do that with a docstring :)","commit_id":"43167abca639a467ced897c75dcc9a1cd8d32867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f054e1d7296723aed740fcdca0a0331018307b4e","unresolved":false,"context_lines":[{"line_number":803,"context_line":"                              models.Conductor)"},{"line_number":804,"context_line":"                  .distinct(models.ConductorHardwareInterfaces.hardware_type,"},{"line_number":805,"context_line":"                            models.ConductorHardwareInterfaces.interface_type,"},{"line_number":806,"context_line":"                            models.ConductorHardwareInterfaces.interface_name)"},{"line_number":807,"context_line":"                  .join(models.Conductor)"},{"line_number":808,"context_line":"                  .filter_by(online\u003dTrue)"},{"line_number":809,"context_line":"                  .filter(models.Conductor.updated_at \u003e\u003d limit))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_9fbb39c4","line":806,"updated":"2017-01-19 18:18:15.000000000","message":"the way this method works now, this distinct() is completely redundant. We can tolerate both duplicated conductor host names and hardware types in the result. I suggest we drop it in a follow-up.","commit_id":"725a07c5f9b0a7a4e52f9f84a3d4a4860b48679f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"e23b9f49bad29785f7119340c7642db535e08d32","unresolved":false,"context_lines":[{"line_number":803,"context_line":"                              models.Conductor)"},{"line_number":804,"context_line":"                  .distinct(models.ConductorHardwareInterfaces.hardware_type,"},{"line_number":805,"context_line":"                            models.ConductorHardwareInterfaces.interface_type,"},{"line_number":806,"context_line":"                            models.ConductorHardwareInterfaces.interface_name)"},{"line_number":807,"context_line":"                  .join(models.Conductor)"},{"line_number":808,"context_line":"                  .filter_by(online\u003dTrue)"},{"line_number":809,"context_line":"                  .filter(models.Conductor.updated_at \u003e\u003d limit))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_ce88adea","line":806,"in_reply_to":"5a3905b3_9fbb39c4","updated":"2017-01-19 20:20:46.000000000","message":"Done","commit_id":"725a07c5f9b0a7a4e52f9f84a3d4a4860b48679f"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"092bd3af603e729782f573844f6a0ff5b0123694","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def get_active_driver_dict(self, interval\u003dNone):"},{"line_number":792,"context_line":"        if interval is None:"},{"line_number":793,"context_line":"            interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        query \u003d model_query(models.Conductor)"},{"line_number":796,"context_line":"        result \u003d _filter_active_conductors(query, interval\u003dinterval)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_e1f8177f","line":793,"updated":"2017-01-19 22:35:47.000000000","message":"continuing the conversation from the original patch. The below call to _filter_active_conductors() will do the above logic, so I don\u0027t see why we need to do it here.","commit_id":"3c45f2fd1b8ca90ecc02ec32206eadab0333c7a1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"08327cf588c97c26ea00c529a3745b133842426a","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def get_active_driver_dict(self, interval\u003dNone):"},{"line_number":792,"context_line":"        if interval is None:"},{"line_number":793,"context_line":"            interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        query \u003d model_query(models.Conductor)"},{"line_number":796,"context_line":"        result \u003d _filter_active_conductors(query, interval\u003dinterval)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a461143_bb6137d5","line":793,"in_reply_to":"5a3905b3_59c54d3a","updated":"2017-01-31 18:01:12.000000000","message":"done in https://review.openstack.org/#/c/427335/","commit_id":"3c45f2fd1b8ca90ecc02ec32206eadab0333c7a1"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"bce2657cea9ed057bc01c8ea18a7f1c3b1f1b939","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def get_active_driver_dict(self, interval\u003dNone):"},{"line_number":792,"context_line":"        if interval is None:"},{"line_number":793,"context_line":"            interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        query \u003d model_query(models.Conductor)"},{"line_number":796,"context_line":"        result \u003d _filter_active_conductors(query, interval\u003dinterval)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_f3153a49","line":793,"in_reply_to":"5a3905b3_e1f8177f","updated":"2017-01-20 08:41:21.000000000","message":"+1 to cleanup L792-793","commit_id":"3c45f2fd1b8ca90ecc02ec32206eadab0333c7a1"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"2b416d3ef23a060c7d069de83ae1215604c6de9c","unresolved":false,"context_lines":[{"line_number":790,"context_line":""},{"line_number":791,"context_line":"    def get_active_driver_dict(self, interval\u003dNone):"},{"line_number":792,"context_line":"        if interval is None:"},{"line_number":793,"context_line":"            interval \u003d CONF.conductor.heartbeat_timeout"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        query \u003d model_query(models.Conductor)"},{"line_number":796,"context_line":"        result \u003d _filter_active_conductors(query, interval\u003dinterval)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_59c54d3a","line":793,"in_reply_to":"5a3905b3_f3153a49","updated":"2017-01-20 09:14:26.000000000","message":"Yeah, would be good to do","commit_id":"3c45f2fd1b8ca90ecc02ec32206eadab0333c7a1"}],"ironic/tests/unit/db/test_conductor.py":[{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"cbac4a1cc321ccb4a3d1857bef22489f058f019c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.dbapi.register_conductor(c)"},{"line_number":41,"context_line":"        self.dbapi.register_conductor(c, update_existing\u003dTrue)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _create_test_cdr(self, hardware_types\u003dNone, **kwargs):"},{"line_number":44,"context_line":"        hardware_types \u003d hardware_types or []"},{"line_number":45,"context_line":"        c \u003d utils.get_test_conductor(**kwargs)"},{"line_number":46,"context_line":"        cdr \u003d self.dbapi.register_conductor(c)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_59d666c6","line":43,"updated":"2017-01-13 11:23:25.000000000","message":"why not set [] by default here? L44 is not needed in this case.","commit_id":"8b36b0c89c67ede85c6bc57c014f1a825057848d"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"4a18aa547e4a12d5279f5a5ac81a7da761d8f251","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.dbapi.register_conductor(c)"},{"line_number":41,"context_line":"        self.dbapi.register_conductor(c, update_existing\u003dTrue)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def _create_test_cdr(self, hardware_types\u003dNone, **kwargs):"},{"line_number":44,"context_line":"        hardware_types \u003d hardware_types or []"},{"line_number":45,"context_line":"        c \u003d utils.get_test_conductor(**kwargs)"},{"line_number":46,"context_line":"        cdr \u003d self.dbapi.register_conductor(c)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a3c09a3_98d601c4","line":43,"in_reply_to":"7a3c09a3_59d666c6","updated":"2017-01-13 13:39:00.000000000","message":"That\u0027s a common problem in python, see http://docs.python-guide.org/en/latest/writing/gotchas/#mutable-default-arguments","commit_id":"8b36b0c89c67ede85c6bc57c014f1a825057848d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f054e1d7296723aed740fcdca0a0331018307b4e","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    def test_get_active_hardware_type_dict_one_host_one_ht(self, mock_utcnow):"},{"line_number":286,"context_line":"        h \u003d \u0027fake-host\u0027"},{"line_number":287,"context_line":"        ht \u003d \u0027hardware-type\u0027"},{"line_number":288,"context_line":"        expected \u003d {ht: set([h])}"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        mock_utcnow.return_value \u003d datetime.datetime.utcnow()"},{"line_number":291,"context_line":"        self._create_test_cdr(hostname\u003dh, drivers\u003d[], hardware_types\u003d[ht])"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_1fa10995","line":288,"updated":"2017-01-19 18:18:15.000000000","message":"it took me time to parse the old syntax, let\u0027s use set literals instead :)\n\n expected \u003d {ht: {h}}","commit_id":"725a07c5f9b0a7a4e52f9f84a3d4a4860b48679f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"e23b9f49bad29785f7119340c7642db535e08d32","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    def test_get_active_hardware_type_dict_one_host_one_ht(self, mock_utcnow):"},{"line_number":286,"context_line":"        h \u003d \u0027fake-host\u0027"},{"line_number":287,"context_line":"        ht \u003d \u0027hardware-type\u0027"},{"line_number":288,"context_line":"        expected \u003d {ht: set([h])}"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"        mock_utcnow.return_value \u003d datetime.datetime.utcnow()"},{"line_number":291,"context_line":"        self._create_test_cdr(hostname\u003dh, drivers\u003d[], hardware_types\u003d[ht])"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_ae5a8181","line":288,"in_reply_to":"5a3905b3_1fa10995","updated":"2017-01-19 20:20:46.000000000","message":"Done, fixed all of them in this file.","commit_id":"725a07c5f9b0a7a4e52f9f84a3d4a4860b48679f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f054e1d7296723aed740fcdca0a0331018307b4e","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        h \u003d \u0027fake-host\u0027"},{"line_number":298,"context_line":"        ht1 \u003d \u0027hardware-type\u0027"},{"line_number":299,"context_line":"        ht2 \u003d \u0027another-hardware-type\u0027"},{"line_number":300,"context_line":"        expected \u003d {ht1: set([h]), ht2: set([h])}"},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"        mock_utcnow.return_value \u003d datetime.datetime.utcnow()"},{"line_number":303,"context_line":"        self._create_test_cdr(hostname\u003dh, drivers\u003d[],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_3faec585","line":300,"updated":"2017-01-19 18:18:15.000000000","message":"ditto","commit_id":"725a07c5f9b0a7a4e52f9f84a3d4a4860b48679f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f054e1d7296723aed740fcdca0a0331018307b4e","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        h1 \u003d \u0027host-one\u0027"},{"line_number":311,"context_line":"        h2 \u003d \u0027host-two\u0027"},{"line_number":312,"context_line":"        ht \u003d \u0027hardware-type\u0027"},{"line_number":313,"context_line":"        expected \u003d {ht: set([h1, h2])}"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        mock_utcnow.return_value \u003d datetime.datetime.utcnow()"},{"line_number":316,"context_line":"        self._create_test_cdr(id\u003d1, hostname\u003dh1, drivers\u003d[],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_5fab9174","line":313,"updated":"2017-01-19 18:18:15.000000000","message":"ditto","commit_id":"725a07c5f9b0a7a4e52f9f84a3d4a4860b48679f"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f054e1d7296723aed740fcdca0a0331018307b4e","unresolved":false,"context_lines":[{"line_number":327,"context_line":"        h2 \u003d \u0027host-two\u0027"},{"line_number":328,"context_line":"        ht1 \u003d \u0027hardware-type\u0027"},{"line_number":329,"context_line":"        ht2 \u003d \u0027another-hardware-type\u0027"},{"line_number":330,"context_line":"        expected \u003d {ht1: set([h1, h2]), ht2: set([h1, h2])}"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        mock_utcnow.return_value \u003d datetime.datetime.utcnow()"},{"line_number":333,"context_line":"        self._create_test_cdr(id\u003d1, hostname\u003dh1, drivers\u003d[],"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a3905b3_7fb68ddd","line":330,"updated":"2017-01-19 18:18:15.000000000","message":"ditto","commit_id":"725a07c5f9b0a7a4e52f9f84a3d4a4860b48679f"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"092bd3af603e729782f573844f6a0ff5b0123694","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            self.dbapi.register_conductor_hardware_interfaces(cdr.id, ht,"},{"line_number":49,"context_line":"                                                              \u0027power\u0027,"},{"line_number":50,"context_line":"                                                              [\u0027ipmi\u0027, \u0027fake\u0027],"},{"line_number":51,"context_line":"                                                              \u0027ipmi\u0027)"},{"line_number":52,"context_line":"        return cdr"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_register_conductor_hardware_interfaces(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_813cb394","line":51,"updated":"2017-01-19 22:35:47.000000000","message":"nit: because I can look into the future, s/ipmi/ipmitool/ :)","commit_id":"3c45f2fd1b8ca90ecc02ec32206eadab0333c7a1"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"092bd3af603e729782f573844f6a0ff5b0123694","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                                                              \u0027power\u0027,"},{"line_number":50,"context_line":"                                                              [\u0027ipmi\u0027, \u0027fake\u0027],"},{"line_number":51,"context_line":"                                                              \u0027ipmi\u0027)"},{"line_number":52,"context_line":"        return cdr"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_register_conductor_hardware_interfaces(self):"},{"line_number":55,"context_line":"        c \u003d self._create_test_cdr()"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a3905b3_c114fbf6","line":52,"updated":"2017-01-19 22:35:47.000000000","message":"just a pet peeve, it would be easier for me, the reader, if this wasn\u0027t so abbreviated. \u0027conductor\u0027 isn\u0027t that hard to type, is it :) This reminds me of lisp but not your fault, the name of this function sez it all!","commit_id":"3c45f2fd1b8ca90ecc02ec32206eadab0333c7a1"}],"releasenotes/notes/hardware-types-in-hash-ring-d3f097e332c4d395.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dd245eebe331b239356af3832b57fb3ad3224fdb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Using a dynamic driver in a node\u0027s driver field is now possible, though"},{"line_number":4,"context_line":"    customizing the interfaces is not yet exposed in the REST API."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7a3c09a3_42867414","line":4,"updated":"2017-01-18 23:16:52.000000000","message":"so with this change, I could do a (REST API equiv) for ironic node-create -d \u0027manual-management\u0027 ?","commit_id":"43167abca639a467ced897c75dcc9a1cd8d32867"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"e3d7c34abf5a5253754da88c152e7bc41b5ee1fe","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Using a dynamic driver in a node\u0027s driver field is now possible, though"},{"line_number":4,"context_line":"    customizing the interfaces is not yet exposed in the REST API."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5a3905b3_15e746e5","line":4,"in_reply_to":"5a3905b3_f5bababf","updated":"2017-01-19 11:32:41.000000000","message":"Though of note - we only have the manual-management hardware type yet, which isn\u0027t useful in production :)","commit_id":"43167abca639a467ced897c75dcc9a1cd8d32867"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"611c6297a0bb057f90d8d8ef391838040d354c0c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Using a dynamic driver in a node\u0027s driver field is now possible, though"},{"line_number":4,"context_line":"    customizing the interfaces is not yet exposed in the REST API."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5a3905b3_f5bababf","line":4,"in_reply_to":"7a3c09a3_42867414","updated":"2017-01-19 11:32:04.000000000","message":"Yep.","commit_id":"43167abca639a467ced897c75dcc9a1cd8d32867"}]}
