)]}'
{"specs/approved/driver-composition-reform.rst":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2e8f472548dae3da6e5f579571419dae882ffb7e","unresolved":false,"context_lines":[{"line_number":81,"context_line":"With this spec we are going to achieve the following goals:"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* Make *vendors* in charge of defining a set of supported interface"},{"line_number":84,"context_line":"  implementations and the default implementation to be used."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* Allow *vendors* to guarantee that unsupported interface implementations"},{"line_number":87,"context_line":"  will not be used with hardware types they define. This is done by having"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_d3731b14","line":84,"updated":"2016-08-24 22:10:05.000000000","message":"not the default implementation; maybe mention that the interface implementations are ordered ...","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"602bdedff710542267b18bc9bdb0ef921597e02d","unresolved":false,"context_lines":[{"line_number":81,"context_line":"With this spec we are going to achieve the following goals:"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* Make *vendors* in charge of defining a set of supported interface"},{"line_number":84,"context_line":"  implementations and the default implementation to be used."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* Allow *vendors* to guarantee that unsupported interface implementations"},{"line_number":87,"context_line":"  will not be used with hardware types they define. This is done by having"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_52e6ceb4","line":84,"in_reply_to":"1ac06dbe_d3731b14","updated":"2016-08-25 17:45:10.000000000","message":"Done","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d54ebf1840263947d538e79487fb88567a9639bd","unresolved":false,"context_lines":[{"line_number":81,"context_line":"With this spec we are going to achieve the following goals:"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* Make *vendors* in charge of defining a set of supported interface"},{"line_number":84,"context_line":"  implementations and the default implementation to be used."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* Allow *vendors* to guarantee that unsupported interface implementations"},{"line_number":87,"context_line":"  will not be used with hardware types they define. This is done by having"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_ccea3174","line":84,"in_reply_to":"1ac06dbe_d3731b14","updated":"2016-08-25 12:53:18.000000000","message":"Good catch, I somehow missed it when I was searching through to any reference for default :(  But otherwise, absolutely!","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2e8f472548dae3da6e5f579571419dae882ffb7e","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* Create a family of configuration options ``default_\u003cINTERFACE\u003e_interface``"},{"line_number":134,"context_line":"  that allows an operator to explicitly set a default interface for new nodes"},{"line_number":135,"context_line":"  node upon creation, if one is not supplied by the user."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Create a family of configuration options ``enabled_\u003cINTERFACE\u003e_interfaces``"},{"line_number":138,"context_line":"  with a list of enabled implementations of each *hardware interface* that"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_70e7bdac","line":135,"updated":"2016-08-24 22:10:05.000000000","message":"s/node //\n\nmaybe s/supplied by the user/specified in the creation request/. The user is typically the operator, so would rather not use \u0027user\u0027 in case someone thinks that is an end user.","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"602bdedff710542267b18bc9bdb0ef921597e02d","unresolved":false,"context_lines":[{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* Create a family of configuration options ``default_\u003cINTERFACE\u003e_interface``"},{"line_number":134,"context_line":"  that allows an operator to explicitly set a default interface for new nodes"},{"line_number":135,"context_line":"  node upon creation, if one is not supplied by the user."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Create a family of configuration options ``enabled_\u003cINTERFACE\u003e_interfaces``"},{"line_number":138,"context_line":"  with a list of enabled implementations of each *hardware interface* that"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_52940ee1","line":135,"in_reply_to":"1ac06dbe_70e7bdac","updated":"2016-08-25 17:45:10.000000000","message":"Absolutely agree, thank you!","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2e8f472548dae3da6e5f579571419dae882ffb7e","unresolved":false,"context_lines":[{"line_number":139,"context_line":"  are available for use in the ironic deployment."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* Update new node creation logic to identify the interface for use with the"},{"line_number":142,"context_line":"  requested *hardware type* by choosing the first available driver from an"},{"line_number":143,"context_line":"  intersection of the ``enabled_\u003cINTERFACE\u003e_interfaces`` as defined in the"},{"line_number":144,"context_line":"  deployment\u0027s configuration and the *hardware_type*\u0027s priority ordered list"},{"line_number":145,"context_line":"  of supported_\u003cINTERFACE\u003e_interfaces. This calculated default will be stored"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_b3393fdb","line":142,"updated":"2016-08-24 22:10:05.000000000","message":"so we don\u0027t confuse the classic driver with this driver, maybe s/driver/interface implementation/","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"602bdedff710542267b18bc9bdb0ef921597e02d","unresolved":false,"context_lines":[{"line_number":139,"context_line":"  are available for use in the ironic deployment."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* Update new node creation logic to identify the interface for use with the"},{"line_number":142,"context_line":"  requested *hardware type* by choosing the first available driver from an"},{"line_number":143,"context_line":"  intersection of the ``enabled_\u003cINTERFACE\u003e_interfaces`` as defined in the"},{"line_number":144,"context_line":"  deployment\u0027s configuration and the *hardware_type*\u0027s priority ordered list"},{"line_number":145,"context_line":"  of supported_\u003cINTERFACE\u003e_interfaces. This calculated default will be stored"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_b215824a","line":142,"in_reply_to":"1ac06dbe_b3393fdb","updated":"2016-08-25 17:45:10.000000000","message":"Done","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2e8f472548dae3da6e5f579571419dae882ffb7e","unresolved":false,"context_lines":[{"line_number":143,"context_line":"  intersection of the ``enabled_\u003cINTERFACE\u003e_interfaces`` as defined in the"},{"line_number":144,"context_line":"  deployment\u0027s configuration and the *hardware_type*\u0027s priority ordered list"},{"line_number":145,"context_line":"  of supported_\u003cINTERFACE\u003e_interfaces. This calculated default will be stored"},{"line_number":146,"context_line":"  in the database at the time of creation."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Change how we load drivers instead of one singleton instance of a driver,"},{"line_number":149,"context_line":"  we\u0027ll have an instance of *dynamic driver* per node, containing links"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_53ec4b8f","line":146,"updated":"2016-08-24 22:10:05.000000000","message":"maybe s/database/database (for that node)/","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"602bdedff710542267b18bc9bdb0ef921597e02d","unresolved":false,"context_lines":[{"line_number":143,"context_line":"  intersection of the ``enabled_\u003cINTERFACE\u003e_interfaces`` as defined in the"},{"line_number":144,"context_line":"  deployment\u0027s configuration and the *hardware_type*\u0027s priority ordered list"},{"line_number":145,"context_line":"  of supported_\u003cINTERFACE\u003e_interfaces. This calculated default will be stored"},{"line_number":146,"context_line":"  in the database at the time of creation."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Change how we load drivers instead of one singleton instance of a driver,"},{"line_number":149,"context_line":"  we\u0027ll have an instance of *dynamic driver* per node, containing links"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_35b5fc30","line":146,"in_reply_to":"1ac06dbe_53ec4b8f","updated":"2016-08-25 17:45:10.000000000","message":"Reworded a little bit more than that, Hopefully it reads better. :)","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2e8f472548dae3da6e5f579571419dae882ffb7e","unresolved":false,"context_lines":[{"line_number":193,"context_line":"  we add a new interface (which hopefully won\u0027t happen too often)."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  For *hardware types* setting ``\u003cinterface_name\u003e_interface`` field to ``None``"},{"line_number":196,"context_line":"  means using the *vendor* default defined in the *hardware type*."},{"line_number":197,"context_line":"  If the *vendor* default is ``None``, the interface will be disabled."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"  Trying to set any of these fields to a value other than ``None`` will result"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_b35dbf4a","line":196,"updated":"2016-08-24 22:10:05.000000000","message":"this needs to be updated.  We\u0027re going to use the calculated default in this case, right?","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d54ebf1840263947d538e79487fb88567a9639bd","unresolved":false,"context_lines":[{"line_number":193,"context_line":"  we add a new interface (which hopefully won\u0027t happen too often)."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  For *hardware types* setting ``\u003cinterface_name\u003e_interface`` field to ``None``"},{"line_number":196,"context_line":"  means using the *vendor* default defined in the *hardware type*."},{"line_number":197,"context_line":"  If the *vendor* default is ``None``, the interface will be disabled."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"  Trying to set any of these fields to a value other than ``None`` will result"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_6caa1d1b","line":196,"in_reply_to":"1ac06dbe_b35dbf4a","updated":"2016-08-25 12:53:18.000000000","message":"Oh yes, and we can\u0027t actually have the field set to None as we\u0027ve learned that can cause some issues.","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3218f03f74915b63145fe81ca99ba01c142d6a11","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"  ``default_\u003cinterface_name\u003e_interface``"},{"line_number":361,"context_line":"    the entrypoint name of the calculated default implementation for a"},{"line_number":362,"context_line":"    given interface."},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"  ``enabled_\u003cinterface_name\u003e_interfaces``"},{"line_number":365,"context_line":"    the list of entrypoint names of enabled implementations for a given"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3ac371cc_6116064d","line":362,"updated":"2016-08-18 14:45:27.000000000","message":"I think it still makes sense to expose what the default would be, and possibly this would play into the database and storage of the running calculated default.  Thoughts?","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2e8f472548dae3da6e5f579571419dae882ffb7e","unresolved":false,"context_lines":[{"line_number":359,"context_line":""},{"line_number":360,"context_line":"  ``default_\u003cinterface_name\u003e_interface``"},{"line_number":361,"context_line":"    the entrypoint name of the calculated default implementation for a"},{"line_number":362,"context_line":"    given interface."},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"  ``enabled_\u003cinterface_name\u003e_interfaces``"},{"line_number":365,"context_line":"    the list of entrypoint names of enabled implementations for a given"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_13bad3c0","line":362,"in_reply_to":"3ac371cc_6116064d","updated":"2016-08-24 22:10:05.000000000","message":"++","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2e8f472548dae3da6e5f579571419dae882ffb7e","unresolved":false,"context_lines":[{"line_number":369,"context_line":"  /v1/drivers/\u003cNAME\u003e/vendor_passthru/methods`` and the actual driver vendor"},{"line_number":370,"context_line":"  passthru call implementation:"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"  When requested for a *dynamic driver*, assume the default ``vendor``"},{"line_number":373,"context_line":"  interface implementation. We will need to support non-default implementations"},{"line_number":374,"context_line":"  as well, but it goes somewhat beyond the scope of this already big spec."},{"line_number":375,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_860fa32d","line":372,"updated":"2016-08-24 22:10:05.000000000","message":"the calculated default, right?","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2e8f472548dae3da6e5f579571419dae882ffb7e","unresolved":false,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"* Create a new ``GenericHardwareType`` class which most of the actual hardware"},{"line_number":441,"context_line":"  type classes will want to subclass. This class will insert generic"},{"line_number":442,"context_line":"  implementations for some interfaces and provide meaningful defaults::"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    class GenericHardwareType(AbstractHardwareType):"},{"line_number":445,"context_line":"        supported_deploy_interfaces \u003d [AgentDeploy]"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_46a92bdf","line":442,"updated":"2016-08-24 22:10:05.000000000","message":"probably need some word-smithing here, \u0027provide meaningful defaults\u0027... (or maybe just delete that part)","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"602bdedff710542267b18bc9bdb0ef921597e02d","unresolved":false,"context_lines":[{"line_number":439,"context_line":""},{"line_number":440,"context_line":"* Create a new ``GenericHardwareType`` class which most of the actual hardware"},{"line_number":441,"context_line":"  type classes will want to subclass. This class will insert generic"},{"line_number":442,"context_line":"  implementations for some interfaces and provide meaningful defaults::"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"    class GenericHardwareType(AbstractHardwareType):"},{"line_number":445,"context_line":"        supported_deploy_interfaces \u003d [AgentDeploy]"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_18a475a4","line":442,"in_reply_to":"1ac06dbe_46a92bdf","updated":"2016-08-25 17:45:10.000000000","message":"I was thinking more along the lines of meaningful recommendations, but removing it actually makes more sense.","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2e8f472548dae3da6e5f579571419dae882ffb7e","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        enabled_hardware_types \u003d generic-ipmi,ilo-gen8,ilo-gen9"},{"line_number":499,"context_line":"        enabled_power_interfaces \u003d ipmitool,ipminative,ilo,redfish"},{"line_number":500,"context_line":"        enabled_inspect_interfaces \u003d inspector,ilo"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"Driver Creation"},{"line_number":503,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":504,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_86d96386","line":501,"updated":"2016-08-24 22:10:05.000000000","message":"I wonder if we should provide an example of what the default eg power interface might be for generic-ipmi.\n\nI wonder if we\u0027ve made this so complicated that I won\u0027t be able to figure it out w/o reading this spec :)","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"602bdedff710542267b18bc9bdb0ef921597e02d","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        enabled_hardware_types \u003d generic-ipmi,ilo-gen8,ilo-gen9"},{"line_number":499,"context_line":"        enabled_power_interfaces \u003d ipmitool,ipminative,ilo,redfish"},{"line_number":500,"context_line":"        enabled_inspect_interfaces \u003d inspector,ilo"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"Driver Creation"},{"line_number":503,"context_line":"~~~~~~~~~~~~~~~"},{"line_number":504,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_6e8f9e23","line":501,"in_reply_to":"1ac06dbe_86d96386","updated":"2016-08-25 17:45:10.000000000","message":"I guess that is a good question, however I kind of also see these as abstract examples and it kind of makes sense to me that GenricHardwareType would likely have [Ipmitoolpower] as the qualified power interface since it is one of the main ones we test. But perhaps we\u0027re over thinking it too much until we can begin comparing code to spec.","commit_id":"de6941ab40c61f1bdf6217578d0ec26c9c2a1737"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f3defab5ca39ea6407d7203816a0d02c388d8bda","unresolved":false,"context_lines":[{"line_number":81,"context_line":"With this spec we are going to achieve the following goals:"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"* Make *vendors* in charge of defining a set of supported interface"},{"line_number":84,"context_line":"  implementations in priority order.."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"* Allow *vendors* to guarantee that unsupported interface implementations"},{"line_number":87,"context_line":"  will not be used with hardware types they define. This is done by having"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_561d540e","line":84,"updated":"2016-08-25 21:14:25.000000000","message":"extra \u0027.\u0027","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0fa4314ae900a4f037ae4b529fc45dd04ff19ce4","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Create a family of configuration options ``enabled_\u003cINTERFACE\u003e_interfaces``"},{"line_number":138,"context_line":"  with a list of enabled implementations of each *hardware interface* that"},{"line_number":139,"context_line":"  are available for use in the ironic deployment."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* Update new node creation logic to identify the interface for use with the"},{"line_number":142,"context_line":"  requested *hardware type* by choosing the first available interface"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_e4562629","line":139,"updated":"2016-10-13 11:08:37.000000000","message":"Do we enforce the default to be part of this list, if specified?","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b2689a556a7019d6b07b96f51cff93ab91caa338","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Create a family of configuration options ``enabled_\u003cINTERFACE\u003e_interfaces``"},{"line_number":138,"context_line":"  with a list of enabled implementations of each *hardware interface* that"},{"line_number":139,"context_line":"  are available for use in the ironic deployment."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* Update new node creation logic to identify the interface for use with the"},{"line_number":142,"context_line":"  requested *hardware type* by choosing the first available interface"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da6895a0_561273b5","line":139,"in_reply_to":"fa6399be_cdb089e0","updated":"2016-10-23 12:45:34.000000000","message":"Right. In this case we should expect a user to always provide an explicit value.\n\nMaybe as a safe guard we should check that the default value makes sense for at least one enabled hardware type?","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39b80d64348e3a359ee78806925b329f3d078605","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":"* Create a family of configuration options ``enabled_\u003cINTERFACE\u003e_interfaces``"},{"line_number":138,"context_line":"  with a list of enabled implementations of each *hardware interface* that"},{"line_number":139,"context_line":"  are available for use in the ironic deployment."},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"* Update new node creation logic to identify the interface for use with the"},{"line_number":142,"context_line":"  requested *hardware type* by choosing the first available interface"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_cdb089e0","line":139,"in_reply_to":"fa6399be_e4562629","updated":"2016-10-19 14:18:55.000000000","message":"The default as specified by the operator?  I wouldn\u0027t think so.  In fact I think that would need to be a misconfiguration for the operator to define a default that is not enabled, and thus have errors upon attempting to create a new node.","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0fa4314ae900a4f037ae4b529fc45dd04ff19ce4","unresolved":false,"context_lines":[{"line_number":143,"context_line":"  implementation from an intersection of the ``enabled_\u003cINTERFACE\u003e_interfaces``"},{"line_number":144,"context_line":"  as defined in the deployment\u0027s configuration and the *hardware_type*\u0027s"},{"line_number":145,"context_line":"  priority ordered list of supported_\u003cINTERFACE\u003e_interfaces. This calculated"},{"line_number":146,"context_line":"  default will be stored in the database entry for the node upon creation."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Change how we load drivers instead of one singleton instance of a driver,"},{"line_number":149,"context_line":"  we\u0027ll have an instance of *dynamic driver* per node, containing links"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_0454fa1e","line":146,"updated":"2016-10-13 11:08:37.000000000","message":"1. I assume default_\u003cINTERACE\u003e_interface still has priority?\n\n2. what happens if the intersection is empty?","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39b80d64348e3a359ee78806925b329f3d078605","unresolved":false,"context_lines":[{"line_number":143,"context_line":"  implementation from an intersection of the ``enabled_\u003cINTERFACE\u003e_interfaces``"},{"line_number":144,"context_line":"  as defined in the deployment\u0027s configuration and the *hardware_type*\u0027s"},{"line_number":145,"context_line":"  priority ordered list of supported_\u003cINTERFACE\u003e_interfaces. This calculated"},{"line_number":146,"context_line":"  default will be stored in the database entry for the node upon creation."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Change how we load drivers instead of one singleton instance of a driver,"},{"line_number":149,"context_line":"  we\u0027ll have an instance of *dynamic driver* per node, containing links"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_ad1b557f","line":146,"in_reply_to":"fa6399be_0454fa1e","updated":"2016-10-19 14:18:55.000000000","message":"1) I perceive this as the configured default that the operator has defined should always take priority if it is available for the intersection.  If not, I _think_ it would be the first member of the intersection.\n2) This seems more like a what do we want it to do case.  We naturally should raise an exception upon failure to assign a driver, although then how do we know what drivers are optional for us to not raise an exception. We\u0027re kind of in the implementation details weeds at this point, but it would seem like we would need to maintain a list of the optional interfaces and update the driver loading code to raise an exception if it is deemed a \"required\" interface, otherwise set the driver to a noop interface.   Thoughts?","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b2689a556a7019d6b07b96f51cff93ab91caa338","unresolved":false,"context_lines":[{"line_number":143,"context_line":"  implementation from an intersection of the ``enabled_\u003cINTERFACE\u003e_interfaces``"},{"line_number":144,"context_line":"  as defined in the deployment\u0027s configuration and the *hardware_type*\u0027s"},{"line_number":145,"context_line":"  priority ordered list of supported_\u003cINTERFACE\u003e_interfaces. This calculated"},{"line_number":146,"context_line":"  default will be stored in the database entry for the node upon creation."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"* Change how we load drivers instead of one singleton instance of a driver,"},{"line_number":149,"context_line":"  we\u0027ll have an instance of *dynamic driver* per node, containing links"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da6895a0_960c0b96","line":146,"in_reply_to":"fa6399be_ad1b557f","updated":"2016-10-23 12:45:34.000000000","message":"1) +1\n\n2) I think we should validate this situation on start up for all enabled hardware types, so that they all are usable. I don\u0027t think we should even fall back to no-op though, as it might be an explicit decision to not enable the no-op interface (e.g. for network_interface).","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f3defab5ca39ea6407d7203816a0d02c388d8bda","unresolved":false,"context_lines":[{"line_number":192,"context_line":"  ``\u003cinterface_name\u003e_interface``. A migration will be needed each time"},{"line_number":193,"context_line":"  we add a new interface (which hopefully won\u0027t happen too often)."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  For *hardware types* setting ``\u003cinterface_name\u003e_interface`` field to ``None``"},{"line_number":196,"context_line":"  means using the calculated default intersecting the *vendor* defined"},{"line_number":197,"context_line":"  supported interfaces in the *hardware type*, and the conductor"},{"line_number":198,"context_line":"  ``enabled_\u003cINTERFACE\u003e_interfaces`` setting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_d68c0438","line":195,"updated":"2016-08-25 21:14:25.000000000","message":"Can we distinguish between the user explicitly setting an x_interface to None, vs not specifying an x_interface? If they can set it to None --  maybe the creation request should fail.","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0fa4314ae900a4f037ae4b529fc45dd04ff19ce4","unresolved":false,"context_lines":[{"line_number":192,"context_line":"  ``\u003cinterface_name\u003e_interface``. A migration will be needed each time"},{"line_number":193,"context_line":"  we add a new interface (which hopefully won\u0027t happen too often)."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  For *hardware types* setting ``\u003cinterface_name\u003e_interface`` field to ``None``"},{"line_number":196,"context_line":"  means using the calculated default intersecting the *vendor* defined"},{"line_number":197,"context_line":"  supported interfaces in the *hardware type*, and the conductor"},{"line_number":198,"context_line":"  ``enabled_\u003cINTERFACE\u003e_interfaces`` setting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_2433be15","line":195,"updated":"2016-10-13 11:08:37.000000000","message":"I think the best tie-breaker here is to have a \"noop\" interface implementation for all optional interfaces (inspection, console, raid, ...). This way we will always have a valid instance of an interface on a node.","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39b80d64348e3a359ee78806925b329f3d078605","unresolved":false,"context_lines":[{"line_number":192,"context_line":"  ``\u003cinterface_name\u003e_interface``. A migration will be needed each time"},{"line_number":193,"context_line":"  we add a new interface (which hopefully won\u0027t happen too often)."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  For *hardware types* setting ``\u003cinterface_name\u003e_interface`` field to ``None``"},{"line_number":196,"context_line":"  means using the calculated default intersecting the *vendor* defined"},{"line_number":197,"context_line":"  supported interfaces in the *hardware type*, and the conductor"},{"line_number":198,"context_line":"  ``enabled_\u003cINTERFACE\u003e_interfaces`` setting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_b8ec752a","line":195,"in_reply_to":"fa6399be_2433be15","updated":"2016-10-19 14:18:55.000000000","message":"Based upon what I\u0027ve learned making the storage interface, I think that is the only option that will really work.  Dmitry, if your in agreement with the reply above in the thread on line 146, then I think we can update the spec to represent that.\n\nI would like to also point out though, that we can\u0027t prevent an intentional attempt to operate a misconfigured system.  So if someone wishes to have a non-valid configuration, all we can do is error and try and guide them in the right direction.  I guess that kind of ends up at the same line of thought with the comment thread above. :)","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b2689a556a7019d6b07b96f51cff93ab91caa338","unresolved":false,"context_lines":[{"line_number":192,"context_line":"  ``\u003cinterface_name\u003e_interface``. A migration will be needed each time"},{"line_number":193,"context_line":"  we add a new interface (which hopefully won\u0027t happen too often)."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  For *hardware types* setting ``\u003cinterface_name\u003e_interface`` field to ``None``"},{"line_number":196,"context_line":"  means using the calculated default intersecting the *vendor* defined"},{"line_number":197,"context_line":"  supported interfaces in the *hardware type*, and the conductor"},{"line_number":198,"context_line":"  ``enabled_\u003cINTERFACE\u003e_interfaces`` setting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"da6895a0_d6268315","line":195,"in_reply_to":"fa6399be_b8ec752a","updated":"2016-10-23 12:45:34.000000000","message":"I agree with having a noop interface implementation for all optional interfaces (should we list them here?). I do not quite agree with falling back to it when the intersection between vendor-enabled and operator-enabled interfaces is empty (see above).","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5761e43a016abd0e495abceb304e5880c3044999","unresolved":false,"context_lines":[{"line_number":192,"context_line":"  ``\u003cinterface_name\u003e_interface``. A migration will be needed each time"},{"line_number":193,"context_line":"  we add a new interface (which hopefully won\u0027t happen too often)."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  For *hardware types* setting ``\u003cinterface_name\u003e_interface`` field to ``None``"},{"line_number":196,"context_line":"  means using the calculated default intersecting the *vendor* defined"},{"line_number":197,"context_line":"  supported interfaces in the *hardware type*, and the conductor"},{"line_number":198,"context_line":"  ``enabled_\u003cINTERFACE\u003e_interfaces`` setting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_924dfa74","line":195,"in_reply_to":"fa7ab95a_1f14bcf3","updated":"2016-08-26 14:04:29.000000000","message":"That is my understanding as well, and I think this is something that will require some further discussion.  We can\u0027t seem to set something to None and expect it to get pass driver loading.  I tried with the early storage interface code, and ran into a slew of issues, that is unless we just don\u0027t load a driver... hadn\u0027t quite thought of that actually.\n\nI\u0027d like to hear, or read, Dmitry\u0027s thoughts, since I suspect the driver loading mechanisms will be substantially reworked as a result, and it could still be valid to do.  Part of me thinks everything should have a noop interface though.","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"3bc045aff0f6c41d9767e88f010b5f4919f6b11c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"  ``\u003cinterface_name\u003e_interface``. A migration will be needed each time"},{"line_number":193,"context_line":"  we add a new interface (which hopefully won\u0027t happen too often)."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  For *hardware types* setting ``\u003cinterface_name\u003e_interface`` field to ``None``"},{"line_number":196,"context_line":"  means using the calculated default intersecting the *vendor* defined"},{"line_number":197,"context_line":"  supported interfaces in the *hardware type*, and the conductor"},{"line_number":198,"context_line":"  ``enabled_\u003cINTERFACE\u003e_interfaces`` setting."}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa7ab95a_1f14bcf3","line":195,"in_reply_to":"fa7ab95a_d68c0438","updated":"2016-08-25 23:32:50.000000000","message":"AIUI, there are some cases where None is a valid value, right? Such as if I didn\u0027t want to enable a specific, optional interface for a node (like a console interface).","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0fa4314ae900a4f037ae4b529fc45dd04ff19ce4","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":"  ``default_\u003cinterface_name\u003e_interface``"},{"line_number":362,"context_line":"    the entrypoint name of the calculated default implementation for a"},{"line_number":363,"context_line":"    given interface."},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"  ``enabled_\u003cinterface_name\u003e_interfaces``"},{"line_number":366,"context_line":"    the list of entrypoint names of enabled implementations for a given"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_4438b2ef","line":363,"updated":"2016-10-13 11:08:37.000000000","message":"this is a bit sad that this field has the same name as the configuration option, but is in fact different. any ideas on how to rename it?","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b2689a556a7019d6b07b96f51cff93ab91caa338","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":"  ``default_\u003cinterface_name\u003e_interface``"},{"line_number":362,"context_line":"    the entrypoint name of the calculated default implementation for a"},{"line_number":363,"context_line":"    given interface."},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"  ``enabled_\u003cinterface_name\u003e_interfaces``"},{"line_number":366,"context_line":"    the list of entrypoint names of enabled implementations for a given"}],"source_content_type":"text/x-rst","patch_set":2,"id":"da6895a0_f6238703","line":363,"in_reply_to":"fa6399be_133b82d2","updated":"2016-10-23 12:45:34.000000000","message":"Ok","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39b80d64348e3a359ee78806925b329f3d078605","unresolved":false,"context_lines":[{"line_number":360,"context_line":""},{"line_number":361,"context_line":"  ``default_\u003cinterface_name\u003e_interface``"},{"line_number":362,"context_line":"    the entrypoint name of the calculated default implementation for a"},{"line_number":363,"context_line":"    given interface."},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"  ``enabled_\u003cinterface_name\u003e_interfaces``"},{"line_number":366,"context_line":"    the list of entrypoint names of enabled implementations for a given"}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_133b82d2","line":363,"in_reply_to":"fa6399be_4438b2ef","updated":"2016-10-19 14:18:55.000000000","message":"I\u0027m not sure we should rename it as long as we appropriately document what it means in the API.  If a default is enabled, and available, then that would be the default for the driver.","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0fa4314ae900a4f037ae4b529fc45dd04ff19ce4","unresolved":false,"context_lines":[{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    class GenericHardwareType(AbstractHardwareType):"},{"line_number":448,"context_line":"        supported_deploy_interfaces \u003d [AgentDeploy]"},{"line_number":449,"context_line":"        supported_inspect_interfaces \u003d [InspectorInspect]"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"  Note that all properties contain classes, not instances."},{"line_number":452,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_643936f2","line":449,"updated":"2016-10-13 11:08:37.000000000","message":"so, I guess we need NoopInspect here first?","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"39b80d64348e3a359ee78806925b329f3d078605","unresolved":false,"context_lines":[{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    class GenericHardwareType(AbstractHardwareType):"},{"line_number":448,"context_line":"        supported_deploy_interfaces \u003d [AgentDeploy]"},{"line_number":449,"context_line":"        supported_inspect_interfaces \u003d [InspectorInspect]"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"  Note that all properties contain classes, not instances."},{"line_number":452,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"fa6399be_93e9521d","line":449,"in_reply_to":"fa6399be_643936f2","updated":"2016-10-19 14:18:55.000000000","message":"I think noop ends up being a default out of the driver loader that always exists.  I\u0027m not sure it would really change anything since we need a central mechanism to be aware if something is an optional interface.  I think this back to line 146 again. :(","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b2689a556a7019d6b07b96f51cff93ab91caa338","unresolved":false,"context_lines":[{"line_number":446,"context_line":""},{"line_number":447,"context_line":"    class GenericHardwareType(AbstractHardwareType):"},{"line_number":448,"context_line":"        supported_deploy_interfaces \u003d [AgentDeploy]"},{"line_number":449,"context_line":"        supported_inspect_interfaces \u003d [InspectorInspect]"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"  Note that all properties contain classes, not instances."},{"line_number":452,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"da6895a0_96832bcc","line":449,"in_reply_to":"fa6399be_93e9521d","updated":"2016-10-23 12:45:34.000000000","message":"I still think we should be explicit. In this sense, there is no technical notion of a no-op interface. We just have some hardware types include them. Note that e.g. inspect interface is optional for IPMI hardware type, but it\u0027s not optional for iLO/Drac. And while there are truly optional interfaces like network one, they might not be optional in a specific environment.\n\nTL;DR let\u0027s have explicit NoopInspect going here at the first position :)","commit_id":"667252bc162d0b80ce7005cc9df12ab8f8bea4b2"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"3f586905cf927afd781194a8f776011deb9c293a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"  enabled *hardware types*. This will not include *classic drivers* which"},{"line_number":131,"context_line":"  are enabled by the existing ``enabled_drivers`` option."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* Create a family of configuration options ``default_\u003cINTERFACE\u003e_interface``"},{"line_number":134,"context_line":"  that allows an operator to explicitly set a default interface for new nodes"},{"line_number":135,"context_line":"  upon creation, if one is not specified in the creation request."},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5da102_d12658cd","line":133,"range":{"start_line":133,"start_character":53,"end_line":133,"end_character":64},"updated":"2016-10-31 22:55:04.000000000","message":"Just checking my understanding here - \u003cINTERFACE\u003e in this context refers to boot, power, deploy, etc., right?","commit_id":"6454c6013f7915bcf7a23d6fa6d4773913f1eb5c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a9d1472cd70108a771634500babf37989b292a39","unresolved":false,"context_lines":[{"line_number":130,"context_line":"  enabled *hardware types*. This will not include *classic drivers* which"},{"line_number":131,"context_line":"  are enabled by the existing ``enabled_drivers`` option."},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"* Create a family of configuration options ``default_\u003cINTERFACE\u003e_interface``"},{"line_number":134,"context_line":"  that allows an operator to explicitly set a default interface for new nodes"},{"line_number":135,"context_line":"  upon creation, if one is not specified in the creation request."},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5da102_da5664d1","line":133,"updated":"2016-11-01 11:09:53.000000000","message":"right","commit_id":"6454c6013f7915bcf7a23d6fa6d4773913f1eb5c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a9d1472cd70108a771634500babf37989b292a39","unresolved":false,"context_lines":[{"line_number":142,"context_line":"  be in this list, otherwise a conductor will fail to start."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"* If no interface implementation is explicitly requested by a user in a node"},{"line_number":145,"context_line":"  creation request, use the value calculcated as follows:"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  * If ``default_\u003cINTERFACE\u003e_interface`` is set, use its value. Return an"},{"line_number":148,"context_line":"    error if it is not supported by the *hardware type* of the node."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5da102_fa5168d9","line":145,"updated":"2016-11-01 11:09:53.000000000","message":"done","commit_id":"6454c6013f7915bcf7a23d6fa6d4773913f1eb5c"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"3f586905cf927afd781194a8f776011deb9c293a","unresolved":false,"context_lines":[{"line_number":142,"context_line":"  be in this list, otherwise a conductor will fail to start."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"* If no interface implementation is explicitly requested by a user in a node"},{"line_number":145,"context_line":"  creation request, use the value calculcated as follows:"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"  * If ``default_\u003cINTERFACE\u003e_interface`` is set, use its value. Return an"},{"line_number":148,"context_line":"    error if it is not supported by the *hardware type* of the node."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5da102_d15f383f","line":145,"range":{"start_line":145,"start_character":34,"end_line":145,"end_character":45},"updated":"2016-10-31 22:55:04.000000000","message":"nit: s/calculcated/calculated","commit_id":"6454c6013f7915bcf7a23d6fa6d4773913f1eb5c"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"3f586905cf927afd781194a8f776011deb9c293a","unresolved":false,"context_lines":[{"line_number":446,"context_line":"  Note that some interfaces (power, deploy) are mandatory, while the other"},{"line_number":447,"context_line":"  (inspect) are not. A dummy implementation will be provided for all optional"},{"line_number":448,"context_line":"  interfaces. Depending on the specific call it will either do nothing or"},{"line_number":449,"context_line":"  raise an error."},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"* Create a new ``GenericHardwareType`` class which most of the actual hardware"},{"line_number":452,"context_line":"  type classes will want to subclass. This class will insert generic"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5da102_d4fac6bc","line":449,"updated":"2016-10-31 22:55:04.000000000","message":"Can you elaborate on this a little more?\n\nI\u0027m specifically curious whether there will be any naming distinction between dummy implementations that always fall through cleanly (true no-op interfaces, if they exist) and interfaces that may raise exceptions. Such a distinction might make it easier for driver developers (now hardware type developers, too) to understand what each fake implementation guarantees.\n\nAlternatively, if true no-op interfaces don\u0027t exist, maybe it would be better to call these something more clearly defined than \"Noop\u003cINTERFACE\u003e\". Maybe \u003cINTERFACE\u003eUnsupported?\n\nIf the latter is a good option, I\u0027m fine with that waiting until implementation, since naming things is difficult","commit_id":"6454c6013f7915bcf7a23d6fa6d4773913f1eb5c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a9d1472cd70108a771634500babf37989b292a39","unresolved":false,"context_lines":[{"line_number":446,"context_line":"  Note that some interfaces (power, deploy) are mandatory, while the other"},{"line_number":447,"context_line":"  (inspect) are not. A dummy implementation will be provided for all optional"},{"line_number":448,"context_line":"  interfaces. Depending on the specific call it will either do nothing or"},{"line_number":449,"context_line":"  raise an error."},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"* Create a new ``GenericHardwareType`` class which most of the actual hardware"},{"line_number":452,"context_line":"  type classes will want to subclass. This class will insert generic"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5da102_1a5ffce5","line":449,"updated":"2016-11-01 11:09:53.000000000","message":"yeah, it depends on whether the interface is called from ironic or by a user. Will clarify","commit_id":"6454c6013f7915bcf7a23d6fa6d4773913f1eb5c"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"8d7c412bc5d573ae22adcd227a99b9a5f37aa479","unresolved":false,"context_lines":[{"line_number":446,"context_line":"  Note that some interfaces (power, deploy) are mandatory, while the other"},{"line_number":447,"context_line":"  (inspect) are not. A dummy implementation will be provided for all optional"},{"line_number":448,"context_line":"  interfaces. Depending on the specific call it will either do nothing or"},{"line_number":449,"context_line":"  raise an error."},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"* Create a new ``GenericHardwareType`` class which most of the actual hardware"},{"line_number":452,"context_line":"  type classes will want to subclass. This class will insert generic"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ba5da102_e2745a37","line":449,"in_reply_to":"ba5da102_1a5ffce5","updated":"2016-11-01 13:56:41.000000000","message":"Works for me. Thanks","commit_id":"6454c6013f7915bcf7a23d6fa6d4773913f1eb5c"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4b96739840e52a577b13f03dbe4e04ad314e69a9","unresolved":false,"context_lines":[{"line_number":450,"context_line":"  interfaces. Depending on the specific call it will either do nothing or"},{"line_number":451,"context_line":"  raise an error. For user-initiated calls (e.g. start inspection), an error"},{"line_number":452,"context_line":"  will be returned. For internal calls (e.g. attach cleaning ports), no action"},{"line_number":453,"context_line":"  will be taked."},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"* Create a new ``GenericHardwareType`` class which most of the actual hardware"},{"line_number":456,"context_line":"  type classes will want to subclass. This class will insert generic"}],"source_content_type":"text/x-rst","patch_set":4,"id":"ba5da102_9ecdb2b9","line":453,"updated":"2016-11-01 16:30:32.000000000","message":"nit s/taked/taken/","commit_id":"9506b9561eae34f5635111d92c532fd1ae99d1c6"}]}
