)]}'
{"specs/approved/hardware-interface-properties.rst":[{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"d025dc4bd695b35ce25788855dc6fb0b6cbdc592","unresolved":false,"context_lines":[{"line_number":67,"context_line":"and ``ipmitool-shellinabox`` as the console interface (which requires"},{"line_number":68,"context_line":"``ipmi_terminal_console``)."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"So for a node that has driver \u003d \"impi\" and console_interface \u003d"},{"line_number":71,"context_line":"\"ipmitool-shellinabox\", there is no way via the API to get the"},{"line_number":72,"context_line":"``ipmi_terminal_console`` driver property."},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"df140735_443154ec","line":70,"range":{"start_line":70,"start_character":33,"end_line":70,"end_character":37},"updated":"2017-06-07 15:22:37.000000000","message":"ipmi","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"18be354cdb06d09bf3dd11ad00ba9afed7edb8ce","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The API microversion would need to be incremented for these new API requests."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"A new policy rule ``baremetal:driver:interface:get`` will control access to"},{"line_number":147,"context_line":"these requests."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"GET /v1/driver-interfaces"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_41f9747e","line":146,"updated":"2017-09-09 16:22:16.000000000","message":"what\u0027s the default role will be used to access it? baremetal_admin or baremetal_observer? To set the properties you\u0027ll have to be admin.","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bb4bef7d5e3f90aa931dc388ec95d891ea457818","unresolved":false,"context_lines":[{"line_number":197,"context_line":""},{"line_number":198,"context_line":"The HTTP response code is 200."},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"For example::"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"  {"},{"line_number":203,"context_line":"    \"interfaces\": ["}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f436f4f_e44cbb77","line":200,"range":{"start_line":200,"start_character":4,"end_line":200,"end_character":11},"updated":"2017-08-21 12:09:40.000000000","message":"s/ \u0027example\u0027 / \u0027example, if the request was GET /v1/driver-interfaces/power\u0027 /","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bb4bef7d5e3f90aa931dc388ec95d891ea457818","unresolved":false,"context_lines":[{"line_number":255,"context_line":"GET /v1/driver-interfaces/raid/agent::"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"  {"},{"line_number":258,"context_line":"    \"name\": \"ipmitool\","},{"line_number":259,"context_line":"    \"properties\": {"},{"line_number":260,"context_line":"        ..."},{"line_number":261,"context_line":"    },"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f436f4f_44a947db","line":258,"range":{"start_line":258,"start_character":13,"end_line":258,"end_character":21},"updated":"2017-08-21 12:09:40.000000000","message":"s/ \u0027ipmitool\u0027 / \u0027agent\u0027 /","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"d025dc4bd695b35ce25788855dc6fb0b6cbdc592","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    },"},{"line_number":265,"context_line":"  }"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"TODO: Check with Sam; does he want logical_disk_properties to also be"},{"line_number":268,"context_line":"machine-readable like the properties? (I suspect it is easily do-able and makes"},{"line_number":269,"context_line":"things consistent.)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"To go back to our problem of getting the properties for all the driver"},{"line_number":272,"context_line":"interfaces associated with a node\u0027s driver (a dynamic driver with non-default"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df140735_245f80e6","line":269,"range":{"start_line":267,"start_character":0,"end_line":269,"end_character":19},"updated":"2017-06-07 15:22:37.000000000","message":"Makes a ton of sense to standardise everything if we can","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"d025dc4bd695b35ce25788855dc6fb0b6cbdc592","unresolved":false,"context_lines":[{"line_number":268,"context_line":"machine-readable like the properties? (I suspect it is easily do-able and makes"},{"line_number":269,"context_line":"things consistent.)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"To go back to our problem of getting the properties for all the driver"},{"line_number":272,"context_line":"interfaces associated with a node\u0027s driver (a dynamic driver with non-default"},{"line_number":273,"context_line":"interfaces), this API can be used to get them as follows:"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* get the node\u0027s hardware (driver) interfaces via ``GET /v1/nodes/\u003cnode\u003e``"},{"line_number":276,"context_line":"* for each interface type, invoke"},{"line_number":277,"context_line":"  ``GET /v1/driver-interfaces/\u003cinterface-type\u003e/\u003cname\u003e``"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"Property information in the response"},{"line_number":280,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df140735_c4ed648c","line":277,"range":{"start_line":271,"start_character":0,"end_line":277,"end_character":55},"updated":"2017-06-07 15:22:37.000000000","message":"This works great for when we have an already created node that has interfaces; from a GUI perspective I might want to view the properties of the interfaces that I\u0027m choosing to create the node with. So is there a way today to GET the list of interfaces a hardware type supports, so there can be a workflow like:\n\n - Get list of all hardware types and put in a drop down\n - User selects hardware type from drop down\n - Get list of interfaces from hardware type and put in drop downs\n - User chooses interfaces they want/leaves the defaults\n - Get list of properties for chosen interfaces and create form from the properties list\n - User populates form\n - User hits create node button\n\nBasically the piece I think is missing is an API that returns something like:\n\nGET /v1/drivers/\u003cdriver or hardware type name\u003e\n{\n    power_interfaces: [\n      {\n        \"name\": \"default\",\n        \"links\": [\n          {\n            \"href\": \"http://127.0.0.1:6385/v1/driver-interfaces/power/ipmitool\",\n            \"rel\": \"self\"\n          },\n          {\n            \"href\": \"http://127.0.0.1:6385/driver-interfaces/power/ipmitool\",\n            \"rel\": \"bookmark\"\n          }\n        ],\n      },\n      {\n        \"name\": \"ipmitool\",\n        \"links\": [\n          {\n            \"href\": \"http://127.0.0.1:6385/v1/driver-interfaces/power/ipmitool\",\n            \"rel\": \"self\"\n          },\n          {\n            \"href\": \"http://127.0.0.1:6385/driver-interfaces/power/ipmitool\",\n            \"rel\": \"bookmark\"\n          }\n        ],\n      },\n    ],\n    boot_interfaces: [\n       etc...\n    ]\n}","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bb4bef7d5e3f90aa931dc388ec95d891ea457818","unresolved":false,"context_lines":[{"line_number":268,"context_line":"machine-readable like the properties? (I suspect it is easily do-able and makes"},{"line_number":269,"context_line":"things consistent.)"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"To go back to our problem of getting the properties for all the driver"},{"line_number":272,"context_line":"interfaces associated with a node\u0027s driver (a dynamic driver with non-default"},{"line_number":273,"context_line":"interfaces), this API can be used to get them as follows:"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"* get the node\u0027s hardware (driver) interfaces via ``GET /v1/nodes/\u003cnode\u003e``"},{"line_number":276,"context_line":"* for each interface type, invoke"},{"line_number":277,"context_line":"  ``GET /v1/driver-interfaces/\u003cinterface-type\u003e/\u003cname\u003e``"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"Property information in the response"},{"line_number":280,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f436f4f_04ee9fb3","line":277,"range":{"start_line":271,"start_character":0,"end_line":277,"end_character":55},"in_reply_to":"df140735_c4ed648c","updated":"2017-08-21 12:09:40.000000000","message":"+1\nJust wondering if having data in this format would be better?\nGET /v1/drivers/\u003cdriver or hardware type name\u003e\n{\n    interfaces: {\n        power: [\n          {\n            \"name\": \"default\",\n            \"links\": [\n              {\n                \"href\": \"http://127.0.0.1:6385/v1/driver-interfaces/power/ipmitool\",\n                \"rel\": \"self\"\n              },\n              {\n                \"href\": \"http://127.0.0.1:6385/driver-interfaces/power/ipmitool\",\n                \"rel\": \"bookmark\"\n              }\n            ],\n          },\n          {\n            \"name\": \"ipmitool\",\n            \"links\": [\n              {\n                \"href\": \"http://127.0.0.1:6385/v1/driver-interfaces/power/ipmitool\",\n                \"rel\": \"self\"\n              },\n              {\n                \"href\": \"http://127.0.0.1:6385/driver-interfaces/power/ipmitool\",\n                \"rel\": \"bookmark\"\n              }\n            ],\n          },\n        ],\n        boot: [\n       etc...\n      ]\n    }\n}","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bb4bef7d5e3f90aa931dc388ec95d891ea457818","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    \u003cproperty_name1\u003e: {"},{"line_number":287,"context_line":"       \"description\": \u003cdescription\u003e,"},{"line_number":288,"context_line":"        \"required\": \u003ctrue|false\u003e,"},{"line_number":289,"context_line":"        \"depends-on\": [\u003cproperty_nameM\u003e, \u003cproperty_nameN\u003e,...]"},{"line_number":290,"context_line":"    },"},{"line_number":291,"context_line":"    \u003cproperty_name2\u003e: {"},{"line_number":292,"context_line":"      \"description\": \u003cdescription\u003e,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f436f4f_a45b5385","line":289,"range":{"start_line":289,"start_character":8,"end_line":289,"end_character":21},"updated":"2017-08-21 12:09:40.000000000","message":"For independent property, will this key be absent?","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"18be354cdb06d09bf3dd11ad00ba9afed7edb8ce","unresolved":false,"context_lines":[{"line_number":295,"context_line":"  }"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"QUESTION. Is it enough to have presence of \"depends-on\" for determining whether"},{"line_number":298,"context_line":"the property is required or not (if it is there, is required \u003d false?), or"},{"line_number":299,"context_line":"should required have a third value, eg \u0027depends\u0027."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"QUESTION. Should we always return depends-on, even if empty list?"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_01480cca","line":298,"updated":"2017-09-09 16:22:16.000000000","message":"seems to be the case","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"d025dc4bd695b35ce25788855dc6fb0b6cbdc592","unresolved":false,"context_lines":[{"line_number":294,"context_line":"    }"},{"line_number":295,"context_line":"  }"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"QUESTION. Is it enough to have presence of \"depends-on\" for determining whether"},{"line_number":298,"context_line":"the property is required or not (if it is there, is required \u003d false?), or"},{"line_number":299,"context_line":"should required have a third value, eg \u0027depends\u0027."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"QUESTION. Should we always return depends-on, even if empty list?"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"Client (CLI) impact"},{"line_number":304,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df140735_2adce716","line":301,"range":{"start_line":297,"start_character":0,"end_line":301,"end_character":65},"updated":"2017-06-07 15:22:37.000000000","message":"Perhaps instead of required: true/false it should be something like:\n\n\u003cproperty_name1\u003e: {\n    required: if nameM eq True\n},\n\u003cproperty_name2\u003e: {\n    required: always\n}","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"18be354cdb06d09bf3dd11ad00ba9afed7edb8ce","unresolved":false,"context_lines":[{"line_number":298,"context_line":"the property is required or not (if it is there, is required \u003d false?), or"},{"line_number":299,"context_line":"should required have a third value, eg \u0027depends\u0027."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"QUESTION. Should we always return depends-on, even if empty list?"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"Client (CLI) impact"},{"line_number":304,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_611230b4","line":301,"in_reply_to":"9f436f4f_190ba124","updated":"2017-09-09 16:22:16.000000000","message":"I wonder how are we going to use this info, or is the GUI intended to use it to draw some dependency graphs?","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"bb4bef7d5e3f90aa931dc388ec95d891ea457818","unresolved":false,"context_lines":[{"line_number":294,"context_line":"    }"},{"line_number":295,"context_line":"  }"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"QUESTION. Is it enough to have presence of \"depends-on\" for determining whether"},{"line_number":298,"context_line":"the property is required or not (if it is there, is required \u003d false?), or"},{"line_number":299,"context_line":"should required have a third value, eg \u0027depends\u0027."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"QUESTION. Should we always return depends-on, even if empty list?"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"Client (CLI) impact"},{"line_number":304,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f436f4f_190ba124","line":301,"range":{"start_line":297,"start_character":0,"end_line":301,"end_character":65},"in_reply_to":"df140735_2adce716","updated":"2017-08-21 12:09:40.000000000","message":"Some of the properties are not dependent just on presence of other property, but also on the certain values of those properties.\n\u0027snmp_community\u0027 is required if the value of \u0027snmp_version\u0027 is \u00271\u0027 or \u00272c\u0027.\nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/snmp.py#L66-L74","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"18be354cdb06d09bf3dd11ad00ba9afed7edb8ce","unresolved":false,"context_lines":[{"line_number":323,"context_line":"Driver API impact"},{"line_number":324,"context_line":"-----------------"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"None."},{"line_number":327,"context_line":""},{"line_number":328,"context_line":"Nova driver impact"},{"line_number":329,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5f2577a7_8182bcc7","line":326,"updated":"2017-09-09 16:22:16.000000000","message":"Is the info still going to be read from the return values of get_properties of the driver interface? If so, driver api is going to change right? the return value will be different.","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"},{"author":{"_account_id":6637,"name":"Sam Betts","email":"sam@code-smash.net","username":"sambetts"},"change_message_id":"d025dc4bd695b35ce25788855dc6fb0b6cbdc592","unresolved":false,"context_lines":[{"line_number":406,"context_line":"* functional tests"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":410,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"These are new API, so no backwards compatibility issues."},{"line_number":413,"context_line":""},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"Documentation Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"df140735_ca3e8bd9","line":412,"range":{"start_line":409,"start_character":0,"end_line":412,"end_character":56},"updated":"2017-06-07 15:22:37.000000000","message":"Do we need to do something clever for out of tree drivers that haven\u0027t switched to the new properties system yet? E.g. translate what they output from their current GET /v1/drivers/\u003cdriver\u003e/properties API into something like:\n\n\u003cproperty\u003e {\n   description: ...\n   required: unknown\n}\n\nduring the transition from old to new?","commit_id":"f064dc6bb0a1c695882ca9447a9f39dc1b5ff446"}]}
