)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dfaa1715f7267dd51fc9051231b58382be7940c0","unresolved":false,"context_lines":[{"line_number":12,"context_line":"* fake_drac uses iscsi deploy with None boot, which cannot work,"},{"line_number":13,"context_line":"  so changing both to fake"},{"line_number":14,"context_line":"* some fake drivers are migrated to the \u0027fake\u0027 power interface,"},{"line_number":15,"context_line":"  which is changed to include soft power as well."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Also wrote more tests to check correctness of this migration."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"5f93b717_7f977449","line":15,"updated":"2018-02-01 17:34:10.000000000","message":"this isn\u0027t quite right, if you do another revision, might want to change it.\n\nActually, since you changed it so that fake_soft_power driver is the same as fake_driver, we should probably update this.","commit_id":"14d41619653151f68adf1b228aaf6d4e302048ae"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"6455e395309a2050cb9232fef969d6b1af13a91b","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The latter means that all fake classic drivers now support fake"},{"line_number":18,"context_line":"soft power actions, while previously only fake_soft_power did."},{"line_number":19,"context_line":"Now fake_soft_power is identical to fake and is left for backward"},{"line_number":20,"context_line":"compatibility"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Also wrote more tests to check correctness of this migration."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5f93b717_9f53606b","line":20,"updated":"2018-02-01 17:40:11.000000000","message":"nit: s/$/./ :D","commit_id":"d1062cfbdd3fdacc4e4bd807f1508f90557bef65"}],"ironic/drivers/drac.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def to_hardware_type(cls):"},{"line_number":109,"context_line":"        return \u0027idrac\u0027, {\u0027boot\u0027: \u0027pxe\u0027,"},{"line_number":110,"context_line":"                         \u0027deploy\u0027: \u0027iscsi\u0027,"},{"line_number":111,"context_line":"                         \u0027inspect\u0027: \u0027inspector\u0027,"},{"line_number":112,"context_line":"                         \u0027management\u0027: \u0027idrac\u0027,"},{"line_number":113,"context_line":"                         \u0027power\u0027: \u0027idrac\u0027,"},{"line_number":114,"context_line":"                         \u0027raid\u0027: \u0027idrac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_41543b53","line":111,"updated":"2018-01-31 20:21:57.000000000","message":"I don\u0027t think this is correct. Because in ipmi.py [1] \u0026 [2], it depends on the config option.\n\n[1] driver interface is set here: https://github.com/openstack/ironic/blob/cc6f7bc73e2b1c9dad9624f3bc9c4c6ac3d103de/ironic/drivers/ipmi.py#L93\n[2] hardware type interface is determined here: [2] https://github.com/openstack/ironic/blob/cc6f7bc73e2b1c9dad9624f3bc9c4c6ac3d103de/ironic/drivers/ipmi.py#L64-L67","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def to_hardware_type(cls):"},{"line_number":109,"context_line":"        return \u0027idrac\u0027, {\u0027boot\u0027: \u0027pxe\u0027,"},{"line_number":110,"context_line":"                         \u0027deploy\u0027: \u0027iscsi\u0027,"},{"line_number":111,"context_line":"                         \u0027inspect\u0027: \u0027inspector\u0027,"},{"line_number":112,"context_line":"                         \u0027management\u0027: \u0027idrac\u0027,"},{"line_number":113,"context_line":"                         \u0027power\u0027: \u0027idrac\u0027,"},{"line_number":114,"context_line":"                         \u0027raid\u0027: \u0027idrac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_7c71c775","line":111,"in_reply_to":"5f93b717_41543b53","updated":"2018-02-01 14:27:16.000000000","message":"Yep","commit_id":"77603c18905f45e9cec7f828e061090285c41157"}],"ironic/drivers/fake.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":75,"context_line":"            iface: \u0027fake\u0027"},{"line_number":76,"context_line":"            for iface in [\u0027boot\u0027, \u0027console\u0027, \u0027deploy\u0027, \u0027inspect\u0027,"},{"line_number":77,"context_line":"                          \u0027management\u0027, \u0027power\u0027, \u0027raid\u0027, \u0027rescue\u0027, \u0027vendor\u0027]"},{"line_number":78,"context_line":"        }"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_a1bf3f5f","line":77,"updated":"2018-01-31 20:21:57.000000000","message":"we know that the \u0027fake\u0027 VendorInterface is fake.FakeVendorB, right? There is no mixin of A \u0026 B.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":75,"context_line":"            iface: \u0027fake\u0027"},{"line_number":76,"context_line":"            for iface in [\u0027boot\u0027, \u0027console\u0027, \u0027deploy\u0027, \u0027inspect\u0027,"},{"line_number":77,"context_line":"                          \u0027management\u0027, \u0027power\u0027, \u0027raid\u0027, \u0027rescue\u0027, \u0027vendor\u0027]"},{"line_number":78,"context_line":"        }"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_bcde6f3b","line":77,"in_reply_to":"5f93b717_a1bf3f5f","updated":"2018-02-01 14:27:16.000000000","message":"Right, I guess it\u0027s fine.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def __init__(self):"},{"line_number":85,"context_line":"        super(FakeSoftPowerDriver, self).__init__()"},{"line_number":86,"context_line":"        self.power \u003d fake.FakeSoftPower()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class FakeIPMIToolDriver(base.BaseDriver):"},{"line_number":90,"context_line":"    \"\"\"Example implementation of a Driver.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_a132df0e","line":87,"updated":"2018-01-31 20:21:57.000000000","message":"i wonder if we should add a note/comment that there is no corresponding hw type/interface for this. Or add a \u0027fake-soft\u0027 entry in setup.cfg for fake.FakeSoftPower","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    def __init__(self):"},{"line_number":85,"context_line":"        super(FakeSoftPowerDriver, self).__init__()"},{"line_number":86,"context_line":"        self.power \u003d fake.FakeSoftPower()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class FakeIPMIToolDriver(base.BaseDriver):"},{"line_number":90,"context_line":"    \"\"\"Example implementation of a Driver.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_5cd2cb29","line":87,"in_reply_to":"5f93b717_a132df0e","updated":"2018-02-01 14:27:16.000000000","message":"Actually, I\u0027ll just change \"fake\" to point to FakeSoftPower, as it\u0027s a strict super-set of FakePower.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    @classmethod"},{"line_number":212,"context_line":"    def to_hardware_type(cls):"},{"line_number":213,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":214,"context_line":"            \u0027boot\u0027: \u0027fake\u0027,"},{"line_number":215,"context_line":"            \u0027deploy\u0027: \u0027fake\u0027,"},{"line_number":216,"context_line":"            \u0027inspect\u0027: \u0027idrac\u0027,"},{"line_number":217,"context_line":"            \u0027management\u0027: \u0027idrac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_bc6686c0","line":214,"updated":"2018-01-31 20:21:57.000000000","message":"if deploy is \u0027iscsi\u0027, should this be \u0027pxe\u0027. Although the classic driver didn\u0027t set it, which should mean it is \u0027fake\u0027... ?","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    @classmethod"},{"line_number":212,"context_line":"    def to_hardware_type(cls):"},{"line_number":213,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":214,"context_line":"            \u0027boot\u0027: \u0027fake\u0027,"},{"line_number":215,"context_line":"            \u0027deploy\u0027: \u0027fake\u0027,"},{"line_number":216,"context_line":"            \u0027inspect\u0027: \u0027idrac\u0027,"},{"line_number":217,"context_line":"            \u0027management\u0027: \u0027idrac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_fca637c1","line":214,"in_reply_to":"5f93b717_bc6686c0","updated":"2018-02-01 14:27:16.000000000","message":"No, it means None. Which means that this driver is probably broken :(","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"58b6c85e1adcb988a9f632b3a72fe45d87e61165","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    def to_hardware_type(cls):"},{"line_number":213,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":214,"context_line":"            \u0027boot\u0027: \u0027fake\u0027,"},{"line_number":215,"context_line":"            \u0027deploy\u0027: \u0027fake\u0027,"},{"line_number":216,"context_line":"            \u0027inspect\u0027: \u0027idrac\u0027,"},{"line_number":217,"context_line":"            \u0027management\u0027: \u0027idrac\u0027,"},{"line_number":218,"context_line":"            \u0027power\u0027: \u0027idrac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_9e4dc29b","line":215,"updated":"2018-01-31 19:00:21.000000000","message":"This should be iscsi, according to the classic driver. But I thought all of these fake drivers were meant to be FakeDeploy(), so idk!","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"710a9acf0ce7adcfd461af88663447b96121ad0e","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    def to_hardware_type(cls):"},{"line_number":213,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":214,"context_line":"            \u0027boot\u0027: \u0027fake\u0027,"},{"line_number":215,"context_line":"            \u0027deploy\u0027: \u0027fake\u0027,"},{"line_number":216,"context_line":"            \u0027inspect\u0027: \u0027idrac\u0027,"},{"line_number":217,"context_line":"            \u0027management\u0027: \u0027idrac\u0027,"},{"line_number":218,"context_line":"            \u0027power\u0027: \u0027idrac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_fc7b9788","line":215,"in_reply_to":"5f93b717_99e8657c","updated":"2018-02-01 14:09:06.000000000","message":"True. However, that should have been pointed out wrt that classic driver. I think all we want to do here is provide an equivalence to hardware types. Unfortunately, L205 is for iscsi, so whether we agree that it should be or not, it is, so for this migration, we should use it. When we delete the classic drivers, we won\u0027t have to deal with this :)","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    def to_hardware_type(cls):"},{"line_number":213,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":214,"context_line":"            \u0027boot\u0027: \u0027fake\u0027,"},{"line_number":215,"context_line":"            \u0027deploy\u0027: \u0027fake\u0027,"},{"line_number":216,"context_line":"            \u0027inspect\u0027: \u0027idrac\u0027,"},{"line_number":217,"context_line":"            \u0027management\u0027: \u0027idrac\u0027,"},{"line_number":218,"context_line":"            \u0027power\u0027: \u0027idrac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_fcb96e14","line":215,"in_reply_to":"5f93b717_9e4dc29b","updated":"2018-01-31 20:21:57.000000000","message":"I think \u0027iscsi\u0027. Look at FakePXEDriver above @L145.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    def to_hardware_type(cls):"},{"line_number":213,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":214,"context_line":"            \u0027boot\u0027: \u0027fake\u0027,"},{"line_number":215,"context_line":"            \u0027deploy\u0027: \u0027fake\u0027,"},{"line_number":216,"context_line":"            \u0027inspect\u0027: \u0027idrac\u0027,"},{"line_number":217,"context_line":"            \u0027management\u0027: \u0027idrac\u0027,"},{"line_number":218,"context_line":"            \u0027power\u0027: \u0027idrac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_9cb053df","line":215,"in_reply_to":"5f93b717_fc7b9788","updated":"2018-02-01 14:27:16.000000000","message":"Well, if my guess is right, this driver is broken, and we don\u0027t have to provide any migration for it. But the intention of these drivers is to have fake deploy and boot, so I\u0027m putting fake here for consistency.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"8d7ed04732f6c4a0fcc5791329b5ddce8d341f92","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    def to_hardware_type(cls):"},{"line_number":213,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":214,"context_line":"            \u0027boot\u0027: \u0027fake\u0027,"},{"line_number":215,"context_line":"            \u0027deploy\u0027: \u0027fake\u0027,"},{"line_number":216,"context_line":"            \u0027inspect\u0027: \u0027idrac\u0027,"},{"line_number":217,"context_line":"            \u0027management\u0027: \u0027idrac\u0027,"},{"line_number":218,"context_line":"            \u0027power\u0027: \u0027idrac\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_99e8657c","line":215,"in_reply_to":"5f93b717_fcb96e14","updated":"2018-02-01 13:56:37.000000000","message":"Yeah, but at that point the only fake part about this driver is the boot driver, which doesn\u0027t seem terribly useful. Most of these drivers seem to be targeted toward real boot/deploy with fake hardware things, or real hardware things with fake boot/deploy.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"58b6c85e1adcb988a9f632b3a72fe45d87e61165","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            \u0027inspect\u0027: \u0027idrac\u0027,"},{"line_number":217,"context_line":"            \u0027management\u0027: \u0027idrac\u0027,"},{"line_number":218,"context_line":"            \u0027power\u0027: \u0027idrac\u0027,"},{"line_number":219,"context_line":"            \u0027raid\u0027: \u0027idrac\u0027"},{"line_number":220,"context_line":"        }"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_1e96924d","line":219,"updated":"2018-01-31 19:00:21.000000000","message":"Missing idrac vendor here.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            \u0027inspect\u0027: \u0027idrac\u0027,"},{"line_number":217,"context_line":"            \u0027management\u0027: \u0027idrac\u0027,"},{"line_number":218,"context_line":"            \u0027power\u0027: \u0027idrac\u0027,"},{"line_number":219,"context_line":"            \u0027raid\u0027: \u0027idrac\u0027"},{"line_number":220,"context_line":"        }"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_5cce4b63","line":219,"in_reply_to":"5f93b717_1e96924d","updated":"2018-02-01 14:27:16.000000000","message":"Done","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @classmethod"},{"line_number":235,"context_line":"    def to_hardware_type(cls):"},{"line_number":236,"context_line":"        return \u0027snmp\u0027, {"},{"line_number":237,"context_line":"            \u0027boot\u0027: \u0027fake\u0027,"},{"line_number":238,"context_line":"            \u0027deploy\u0027: \u0027fake\u0027,"},{"line_number":239,"context_line":"            \u0027management\u0027: \u0027fake\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_9c062ace","line":236,"updated":"2018-01-31 20:21:57.000000000","message":"so why is this \u0027snmp\u0027 and not \u0027fake-hardware\u0027 ? Vs above FakeDracDriver, it is \u0027fake-hardware\u0027, not \u0027idrac\u0027.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":233,"context_line":""},{"line_number":234,"context_line":"    @classmethod"},{"line_number":235,"context_line":"    def to_hardware_type(cls):"},{"line_number":236,"context_line":"        return \u0027snmp\u0027, {"},{"line_number":237,"context_line":"            \u0027boot\u0027: \u0027fake\u0027,"},{"line_number":238,"context_line":"            \u0027deploy\u0027: \u0027fake\u0027,"},{"line_number":239,"context_line":"            \u0027management\u0027: \u0027fake\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_fc0b978a","line":236,"in_reply_to":"5f93b717_9c062ace","updated":"2018-02-01 14:27:16.000000000","message":"Good point.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            \u0027inspect\u0027: \u0027inspector\u0027,"},{"line_number":289,"context_line":"            \u0027management\u0027: \u0027ipmitool\u0027,"},{"line_number":290,"context_line":"            \u0027power\u0027: \u0027ipmitool\u0027,"},{"line_number":291,"context_line":"        }"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"class FakeUcsDriver(base.BaseDriver):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_fcc3ae55","line":291,"updated":"2018-01-31 20:21:57.000000000","message":"what happened to vendor? shouldn\u0027t it be \u0027ipmitool\u0027 ?","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            \u0027inspect\u0027: \u0027inspector\u0027,"},{"line_number":289,"context_line":"            \u0027management\u0027: \u0027ipmitool\u0027,"},{"line_number":290,"context_line":"            \u0027power\u0027: \u0027ipmitool\u0027,"},{"line_number":291,"context_line":"        }"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"class FakeUcsDriver(base.BaseDriver):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_bc018f6c","line":291,"in_reply_to":"5f93b717_fcc3ae55","updated":"2018-02-01 14:27:16.000000000","message":"Done","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"58b6c85e1adcb988a9f632b3a72fe45d87e61165","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            \u0027inspect\u0027: \u0027fake\u0027,"},{"line_number":359,"context_line":"            \u0027management\u0027: \u0027oneview\u0027,"},{"line_number":360,"context_line":"            \u0027power\u0027: \u0027oneview\u0027"},{"line_number":361,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_be375eff","line":361,"updated":"2018-01-31 19:00:21.000000000","message":"Kind of wonder after reading through this file, if each of these should be using the \"real\" hardware type, and those hardware types should support fake deploy and such. I assume these are meant to be used with real hardware, so it would make more sense to me that way.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            \u0027inspect\u0027: \u0027fake\u0027,"},{"line_number":359,"context_line":"            \u0027management\u0027: \u0027oneview\u0027,"},{"line_number":360,"context_line":"            \u0027power\u0027: \u0027oneview\u0027"},{"line_number":361,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_bc366f50","line":361,"in_reply_to":"5f93b717_5c966240","updated":"2018-02-01 14:27:16.000000000","message":"\u003e those hardware types should support fake deploy and such\n\nNo, they should not, and that\u0027s the answer to your question :) Real hardware types only support real stuff, while the fake-hardware thing is special because it supports anything.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            \u0027inspect\u0027: \u0027fake\u0027,"},{"line_number":359,"context_line":"            \u0027management\u0027: \u0027oneview\u0027,"},{"line_number":360,"context_line":"            \u0027power\u0027: \u0027oneview\u0027"},{"line_number":361,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_5c966240","line":361,"in_reply_to":"5f93b717_be375eff","updated":"2018-01-31 20:21:57.000000000","message":"+1 to wondering :)","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fae8ff3c535b7be8a0391d2cb94bb13d2fed469e","unresolved":false,"context_lines":[{"line_number":136,"context_line":"    \"\"\"Example implementation of a Driver.\"\"\""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"    def __init__(self):"},{"line_number":139,"context_line":"        self.power \u003d fake.FakePower()"},{"line_number":140,"context_line":"        self.boot \u003d pxe.PXEBoot()"},{"line_number":141,"context_line":"        self.deploy \u003d iscsi_deploy.ISCSIDeploy()"},{"line_number":142,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_627b5e27","line":139,"updated":"2018-02-01 15:25:40.000000000","message":"Don\u0027t know if we want to comment, or change this to fake.FakePowerWithoutSoft.","commit_id":"f6e57dcc3e2fbe3dfd8ff9e3afd8c9f29278a80f"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"fae8ff3c535b7be8a0391d2cb94bb13d2fed469e","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    \"\"\"Example implementation of an AgentDriver.\"\"\""},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def __init__(self):"},{"line_number":157,"context_line":"        self.power \u003d fake.FakePower()"},{"line_number":158,"context_line":"        self.boot \u003d pxe.PXEBoot()"},{"line_number":159,"context_line":"        self.deploy \u003d agent.AgentDeploy()"},{"line_number":160,"context_line":"        self.raid \u003d agent.AgentRAID()"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f93b717_82978a3a","line":157,"updated":"2018-02-01 15:25:40.000000000","message":"ditto","commit_id":"f6e57dcc3e2fbe3dfd8ff9e3afd8c9f29278a80f"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dfaa1715f7267dd51fc9051231b58382be7940c0","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    @classmethod"},{"line_number":73,"context_line":"    def to_hardware_type(cls):"},{"line_number":74,"context_line":"        # NOTE(dtantsur): for simplicity, map the power interface to the"},{"line_number":75,"context_line":"        # full-featured (with soft power) one."},{"line_number":76,"context_line":"        return \u0027fake-hardware\u0027, {"},{"line_number":77,"context_line":"            iface: \u0027fake\u0027"},{"line_number":78,"context_line":"            for iface in [\u0027boot\u0027, \u0027console\u0027, \u0027deploy\u0027, \u0027inspect\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5f93b717_bfb41cf3","line":75,"updated":"2018-02-01 17:34:10.000000000","message":"this might be a bit confusing now.","commit_id":"14d41619653151f68adf1b228aaf6d4e302048ae"}],"ironic/drivers/ilo.py":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"58b6c85e1adcb988a9f632b3a72fe45d87e61165","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.deploy \u003d iscsi_deploy.ISCSIDeploy()"},{"line_number":94,"context_line":"        self.console \u003d console.IloConsoleInterface()"},{"line_number":95,"context_line":"        self.management \u003d management.IloManagement()"},{"line_number":96,"context_line":"        self.vendor \u003d vendor.VendorPassthru()"},{"line_number":97,"context_line":"        self.inspect \u003d inspect.IloInspect()"},{"line_number":98,"context_line":"        self.raid \u003d agent.AgentRAID()"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_3e3d8e2a","line":96,"updated":"2018-01-31 19:00:21.000000000","message":"Wish this was named IloVendorPassthru, got confused for a moment :)","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        self.deploy \u003d iscsi_deploy.ISCSIDeploy()"},{"line_number":94,"context_line":"        self.console \u003d console.IloConsoleInterface()"},{"line_number":95,"context_line":"        self.management \u003d management.IloManagement()"},{"line_number":96,"context_line":"        self.vendor \u003d vendor.VendorPassthru()"},{"line_number":97,"context_line":"        self.inspect \u003d inspect.IloInspect()"},{"line_number":98,"context_line":"        self.raid \u003d agent.AgentRAID()"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_fcedeeb6","line":96,"in_reply_to":"5f93b717_3e3d8e2a","updated":"2018-01-31 20:21:57.000000000","message":"cuz of the inconsistency. I actually prefer ilovendor.VendorPassthru() myself :)","commit_id":"77603c18905f45e9cec7f828e061090285c41157"}],"ironic/tests/unit/drivers/test_base.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e984b156322a8f078c7ec87b140d5d5bbf4bb59c","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                              (driver, iface))"},{"line_number":516,"context_line":"                self.assertIn(value, self.existing_ifaces[iface],"},{"line_number":517,"context_line":"                              \u0027%s returns unknown %s interface %s\u0027 %"},{"line_number":518,"context_line":"                              (driver, iface, value))"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def test_to_hardware_type_mandatory_interfaces(self):"},{"line_number":521,"context_line":"        for driver in self.driver_classes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_1cb3fa99","line":518,"updated":"2018-01-31 20:21:57.000000000","message":"This test and the one above are very similar and could use a helper method, but we\u0027re going to delete this in a cycle or two so...","commit_id":"77603c18905f45e9cec7f828e061090285c41157"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9a1cf55761bb069cf3085a5e341cca8c9e1daca5","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                              (driver, iface))"},{"line_number":516,"context_line":"                self.assertIn(value, self.existing_ifaces[iface],"},{"line_number":517,"context_line":"                              \u0027%s returns unknown %s interface %s\u0027 %"},{"line_number":518,"context_line":"                              (driver, iface, value))"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"    def test_to_hardware_type_mandatory_interfaces(self):"},{"line_number":521,"context_line":"        for driver in self.driver_classes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"5f93b717_1c20c3f6","line":518,"in_reply_to":"5f93b717_1cb3fa99","updated":"2018-02-01 14:27:16.000000000","message":"Yeah, probably not worth cleaning up.","commit_id":"77603c18905f45e9cec7f828e061090285c41157"}],"releasenotes/notes/fake_soft_power-32683a848a989fc2.yaml":[{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"2b7c29eac1d96494f38e42159c040cc9a7daa2c4","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    All ``fake`` classic drivers now implement fake soft power actions."},{"line_number":5,"context_line":"    The ``fake_soft_power`` driver is now identical to ``fake``."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"5f93b717_bf82dcfe","line":5,"updated":"2018-02-01 17:33:23.000000000","message":"I read through all of the release notes between Juno and Ocata the other day, because reasons. I noticed a lot of them felt irrelevant, I start to wonder about release notes like this as I really doubt this affects anyone\u0027s work, and just makes the release notes harder to read.\n\nThis is a bigger conversation though, just needed to vent for now. :)","commit_id":"14d41619653151f68adf1b228aaf6d4e302048ae"}]}
