)]}'
{"ironic_ui/api/ironic.py":[{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"794e2e8d2838d5e193efac2f8e3ea53e349ab50a","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    :param request: HTTP request"},{"line_number":259,"context_line":"    :param driver_name: Name of the driver"},{"line_number":260,"context_line":"    :return: driver information list"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":263,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f231b9d_a4078a82","line":260,"updated":"2017-10-04 21:28:34.000000000","message":"dictionary?","commit_id":"0a7cc9ad29179d4024e11448dc4cfd7b90cd2820"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f8c0711a90499cbb5bea1b1c514314818ef0ef51","unresolved":false,"context_lines":[{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    :param request: HTTP request"},{"line_number":259,"context_line":"    :param driver_name: Name of the driver"},{"line_number":260,"context_line":"    :return: driver information list"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":263,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f515b1d_78c19f2e","line":260,"in_reply_to":"7f231b9d_a4078a82","updated":"2017-10-04 23:48:48.000000000","message":"Yes","commit_id":"0a7cc9ad29179d4024e11448dc4cfd7b90cd2820"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"794e2e8d2838d5e193efac2f8e3ea53e349ab50a","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":263,"context_line":"    \"\"\""},{"line_number":264,"context_line":"    drivers \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":265,"context_line":"    return drivers.to_dict()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f231b9d_e4c22234","line":264,"updated":"2017-10-04 21:28:34.000000000","message":"How about replacing drivers with driver_info or driver_details? How does driver_info relate to driver_properties, is there any overlap?","commit_id":"0a7cc9ad29179d4024e11448dc4cfd7b90cd2820"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f8c0711a90499cbb5bea1b1c514314818ef0ef51","unresolved":false,"context_lines":[{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":263,"context_line":"    \"\"\""},{"line_number":264,"context_line":"    drivers \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":265,"context_line":"    return drivers.to_dict()"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7f515b1d_d8cad34d","line":264,"in_reply_to":"7f231b9d_e4c22234","updated":"2017-10-04 23:48:48.000000000","message":"I think we can replace with driver_details as we have methods defined in Base controller as driverDetails as well. It will be consistent. I can submit a patch","commit_id":"0a7cc9ad29179d4024e11448dc4cfd7b90cd2820"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"389058000e8e8d2b1fe55eddc950585caf09f7bb","unresolved":false,"context_lines":[{"line_number":252,"context_line":"    return ironicclient(request).driver.properties(driver_name)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"def driver_info(request, driver_name):"},{"line_number":256,"context_line":"    \"\"\"Retrieve the details including interfaces for a specified driver"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    :param request: HTTP request"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_d39a3460","line":255,"updated":"2017-06-27 12:33:08.000000000","message":"let\u0027s call it driver_get. driver_info may cause confusion with the similarly named Node field.","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"d462061f9a63923f3c71402ccbad9184b4c29bee","unresolved":false,"context_lines":[{"line_number":252,"context_line":"    return ironicclient(request).driver.properties(driver_name)"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"def driver_info(request, driver_name):"},{"line_number":256,"context_line":"    \"\"\"Retrieve the details including interfaces for a specified driver"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    :param request: HTTP request"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f201791_3e535fe4","line":255,"in_reply_to":"5f201791_d39a3460","updated":"2017-06-27 18:38:33.000000000","message":"Done","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"bef1a16c57596282893af70edeeb3dbd075f0311","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":293,"context_line":"    \"\"\""},{"line_number":294,"context_line":"    drivers \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":295,"context_line":"    return drivers.to_dict()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9f436f4f_2c010507","line":294,"updated":"2017-08-15 22:24:22.000000000","message":"I would s/drivers/driver/","commit_id":"4274783fa1de915614b578a67fc7fde6179109a4"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"69b652d731d2883ebf457fcac8d41eb95e60d021","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":293,"context_line":"    \"\"\""},{"line_number":294,"context_line":"    drivers \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":295,"context_line":"    return drivers.to_dict()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f287b81_c48f5e2c","line":294,"updated":"2017-09-05 22:30:32.000000000","message":"s/drivers/properties/ wdyt?","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"112db96787ef55cc96f70e5b957efeba823cd74f","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":293,"context_line":"    \"\"\""},{"line_number":294,"context_line":"    drivers \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":295,"context_line":"    return drivers.to_dict()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f287b81_fd918c53","line":294,"in_reply_to":"7f287b81_7b2268bb","updated":"2017-09-08 18:56:55.000000000","message":"Sure.","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"1c90940920a6a18bae91fcc417b16b106f9ad9a7","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":293,"context_line":"    \"\"\""},{"line_number":294,"context_line":"    drivers \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":295,"context_line":"    return drivers.to_dict()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7f287b81_7b2268bb","line":294,"in_reply_to":"7f287b81_c48f5e2c","updated":"2017-09-06 22:58:29.000000000","message":"++ for properties","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"794e2e8d2838d5e193efac2f8e3ea53e349ab50a","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":293,"context_line":"    \"\"\""},{"line_number":294,"context_line":"    drivers \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":295,"context_line":"    return drivers.to_dict()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"ff5d4b2f_a0bb83e3","line":294,"updated":"2017-10-04 21:28:34.000000000","message":"s/drivers/properties/?","commit_id":"9730e157cdd8349ada6097b61396b5fe2711b60a"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f8c0711a90499cbb5bea1b1c514314818ef0ef51","unresolved":false,"context_lines":[{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":293,"context_line":"    \"\"\""},{"line_number":294,"context_line":"    drivers \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":295,"context_line":"    return drivers.to_dict()"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7f515b1d_5805c379","line":294,"in_reply_to":"ff5d4b2f_a0bb83e3","updated":"2017-10-04 23:48:48.000000000","message":"I think so properties could be confusing as with respect to base controller variable. I think we should stick with driver_details instead of drivers, thoughts?","commit_id":"9730e157cdd8349ada6097b61396b5fe2711b60a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"122ecfed44bf0544e78d8e8b831ff682c4bf4c10","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from openstack_dashboard.api import base"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"DEFAULT_IRONIC_API_VERSION \u003d \u00271.34\u0027"},{"line_number":29,"context_line":"DEFAULT_INSECURE \u003d False"},{"line_number":30,"context_line":"DEFAULT_CACERT \u003d None"},{"line_number":31,"context_line":"IRONIC_CLIENT_CLASS_NAME \u003d \u0027baremetal\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f4e5783_eb975847","line":28,"updated":"2017-10-17 12:35:07.000000000","message":"I think we will need a release note to indicate that this should only be expected to be functional with pike and beyond versions of ironic.","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"3235e12a47c378ba5fdde96decc5661ba999f38f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from openstack_dashboard.api import base"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"DEFAULT_IRONIC_API_VERSION \u003d \u00271.34\u0027"},{"line_number":29,"context_line":"DEFAULT_INSECURE \u003d False"},{"line_number":30,"context_line":"DEFAULT_CACERT \u003d None"},{"line_number":31,"context_line":"IRONIC_CLIENT_CLASS_NAME \u003d \u0027baremetal\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f4b6375_4af745f7","line":28,"in_reply_to":"5f4e5783_eb975847","updated":"2017-10-18 17:37:39.000000000","message":"Agree","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"122ecfed44bf0544e78d8e8b831ff682c4bf4c10","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    :param driver_name: Name of the driver"},{"line_number":290,"context_line":"    :return: dictionary of driver details"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":293,"context_line":"    \"\"\""},{"line_number":294,"context_line":"    details \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":295,"context_line":"    return details.to_dict()"}],"source_content_type":"text/x-python","patch_set":18,"id":"5f4e5783_4b954c32","line":292,"range":{"start_line":292,"start_character":30,"end_line":292,"end_character":39},"updated":"2017-10-17 12:35:07.000000000","message":"We likely need to fix the url here to be the new url layout.","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"3235e12a47c378ba5fdde96decc5661ba999f38f","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    :param driver_name: Name of the driver"},{"line_number":290,"context_line":"    :return: dictionary of driver details"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.driver.html#ironicclient.v1.driver.DriverManager.get"},{"line_number":293,"context_line":"    \"\"\""},{"line_number":294,"context_line":"    details \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":295,"context_line":"    return details.to_dict()"}],"source_content_type":"text/x-python","patch_set":18,"id":"3f4b6375_2adc0973","line":292,"range":{"start_line":292,"start_character":30,"end_line":292,"end_character":39},"in_reply_to":"5f4e5783_4b954c32","updated":"2017-10-18 17:37:39.000000000","message":"Will do","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"712523327d54bc8cd700f7580facce846cf4c89f","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    :param driver_name: Name of the driver"},{"line_number":290,"context_line":"    :return: dictionary of driver details"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    https://docs.openstack.org/python-ironicclient/latest/cli/osc/v1/index.html#baremetal-driver-show"},{"line_number":293,"context_line":"    \"\"\""},{"line_number":294,"context_line":"    details \u003d ironicclient(request).driver.get(driver_name)"},{"line_number":295,"context_line":"    return details.to_dict()"}],"source_content_type":"text/x-python","patch_set":19,"id":"3f4b6375_efd598b8","line":292,"updated":"2017-10-21 16:22:24.000000000","message":"The python API was right on rev 18, at least, I think.  Regardless I think people will understand","commit_id":"b286e2111b78da23ffe3c1d5ac07a57aaa80f389"}],"ironic_ui/api/ironic_rest_api.py":[{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"794e2e8d2838d5e193efac2f8e3ea53e349ab50a","unresolved":false,"context_lines":[{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        :param request: HTTP request"},{"line_number":325,"context_line":"        :param driver_name: Driver name"},{"line_number":326,"context_line":"        : return: Dictionary of properties"},{"line_number":327,"context_line":"        \"\"\""},{"line_number":328,"context_line":"        return ironic.driver_info(request, driver_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f231b9d_a4154a9e","line":326,"updated":"2017-10-04 21:28:34.000000000","message":"Need to differentiate with respect to the request for driver properties.","commit_id":"0a7cc9ad29179d4024e11448dc4cfd7b90cd2820"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f8c0711a90499cbb5bea1b1c514314818ef0ef51","unresolved":false,"context_lines":[{"line_number":323,"context_line":""},{"line_number":324,"context_line":"        :param request: HTTP request"},{"line_number":325,"context_line":"        :param driver_name: Driver name"},{"line_number":326,"context_line":"        : return: Dictionary of properties"},{"line_number":327,"context_line":"        \"\"\""},{"line_number":328,"context_line":"        return ironic.driver_info(request, driver_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f515b1d_189e2b07","line":326,"in_reply_to":"7f231b9d_a4154a9e","updated":"2017-10-04 23:48:48.000000000","message":"May be dictionary of driver details that includes driver interfaces and driver type. Also in the above L300 we can extend it to \"dictionary of driver properties that includes deploy ramdisk, kernel and ipmi credentials\", wdyt?","commit_id":"0a7cc9ad29179d4024e11448dc4cfd7b90cd2820"}],"ironic_ui/static/dashboard/admin/ironic/base-node/base-node.controller.js":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"389058000e8e8d2b1fe55eddc950585caf09f7bb","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    ctrl.modalTitle \u003d gettext(\"Node\");"},{"line_number":53,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Submit\");"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    ctrl.driverInterfaces \u003d [\"Raid\", \"Network\", \"power\", \"Console\", \"Storage\", \"Inspect\","},{"line_number":56,"context_line":"                             \"Boot\", \"Deploy\", \"Management\"];"},{"line_number":57,"context_line":"    ctrl.interfacesMap \u003d {};"},{"line_number":58,"context_line":""}],"source_content_type":"text/javascript","patch_set":2,"id":"5f201791_b3a578a4","line":55,"updated":"2017-06-27 12:33:08.000000000","message":"upper case Power please","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"d462061f9a63923f3c71402ccbad9184b4c29bee","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    ctrl.modalTitle \u003d gettext(\"Node\");"},{"line_number":53,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Submit\");"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    ctrl.driverInterfaces \u003d [\"Raid\", \"Network\", \"power\", \"Console\", \"Storage\", \"Inspect\","},{"line_number":56,"context_line":"                             \"Boot\", \"Deploy\", \"Management\"];"},{"line_number":57,"context_line":"    ctrl.interfacesMap \u003d {};"},{"line_number":58,"context_line":""}],"source_content_type":"text/javascript","patch_set":2,"id":"5f201791_de658bb6","line":55,"in_reply_to":"5f201791_b3a578a4","updated":"2017-06-27 18:38:33.000000000","message":"Done","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    ctrl.modalTitle \u003d gettext(\"Node\");"},{"line_number":53,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Submit\");"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    ctrl.driverInterfaces \u003d [\"Raid\", \"Network\", \"Power\", \"Console\", \"Storage\", \"Inspect\","},{"line_number":56,"context_line":"                             \"Boot\", \"Deploy\", \"Management\"];"},{"line_number":57,"context_line":"    ctrl.interfacesMap \u003d {};"},{"line_number":58,"context_line":""}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_28667e2b","line":55,"updated":"2017-07-06 14:22:51.000000000","message":"We may want to elevate this to a module constant that can be used by multiple components including the backend-mock. But do we actually need a hard-coded list here? I would expect that we could enumerate the return from a driver-show like call, and extract properties of the form \"enabled_\u003cinterface\u003e_interfaces\".","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"ea36d1f9d4e6a47768aa7c4b4d068621c1119e7d","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    ctrl.modalTitle \u003d gettext(\"Node\");"},{"line_number":53,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Submit\");"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    ctrl.driverInterfaces \u003d [\"Raid\", \"Network\", \"Power\", \"Console\", \"Storage\", \"Inspect\","},{"line_number":56,"context_line":"                             \"Boot\", \"Deploy\", \"Management\"];"},{"line_number":57,"context_line":"    ctrl.interfacesMap \u003d {};"},{"line_number":58,"context_line":""}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_cb6252ae","line":55,"in_reply_to":"3f1d235d_28667e2b","updated":"2017-07-07 00:03:16.000000000","message":"I did this because mainly for label. Also you need to know the interface to extract \"enabled_\u003cinterface\u003e_interfaces\" or else the other option was match property with \"enabled_*\" and store those all values in a object and then again for label split the property \"enabled_\u003cinterface\u003e_interfaces\" with \"_\" and fetch just \u003cinterface\u003e. I can rework let me know what do you think?","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"738d692f86f05c513e6e5e1a166ca2eaf9ecf67a","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    ctrl.modalTitle \u003d gettext(\"Node\");"},{"line_number":53,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Submit\");"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    ctrl.driverInterfaces \u003d [\"Raid\", \"Network\", \"Power\", \"Console\", \"Storage\", \"Inspect\","},{"line_number":56,"context_line":"                             \"Boot\", \"Deploy\", \"Management\"];"},{"line_number":57,"context_line":"    ctrl.interfacesMap \u003d {};"},{"line_number":58,"context_line":""}],"source_content_type":"text/javascript","patch_set":4,"id":"bf3e73b7_d8bc16bd","line":55,"in_reply_to":"3f1d235d_cb6252ae","updated":"2017-08-07 20:58:28.000000000","message":"I am happy to leave as-is for right now. If we later find that we want to replicate the array we can make it a module constant.","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":284,"context_line":"     * @return {void}"},{"line_number":285,"context_line":"     */"},{"line_number":286,"context_line":"    ctrl.loadDriverInterfaces \u003d function(driver) {"},{"line_number":287,"context_line":"      angular.forEach(ctrl.driverInterfaces, function(value) {"},{"line_number":288,"context_line":"        ironic.getDriverEnabledInterfaces(driver, value).then(function(response) {"},{"line_number":289,"context_line":"          var myArr \u003d [];"},{"line_number":290,"context_line":"          angular.forEach(response, function(interfaceN) {"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_fb528e12","line":287,"updated":"2017-07-06 14:22:51.000000000","message":"I would s/value/interface/","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f82bd67a84d121328a6ac35540449619dd7e2c1e","unresolved":false,"context_lines":[{"line_number":284,"context_line":"     * @return {void}"},{"line_number":285,"context_line":"     */"},{"line_number":286,"context_line":"    ctrl.loadDriverInterfaces \u003d function(driver) {"},{"line_number":287,"context_line":"      angular.forEach(ctrl.driverInterfaces, function(value) {"},{"line_number":288,"context_line":"        ironic.getDriverEnabledInterfaces(driver, value).then(function(response) {"},{"line_number":289,"context_line":"          var myArr \u003d [];"},{"line_number":290,"context_line":"          angular.forEach(response, function(interfaceN) {"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_a61f4b6a","line":287,"in_reply_to":"3f1d235d_fb528e12","updated":"2017-07-07 00:48:15.000000000","message":"Done","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":287,"context_line":"      angular.forEach(ctrl.driverInterfaces, function(value) {"},{"line_number":288,"context_line":"        ironic.getDriverEnabledInterfaces(driver, value).then(function(response) {"},{"line_number":289,"context_line":"          var myArr \u003d [];"},{"line_number":290,"context_line":"          angular.forEach(response, function(interfaceN) {"},{"line_number":291,"context_line":"            myArr.push(interfaceN);"},{"line_number":292,"context_line":"          });"},{"line_number":293,"context_line":"          ctrl.interfacesMap[value] \u003d myArr;"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_dba352ff","line":290,"updated":"2017-07-06 14:22:51.000000000","message":"I would s/interfaceN/implementation/","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f82bd67a84d121328a6ac35540449619dd7e2c1e","unresolved":false,"context_lines":[{"line_number":287,"context_line":"      angular.forEach(ctrl.driverInterfaces, function(value) {"},{"line_number":288,"context_line":"        ironic.getDriverEnabledInterfaces(driver, value).then(function(response) {"},{"line_number":289,"context_line":"          var myArr \u003d [];"},{"line_number":290,"context_line":"          angular.forEach(response, function(interfaceN) {"},{"line_number":291,"context_line":"            myArr.push(interfaceN);"},{"line_number":292,"context_line":"          });"},{"line_number":293,"context_line":"          ctrl.interfacesMap[value] \u003d myArr;"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_6615b348","line":290,"in_reply_to":"3f1d235d_dba352ff","updated":"2017-07-07 00:48:15.000000000","message":"Done","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        ironic.getDriverEnabledInterfaces(driver, value).then(function(response) {"},{"line_number":289,"context_line":"          var myArr \u003d [];"},{"line_number":290,"context_line":"          angular.forEach(response, function(interfaceN) {"},{"line_number":291,"context_line":"            myArr.push(interfaceN);"},{"line_number":292,"context_line":"          });"},{"line_number":293,"context_line":"          ctrl.interfacesMap[value] \u003d myArr;"},{"line_number":294,"context_line":"        });"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_1bbf8ad1","line":291,"updated":"2017-07-06 14:22:51.000000000","message":"Is this loop required? Is reponse not a list of interface implementations?","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"ea36d1f9d4e6a47768aa7c4b4d068621c1119e7d","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        ironic.getDriverEnabledInterfaces(driver, value).then(function(response) {"},{"line_number":289,"context_line":"          var myArr \u003d [];"},{"line_number":290,"context_line":"          angular.forEach(response, function(interfaceN) {"},{"line_number":291,"context_line":"            myArr.push(interfaceN);"},{"line_number":292,"context_line":"          });"},{"line_number":293,"context_line":"          ctrl.interfacesMap[value] \u003d myArr;"},{"line_number":294,"context_line":"        });"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_ebe98ee2","line":291,"in_reply_to":"3f1d235d_1bbf8ad1","updated":"2017-07-07 00:03:16.000000000","message":"Yes i need this because i want to show individual interfaces in drop down menu for each driver interface. So e.g. if passed \u0027network\u0027 interface, response would be an object {\"flat\", \"noop\"}. So then i add these individually in myArr. Does this make sense?","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"738d692f86f05c513e6e5e1a166ca2eaf9ecf67a","unresolved":false,"context_lines":[{"line_number":288,"context_line":"        ironic.getDriverEnabledInterfaces(driver, value).then(function(response) {"},{"line_number":289,"context_line":"          var myArr \u003d [];"},{"line_number":290,"context_line":"          angular.forEach(response, function(interfaceN) {"},{"line_number":291,"context_line":"            myArr.push(interfaceN);"},{"line_number":292,"context_line":"          });"},{"line_number":293,"context_line":"          ctrl.interfacesMap[value] \u003d myArr;"},{"line_number":294,"context_line":"        });"}],"source_content_type":"text/javascript","patch_set":4,"id":"bf3e73b7_d8e1b6d2","line":291,"in_reply_to":"3f1d235d_ebe98ee2","updated":"2017-08-07 20:58:28.000000000","message":"ok","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"97675b98337d04136241145c81ac791334b84a78","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    ctrl.modalTitle \u003d gettext(\"Node\");"},{"line_number":54,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Submit\");"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    ctrl.driverInterfaces \u003d [\"Raid\", \"Network\", \"Power\", \"Console\", \"Storage\", \"Inspect\","},{"line_number":57,"context_line":"                             \"Boot\", \"Deploy\", \"Management\"];"},{"line_number":58,"context_line":"    ctrl.interfacesMap \u003d {};"},{"line_number":59,"context_line":""}],"source_content_type":"text/javascript","patch_set":9,"id":"7f287b81_b5d4c6be","line":56,"updated":"2017-09-01 20:13:11.000000000","message":"I dont think that driverInterfaces needs to be a controller variable, I dont see any external access. If so, just make it IIFE scope.","commit_id":"1c52037f9da7354976e937dbc5875c0ffe8740cb"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"2d07922629801dc34fc48e40513ba7c133b86123","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    ctrl.modalTitle \u003d gettext(\"Node\");"},{"line_number":54,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Submit\");"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    ctrl.driverInterfaces \u003d [\"Raid\", \"Network\", \"Power\", \"Console\", \"Storage\", \"Inspect\","},{"line_number":57,"context_line":"                             \"Boot\", \"Deploy\", \"Management\"];"},{"line_number":58,"context_line":"    ctrl.interfacesMap \u003d {};"},{"line_number":59,"context_line":""}],"source_content_type":"text/javascript","patch_set":9,"id":"7f287b81_c02d11a9","line":56,"in_reply_to":"7f287b81_6311dd04","updated":"2017-09-05 18:11:40.000000000","message":"Done","commit_id":"1c52037f9da7354976e937dbc5875c0ffe8740cb"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"4fa00f606afaea982310d409679afa9b71fe9727","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    ctrl.modalTitle \u003d gettext(\"Node\");"},{"line_number":54,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Submit\");"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    ctrl.driverInterfaces \u003d [\"Raid\", \"Network\", \"Power\", \"Console\", \"Storage\", \"Inspect\","},{"line_number":57,"context_line":"                             \"Boot\", \"Deploy\", \"Management\"];"},{"line_number":58,"context_line":"    ctrl.interfacesMap \u003d {};"},{"line_number":59,"context_line":""}],"source_content_type":"text/javascript","patch_set":9,"id":"7f287b81_6311dd04","line":56,"in_reply_to":"7f287b81_b5d4c6be","updated":"2017-09-05 02:12:44.000000000","message":"Yes you are right, it is just used in this file. Will look up IIFE and implement with that.","commit_id":"1c52037f9da7354976e937dbc5875c0ffe8740cb"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"1e30a09d6a75029fb8b2d559cefb1a46eb897202","unresolved":false,"context_lines":[{"line_number":294,"context_line":"     * @param {string} driverName - driver name"},{"line_number":295,"context_line":"     * @return {void}"},{"line_number":296,"context_line":"     */"},{"line_number":297,"context_line":"    ctrl.loadDriverDetails \u003d function(driverName) {"},{"line_number":298,"context_line":"      ctrl.driverType \u003d null;"},{"line_number":299,"context_line":"      angular.forEach(driverInterfaces, function(interfaceName) {"},{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_1723bbc0","line":297,"range":{"start_line":297,"start_character":9,"end_line":297,"end_character":26},"updated":"2017-10-04 00:40:24.000000000","message":"I am not sure if we should have a method name loadDriverDetails, the reason i had loadDriverInterface was because i felt otherwise it would be confusing what is the difference between loadDriverProperties and loadDriverDetails. I get that driver properties are basically the kernel, ramdisk but feel would it be confusing, wdyt? I am just thinking out loud, may be it is not that confusing","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"794e2e8d2838d5e193efac2f8e3ea53e349ab50a","unresolved":false,"context_lines":[{"line_number":294,"context_line":"     * @param {string} driverName - driver name"},{"line_number":295,"context_line":"     * @return {void}"},{"line_number":296,"context_line":"     */"},{"line_number":297,"context_line":"    ctrl.loadDriverDetails \u003d function(driverName) {"},{"line_number":298,"context_line":"      ctrl.driverType \u003d null;"},{"line_number":299,"context_line":"      angular.forEach(driverInterfaces, function(interfaceName) {"},{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_20d64ff3","line":297,"range":{"start_line":297,"start_character":9,"end_line":297,"end_character":26},"in_reply_to":"7f515b1d_1723bbc0","updated":"2017-10-04 21:28:34.000000000","message":"I agree with the question. I am going off the Ironic web api documentation that says \"Show details for a driver\". We could create a call that extracts out the interfaces, but Ironic itself has not done that. I am open.","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f8c0711a90499cbb5bea1b1c514314818ef0ef51","unresolved":false,"context_lines":[{"line_number":294,"context_line":"     * @param {string} driverName - driver name"},{"line_number":295,"context_line":"     * @return {void}"},{"line_number":296,"context_line":"     */"},{"line_number":297,"context_line":"    ctrl.loadDriverDetails \u003d function(driverName) {"},{"line_number":298,"context_line":"      ctrl.driverType \u003d null;"},{"line_number":299,"context_line":"      angular.forEach(driverInterfaces, function(interfaceName) {"},{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_78a75f51","line":297,"range":{"start_line":297,"start_character":9,"end_line":297,"end_character":26},"in_reply_to":"7f515b1d_20d64ff3","updated":"2017-10-04 23:48:48.000000000","message":"Anyways we are extracting interfaces here, should we just stick to loadDriverInterfaces?","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"1ba565bccf15ca051cdf55257dffdc778e3d102b","unresolved":false,"context_lines":[{"line_number":294,"context_line":"     * @param {string} driverName - driver name"},{"line_number":295,"context_line":"     * @return {void}"},{"line_number":296,"context_line":"     */"},{"line_number":297,"context_line":"    ctrl.loadDriverDetails \u003d function(driverName) {"},{"line_number":298,"context_line":"      ctrl.driverType \u003d null;"},{"line_number":299,"context_line":"      angular.forEach(driverInterfaces, function(interfaceName) {"},{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_2463e3de","line":297,"range":{"start_line":297,"start_character":9,"end_line":297,"end_character":26},"in_reply_to":"7f515b1d_78a75f51","updated":"2017-10-05 16:29:53.000000000","message":"This call also assigns driver type. I am inclined to leave as -is, but would like to understand the underlying philosophy of splitting properties and details.","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"1e30a09d6a75029fb8b2d559cefb1a46eb897202","unresolved":false,"context_lines":[{"line_number":296,"context_line":"     */"},{"line_number":297,"context_line":"    ctrl.loadDriverDetails \u003d function(driverName) {"},{"line_number":298,"context_line":"      ctrl.driverType \u003d null;"},{"line_number":299,"context_line":"      angular.forEach(driverInterfaces, function(interfaceName) {"},{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"},{"line_number":301,"context_line":"      });"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"      ctrl.driverInterfaceFields \u003d {};"},{"line_number":304,"context_line":"      return ironic.getDriverDetails(driverName).then(function(details) {"}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_f2226d01","line":301,"range":{"start_line":299,"start_character":5,"end_line":301,"end_character":9},"updated":"2017-10-04 00:40:24.000000000","message":"Aren\u0027t we initializing the interfaces to null inside ctrl.node above?","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f8c0711a90499cbb5bea1b1c514314818ef0ef51","unresolved":false,"context_lines":[{"line_number":296,"context_line":"     */"},{"line_number":297,"context_line":"    ctrl.loadDriverDetails \u003d function(driverName) {"},{"line_number":298,"context_line":"      ctrl.driverType \u003d null;"},{"line_number":299,"context_line":"      angular.forEach(driverInterfaces, function(interfaceName) {"},{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"},{"line_number":301,"context_line":"      });"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"      ctrl.driverInterfaceFields \u003d {};"},{"line_number":304,"context_line":"      return ironic.getDriverDetails(driverName).then(function(details) {"}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_38c207eb","line":301,"range":{"start_line":299,"start_character":5,"end_line":301,"end_character":9},"in_reply_to":"7f515b1d_40470bbe","updated":"2017-10-04 23:48:48.000000000","message":"Ah okay","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"794e2e8d2838d5e193efac2f8e3ea53e349ab50a","unresolved":false,"context_lines":[{"line_number":296,"context_line":"     */"},{"line_number":297,"context_line":"    ctrl.loadDriverDetails \u003d function(driverName) {"},{"line_number":298,"context_line":"      ctrl.driverType \u003d null;"},{"line_number":299,"context_line":"      angular.forEach(driverInterfaces, function(interfaceName) {"},{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"},{"line_number":301,"context_line":"      });"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"      ctrl.driverInterfaceFields \u003d {};"},{"line_number":304,"context_line":"      return ironic.getDriverDetails(driverName).then(function(details) {"}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_40470bbe","line":301,"range":{"start_line":299,"start_character":5,"end_line":301,"end_character":9},"in_reply_to":"7f515b1d_f2226d01","updated":"2017-10-04 21:28:34.000000000","message":"Here we are re-initializing to support a change in driver.","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"d157e128afca46a8384128f9296cf1ded9691073","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"},{"line_number":301,"context_line":"      });"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"      ctrl.driverInterfaceFields \u003d {};"},{"line_number":304,"context_line":"      return ironic.getDriverDetails(driverName).then(function(details) {"},{"line_number":305,"context_line":"        ctrl.driverType \u003d details.type;"},{"line_number":306,"context_line":""}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_b28d15d5","line":303,"range":{"start_line":303,"start_character":5,"end_line":303,"end_character":38},"updated":"2017-10-04 01:02:25.000000000","message":"is there a need for this again? It is present on L64","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f8c0711a90499cbb5bea1b1c514314818ef0ef51","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"},{"line_number":301,"context_line":"      });"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"      ctrl.driverInterfaceFields \u003d {};"},{"line_number":304,"context_line":"      return ironic.getDriverDetails(driverName).then(function(details) {"},{"line_number":305,"context_line":"        ctrl.driverType \u003d details.type;"},{"line_number":306,"context_line":""}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_58bdc366","line":303,"range":{"start_line":303,"start_character":5,"end_line":303,"end_character":38},"in_reply_to":"7f515b1d_20440fb7","updated":"2017-10-04 23:48:48.000000000","message":"Ah, ok","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"794e2e8d2838d5e193efac2f8e3ea53e349ab50a","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        ctrl.node[interfaceName + \u0027_interface\u0027] \u003d null;"},{"line_number":301,"context_line":"      });"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"      ctrl.driverInterfaceFields \u003d {};"},{"line_number":304,"context_line":"      return ironic.getDriverDetails(driverName).then(function(details) {"},{"line_number":305,"context_line":"        ctrl.driverType \u003d details.type;"},{"line_number":306,"context_line":""}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_20440fb7","line":303,"range":{"start_line":303,"start_character":5,"end_line":303,"end_character":38},"in_reply_to":"7f515b1d_b28d15d5","updated":"2017-10-04 21:28:34.000000000","message":"Yes in the case where we are changing the driver from a previously assigned value.","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"d157e128afca46a8384128f9296cf1ded9691073","unresolved":false,"context_lines":[{"line_number":310,"context_line":"          if (angular.isDefined(details[enabled]) \u0026\u0026 details[enabled] !\u003d\u003d null) {"},{"line_number":311,"context_line":"            ctrl.driverInterfaceFields[interfaceName] \u003d"},{"line_number":312,"context_line":"              new formFieldService.FormField("},{"line_number":313,"context_line":"                {type: \u0027radio\u0027,"},{"line_number":314,"context_line":"                 id: interfaceName,"},{"line_number":315,"context_line":"                 title: interfaceName,"},{"line_number":316,"context_line":"                 options: details[enabled],"}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_f4337af5","line":313,"range":{"start_line":313,"start_character":24,"end_line":313,"end_character":29},"updated":"2017-10-04 01:02:25.000000000","message":"would select type input be better than radio, wdyt?","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"794e2e8d2838d5e193efac2f8e3ea53e349ab50a","unresolved":false,"context_lines":[{"line_number":310,"context_line":"          if (angular.isDefined(details[enabled]) \u0026\u0026 details[enabled] !\u003d\u003d null) {"},{"line_number":311,"context_line":"            ctrl.driverInterfaceFields[interfaceName] \u003d"},{"line_number":312,"context_line":"              new formFieldService.FormField("},{"line_number":313,"context_line":"                {type: \u0027radio\u0027,"},{"line_number":314,"context_line":"                 id: interfaceName,"},{"line_number":315,"context_line":"                 title: interfaceName,"},{"line_number":316,"context_line":"                 options: details[enabled],"}],"source_content_type":"text/javascript","patch_set":15,"id":"7f515b1d_60232707","line":313,"range":{"start_line":313,"start_character":24,"end_line":313,"end_character":29},"in_reply_to":"7f515b1d_f4337af5","updated":"2017-10-04 21:28:34.000000000","message":"Radio uses a display style in which all options are shown. For small numbers of options I think this style is more direct, and provides a better user experience.","commit_id":"0a078bde52ce6e4c46bfb92923cf209c85d5a771"}],"ironic_ui/static/dashboard/admin/ironic/base-node/base-node.controller.spec.js":[{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"3235e12a47c378ba5fdde96decc5661ba999f38f","unresolved":false,"context_lines":[{"line_number":129,"context_line":"      ctrl._loadDriverDetails(driverName);"},{"line_number":130,"context_line":"      ironicBackendMockService.flush();"},{"line_number":131,"context_line":"      var drivers \u003d ironicBackendMockService.getDrivers();"},{"line_number":132,"context_line":"      expect(ctrl.driverType).toEqual(drivers[driverName].details.type);"},{"line_number":133,"context_line":"    });"},{"line_number":134,"context_line":"  });"},{"line_number":135,"context_line":"})();"}],"source_content_type":"text/javascript","patch_set":18,"id":"3f4b6375_6af20109","line":132,"updated":"2017-10-18 17:37:39.000000000","message":"Feel driverInterfaceFields to check for NonEmptyArray()?","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"}],"ironic_ui/static/dashboard/admin/ironic/base-node/base-node.html":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fd59ef63662effe40bcf2ee11d582922790b2902","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        \u003c/div\u003e"},{"line_number":249,"context_line":"        \u003c!--end driver details tab--\u003e"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"\t\u003c!-- start of driver interfaces tab --\u003e"},{"line_number":252,"context_line":"\t\u003cdiv class\u003d\"tab-pane\", id\u003d\"driverInterfaces\"\u003e"},{"line_number":253,"context_line":"          \u003cp class\u003d\"text-center\""},{"line_number":254,"context_line":"             ng-if\u003d\"ctrl.loadingDriverProperties\"\u003e"}],"source_content_type":"text/html","patch_set":2,"id":"5f201791_b5be40fd","line":251,"range":{"start_line":251,"start_character":0,"end_line":251,"end_character":1},"updated":"2017-06-20 13:06:50.000000000","message":"nit: tab instead of space","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"724e98e59a9e58939df0fc2d39f64ff561a75866","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        \u003c/div\u003e"},{"line_number":249,"context_line":"        \u003c!--end driver details tab--\u003e"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"\t\u003c!-- start of driver interfaces tab --\u003e"},{"line_number":252,"context_line":"\t\u003cdiv class\u003d\"tab-pane\", id\u003d\"driverInterfaces\"\u003e"},{"line_number":253,"context_line":"          \u003cp class\u003d\"text-center\""},{"line_number":254,"context_line":"             ng-if\u003d\"ctrl.loadingDriverProperties\"\u003e"}],"source_content_type":"text/html","patch_set":2,"id":"5f201791_1eb9c313","line":251,"range":{"start_line":251,"start_character":0,"end_line":251,"end_character":1},"in_reply_to":"5f201791_b5be40fd","updated":"2017-06-27 18:37:53.000000000","message":"Done","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"fd59ef63662effe40bcf2ee11d582922790b2902","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        \u003c!--end driver details tab--\u003e"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"\t\u003c!-- start of driver interfaces tab --\u003e"},{"line_number":252,"context_line":"\t\u003cdiv class\u003d\"tab-pane\", id\u003d\"driverInterfaces\"\u003e"},{"line_number":253,"context_line":"          \u003cp class\u003d\"text-center\""},{"line_number":254,"context_line":"             ng-if\u003d\"ctrl.loadingDriverProperties\"\u003e"},{"line_number":255,"context_line":"            \u003csmall\u003e\u003cem\u003e\u003ci class\u003d\"fa fa-spin fa-refresh\"\u003e\u003c/i\u003e\u003c/em\u003e\u003c/small\u003e"}],"source_content_type":"text/html","patch_set":2,"id":"5f201791_95bb440d","line":252,"updated":"2017-06-20 13:06:50.000000000","message":"nit: tab instead of space","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"724e98e59a9e58939df0fc2d39f64ff561a75866","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        \u003c!--end driver details tab--\u003e"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"\t\u003c!-- start of driver interfaces tab --\u003e"},{"line_number":252,"context_line":"\t\u003cdiv class\u003d\"tab-pane\", id\u003d\"driverInterfaces\"\u003e"},{"line_number":253,"context_line":"          \u003cp class\u003d\"text-center\""},{"line_number":254,"context_line":"             ng-if\u003d\"ctrl.loadingDriverProperties\"\u003e"},{"line_number":255,"context_line":"            \u003csmall\u003e\u003cem\u003e\u003ci class\u003d\"fa fa-spin fa-refresh\"\u003e\u003c/i\u003e\u003c/em\u003e\u003c/small\u003e"}],"source_content_type":"text/html","patch_set":2,"id":"5f201791_de3c6b94","line":252,"in_reply_to":"5f201791_95bb440d","updated":"2017-06-27 18:37:53.000000000","message":"Done","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"1c90940920a6a18bae91fcc417b16b106f9ad9a7","unresolved":false,"context_lines":[{"line_number":26,"context_line":"           data-target\u003d\"#driverDetails\""},{"line_number":27,"context_line":"           data-toggle\u003d\"tab\""},{"line_number":28,"context_line":"           translate\u003eDriver Details\u003c/a\u003e\u003c/li\u003e"},{"line_number":29,"context_line":"      \u003cli ng-class\u003d\"{\u0027disabled\u0027: ctrl.driverType \u003d\u003d\u003d \u0027classic\u0027 || !ctrl.driverProperties}\"\u003e"},{"line_number":30,"context_line":"          \u003ca href\u003d\"\""},{"line_number":31,"context_line":"             data-target\u003d\"#driverInterfaces\""},{"line_number":32,"context_line":"             data-toggle\u003d\"tab\""}],"source_content_type":"text/html","patch_set":10,"id":"7f287b81_bb15704b","line":29,"updated":"2017-09-06 22:58:29.000000000","message":"The tab is clickable even though it shows as disabled.\nAlso the tab displays interfaces for classic as well as dynamic driver type.","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"75c5dc4d21e286209e7a787cb7145e6bde0a3cd1","unresolved":false,"context_lines":[{"line_number":26,"context_line":"           data-target\u003d\"#driverDetails\""},{"line_number":27,"context_line":"           data-toggle\u003d\"tab\""},{"line_number":28,"context_line":"           translate\u003eDriver Details\u003c/a\u003e\u003c/li\u003e"},{"line_number":29,"context_line":"      \u003cli ng-class\u003d\"{\u0027disabled\u0027: ctrl.driverType \u003d\u003d\u003d \u0027classic\u0027 || !ctrl.driverProperties}\"\u003e"},{"line_number":30,"context_line":"          \u003ca href\u003d\"\""},{"line_number":31,"context_line":"             data-target\u003d\"#driverInterfaces\""},{"line_number":32,"context_line":"             data-toggle\u003d\"tab\""}],"source_content_type":"text/html","patch_set":10,"id":"5f2577a7_9ca7d150","line":29,"in_reply_to":"7f287b81_bb15704b","updated":"2017-09-08 18:57:29.000000000","message":"Great catch Rama. Fixed","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"e6cd08cadef6214832934957ab8f0efd30fcdbb9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"           data-target\u003d\"#driverDetails\""},{"line_number":27,"context_line":"           data-toggle\u003d\"tab\""},{"line_number":28,"context_line":"           translate\u003eDriver Details\u003c/a\u003e\u003c/li\u003e"},{"line_number":29,"context_line":"      \u003cli ng-if\u003d\"ctrl.driverType \u003d\u003d\u003d \u0027classic\u0027 || !ctrl.driverProperties\""},{"line_number":30,"context_line":"          class\u003d\"disabled\"\u003e"},{"line_number":31,"context_line":"        \u003ca data-target\u003d\"#driverInterfaces\""},{"line_number":32,"context_line":"           translation\u003eDriver Interfaces\u003c/a\u003e\u003c/li\u003e"},{"line_number":33,"context_line":"      \u003cli ng-if\u003d\"ctrl.driverType \u003d\u003d\u003d \u0027dynamic\u0027 \u0026\u0026 ctrl.driverProperties\"\u003e"},{"line_number":34,"context_line":"          \u003ca href\u003d\"\""},{"line_number":35,"context_line":"             data-target\u003d\"#driverInterfaces\""}],"source_content_type":"text/html","patch_set":11,"id":"5f2577a7_9c7c71b6","line":32,"range":{"start_line":29,"start_character":6,"end_line":32,"end_character":49},"updated":"2017-09-08 18:59:09.000000000","message":"This is separated because this will make the tab non clickable. Earlier in PS10 when these two were combined, the tab was getting disabled but was clickable.","commit_id":"9730e157cdd8349ada6097b61396b5fe2711b60a"}],"ironic_ui/static/dashboard/admin/ironic/edit-node/edit-node.controller.js":[{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"69b652d731d2883ebf457fcac8d41eb95e60d021","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Update Node\");"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    ctrl.baseNode \u003d null;"},{"line_number":59,"context_line":"    ctrl.selectedDriver \u003d null;"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    var instanceInfoId \u003d \"instance_info\";"},{"line_number":62,"context_line":"    ctrl.propertyCollections.push("}],"source_content_type":"text/javascript","patch_set":10,"id":"7f287b81_44312ea2","line":59,"updated":"2017-09-05 22:30:32.000000000","message":"I dont understand the use of this variable.","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"112db96787ef55cc96f70e5b957efeba823cd74f","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    ctrl.submitButtonTitle \u003d gettext(\"Update Node\");"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    ctrl.baseNode \u003d null;"},{"line_number":59,"context_line":"    ctrl.selectedDriver \u003d null;"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    var instanceInfoId \u003d \"instance_info\";"},{"line_number":62,"context_line":"    ctrl.propertyCollections.push("}],"source_content_type":"text/javascript","patch_set":10,"id":"7f287b81_7da6bcc3","line":59,"in_reply_to":"7f287b81_44312ea2","updated":"2017-09-08 18:56:55.000000000","message":"Done","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"}],"ironic_ui/static/dashboard/admin/ironic/edit-node/edit-node.controller.spec.js":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"122ecfed44bf0544e78d8e8b831ff682c4bf4c10","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      expect(ctrl.node.name).toEqual(editNode.name);"},{"line_number":80,"context_line":"      expect(ctrl.node.resource_class).toEqual(editNode.resource_class);"},{"line_number":81,"context_line":"      if (ctrl.driverType \u003d\u003d\u003d \u0027classic\u0027) {"},{"line_number":82,"context_line":"        expect(ctrl.node.network_interface).toEqual(editNode.network_interface);"},{"line_number":83,"context_line":"      } else {"},{"line_number":84,"context_line":"        expect(ctrl.node.network_interface).toBeNull();"},{"line_number":85,"context_line":"      }"}],"source_content_type":"text/javascript","patch_set":18,"id":"5f4e5783_8bd464ea","line":82,"updated":"2017-10-17 12:35:07.000000000","message":"For what its worth, storage_interface is also of the same behavior type where a classic driver\u0027s behavior could be changed by selecting a storage interface. Other interfaces do not factor into that unless they are a hardware type.","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"77fb16a639a1fcc45153b4d5a6eee27cc0e0c61e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      expect(ctrl.node.name).toEqual(editNode.name);"},{"line_number":80,"context_line":"      expect(ctrl.node.resource_class).toEqual(editNode.resource_class);"},{"line_number":81,"context_line":"      if (ctrl.driverType \u003d\u003d\u003d \u0027classic\u0027) {"},{"line_number":82,"context_line":"        expect(ctrl.node.network_interface).toEqual(editNode.network_interface);"},{"line_number":83,"context_line":"      } else {"},{"line_number":84,"context_line":"        expect(ctrl.node.network_interface).toBeNull();"},{"line_number":85,"context_line":"      }"}],"source_content_type":"text/javascript","patch_set":18,"id":"3f4b6375_44324aa9","line":82,"in_reply_to":"3f4b6375_650d928f","updated":"2017-10-22 14:45:22.000000000","message":"I am seeing the storage_interface being returned for the classic agent_ipmitool driver. I will look into it, and make appropriate changes.","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"a736605e92865208f69f782b5f30a0fac64fdbcf","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      expect(ctrl.node.name).toEqual(editNode.name);"},{"line_number":80,"context_line":"      expect(ctrl.node.resource_class).toEqual(editNode.resource_class);"},{"line_number":81,"context_line":"      if (ctrl.driverType \u003d\u003d\u003d \u0027classic\u0027) {"},{"line_number":82,"context_line":"        expect(ctrl.node.network_interface).toEqual(editNode.network_interface);"},{"line_number":83,"context_line":"      } else {"},{"line_number":84,"context_line":"        expect(ctrl.node.network_interface).toBeNull();"},{"line_number":85,"context_line":"      }"}],"source_content_type":"text/javascript","patch_set":18,"id":"3f4b6375_6f652845","line":82,"in_reply_to":"3f4b6375_650d928f","updated":"2017-10-21 16:19:16.000000000","message":"Interesting. I just double checked the code and I believe it should, but there may have been a change somewhere along the way that I didn\u0027t pickup. I guess it is not a big deal, in the end.","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"46958669d76f3a9125ea771a7b3ed20b99e86f7c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      expect(ctrl.node.name).toEqual(editNode.name);"},{"line_number":80,"context_line":"      expect(ctrl.node.resource_class).toEqual(editNode.resource_class);"},{"line_number":81,"context_line":"      if (ctrl.driverType \u003d\u003d\u003d \u0027classic\u0027) {"},{"line_number":82,"context_line":"        expect(ctrl.node.network_interface).toEqual(editNode.network_interface);"},{"line_number":83,"context_line":"      } else {"},{"line_number":84,"context_line":"        expect(ctrl.node.network_interface).toBeNull();"},{"line_number":85,"context_line":"      }"}],"source_content_type":"text/javascript","patch_set":18,"id":"3f4b6375_650d928f","line":82,"in_reply_to":"5f4e5783_8bd464ea","updated":"2017-10-18 18:31:51.000000000","message":"I see even for classic driver, no storage interface is returned in getNode() call which is ironic\u0027s \"node-show\" API call, but on other hand network interface has a value when driver is classic and hence we are checking that. Correct me if wrong.","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"}],"ironic_ui/static/dashboard/admin/ironic/ironic.backend-mock.service.js":[{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":97,"context_line":"      updated_at: null,"},{"line_number":98,"context_line":"      uuid: undefined"},{"line_number":99,"context_line":"    };"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    var dynamicDriver \u003d {"},{"line_number":102,"context_line":"      default_boot_interfaces: \"pxe\","},{"line_number":103,"context_line":"      default_console_interfaces: \"no-console\","}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_e8264668","line":100,"updated":"2017-07-06 14:22:51.000000000","message":"I would consider defining a list of hwInterfaces \u003d [\u0027boot\u0027, \u0027power\u0027, ...], and a driver class the constructor of which would create and initialize the default and enabled interface variables by enumerating the hwInterfaces list.","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"738d692f86f05c513e6e5e1a166ca2eaf9ecf67a","unresolved":false,"context_lines":[{"line_number":97,"context_line":"      updated_at: null,"},{"line_number":98,"context_line":"      uuid: undefined"},{"line_number":99,"context_line":"    };"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    var dynamicDriver \u003d {"},{"line_number":102,"context_line":"      default_boot_interfaces: \"pxe\","},{"line_number":103,"context_line":"      default_console_interfaces: \"no-console\","}],"source_content_type":"text/javascript","patch_set":4,"id":"bf3e73b7_98044e7d","line":100,"in_reply_to":"3f1d235d_4b41a2a8","updated":"2017-08-07 20:58:28.000000000","message":"Done","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"ea36d1f9d4e6a47768aa7c4b4d068621c1119e7d","unresolved":false,"context_lines":[{"line_number":97,"context_line":"      updated_at: null,"},{"line_number":98,"context_line":"      uuid: undefined"},{"line_number":99,"context_line":"    };"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    var dynamicDriver \u003d {"},{"line_number":102,"context_line":"      default_boot_interfaces: \"pxe\","},{"line_number":103,"context_line":"      default_console_interfaces: \"no-console\","}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_4b41a2a8","line":100,"in_reply_to":"3f1d235d_e8264668","updated":"2017-07-07 00:03:16.000000000","message":"Yes i can do that, i needed thoughts on what would be the better way, (i knew this is not most appropriate way) :) So do you think i should create a factory function in the same file and then the constructor?","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    };"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    var dynamicDriver \u003d {"},{"line_number":102,"context_line":"      default_boot_interfaces: \"pxe\","},{"line_number":103,"context_line":"      default_console_interfaces: \"no-console\","},{"line_number":104,"context_line":"      default_deploy_interface: \"iscsi\","},{"line_number":105,"context_line":"      default_inspect_interface: \"no-inspect\","}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_254fc793","line":102,"updated":"2017-07-06 14:22:51.000000000","message":"Is default_boot_interfaces correct? I would have expected singular \"interface\"? Similar comment for other default interface values.","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"ea36d1f9d4e6a47768aa7c4b4d068621c1119e7d","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    };"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    var dynamicDriver \u003d {"},{"line_number":102,"context_line":"      default_boot_interfaces: \"pxe\","},{"line_number":103,"context_line":"      default_console_interfaces: \"no-console\","},{"line_number":104,"context_line":"      default_deploy_interface: \"iscsi\","},{"line_number":105,"context_line":"      default_inspect_interface: \"no-inspect\","}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_eb1aaec3","line":102,"in_reply_to":"3f1d235d_254fc793","updated":"2017-07-07 00:03:16.000000000","message":"Yes my bad, it is default_boot_interface and should be singular always. I will correct that for boot and console","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":122,"context_line":"      type: \"dynamic\""},{"line_number":123,"context_line":"    };"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    var classicDriver \u003d {"},{"line_number":126,"context_line":"      default_boot_interfaces: null,"},{"line_number":127,"context_line":"      default_console_interfaces: null,"},{"line_number":128,"context_line":"      default_deploy_interface: null,"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_082e2291","line":125,"updated":"2017-07-06 14:22:51.000000000","message":"Where is classicDriver used?","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"ea36d1f9d4e6a47768aa7c4b4d068621c1119e7d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"      type: \"dynamic\""},{"line_number":123,"context_line":"    };"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    var classicDriver \u003d {"},{"line_number":126,"context_line":"      default_boot_interfaces: null,"},{"line_number":127,"context_line":"      default_console_interfaces: null,"},{"line_number":128,"context_line":"      default_deploy_interface: null,"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_4bfc026f","line":125,"in_reply_to":"3f1d235d_082e2291","updated":"2017-07-07 00:03:16.000000000","message":"Actually i added this just in case people want to see the tests for classic driver as well. I wanted you guys thoughts","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"738d692f86f05c513e6e5e1a166ca2eaf9ecf67a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"      type: \"dynamic\""},{"line_number":123,"context_line":"    };"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    var classicDriver \u003d {"},{"line_number":126,"context_line":"      default_boot_interfaces: null,"},{"line_number":127,"context_line":"      default_console_interfaces: null,"},{"line_number":128,"context_line":"      default_deploy_interface: null,"}],"source_content_type":"text/javascript","patch_set":4,"id":"bf3e73b7_78552a50","line":125,"in_reply_to":"3f1d235d_4bfc026f","updated":"2017-08-07 20:58:28.000000000","message":"OK","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"bef1a16c57596282893af70edeeb3dbd075f0311","unresolved":false,"context_lines":[{"line_number":106,"context_line":"      uuid: undefined"},{"line_number":107,"context_line":"    };"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    var dynamicDriver \u003d {"},{"line_number":110,"context_line":"      default_boot_interface: \"pxe\","},{"line_number":111,"context_line":"      default_console_interface: \"no-console\","},{"line_number":112,"context_line":"      default_deploy_interface: \"iscsi\","}],"source_content_type":"text/javascript","patch_set":7,"id":"9f436f4f_6fc37f8a","line":109,"updated":"2017-08-15 22:24:22.000000000","message":"How about drivers \u003d {\"ipmi\" : {\n....\n}};","commit_id":"4274783fa1de915614b578a67fc7fde6179109a4"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"359f77a6d17d4d26d418c4623c7a151d75223d6a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"      uuid: undefined"},{"line_number":107,"context_line":"    };"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    var dynamicDriver \u003d {"},{"line_number":110,"context_line":"      default_boot_interface: \"pxe\","},{"line_number":111,"context_line":"      default_console_interface: \"no-console\","},{"line_number":112,"context_line":"      default_deploy_interface: \"iscsi\","}],"source_content_type":"text/javascript","patch_set":7,"id":"9f436f4f_6bdeb83e","line":109,"in_reply_to":"9f436f4f_6fc37f8a","updated":"2017-08-16 19:07:31.000000000","message":"Yes good idea.","commit_id":"4274783fa1de915614b578a67fc7fde6179109a4"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"bef1a16c57596282893af70edeeb3dbd075f0311","unresolved":false,"context_lines":[{"line_number":646,"context_line":"      $httpBackend.whenGET(/\\/api\\/ironic\\/drivers\\/([^\\/]+)$/,"},{"line_number":647,"context_line":"                           undefined,"},{"line_number":648,"context_line":"                           [\u0027driverName\u0027])"},{"line_number":649,"context_line":"        .respond(responseCode.SUCCESS, dynamicDriver);"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"      // Get glance images"},{"line_number":652,"context_line":"      $httpBackend.whenGET(/\\/api\\/glance\\/images/)"}],"source_content_type":"text/javascript","patch_set":7,"id":"9f436f4f_6fda5f78","line":649,"updated":"2017-08-15 22:24:22.000000000","message":"I would do drivers[driverName]. This will make it easy to add more drivers.","commit_id":"4274783fa1de915614b578a67fc7fde6179109a4"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"359f77a6d17d4d26d418c4623c7a151d75223d6a","unresolved":false,"context_lines":[{"line_number":646,"context_line":"      $httpBackend.whenGET(/\\/api\\/ironic\\/drivers\\/([^\\/]+)$/,"},{"line_number":647,"context_line":"                           undefined,"},{"line_number":648,"context_line":"                           [\u0027driverName\u0027])"},{"line_number":649,"context_line":"        .respond(responseCode.SUCCESS, dynamicDriver);"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"      // Get glance images"},{"line_number":652,"context_line":"      $httpBackend.whenGET(/\\/api\\/glance\\/images/)"}],"source_content_type":"text/javascript","patch_set":7,"id":"9f436f4f_2be4300c","line":649,"in_reply_to":"9f436f4f_6fda5f78","updated":"2017-08-16 19:07:31.000000000","message":"Agree","commit_id":"4274783fa1de915614b578a67fc7fde6179109a4"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"69b652d731d2883ebf457fcac8d41eb95e60d021","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        type: \"dynamic\"}"},{"line_number":132,"context_line":"    };"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    var driverProperties \u003d {"},{"line_number":135,"context_line":"      deploy_kernel: \"UUID (from Glance)\","},{"line_number":136,"context_line":"      deploy_ramdisk: \"UUID (from Glance)\""},{"line_number":137,"context_line":"    };"}],"source_content_type":"text/javascript","patch_set":10,"id":"7f287b81_64766aa7","line":134,"updated":"2017-09-05 22:30:32.000000000","message":"Not sure how the driverProperties variable is used, and exactly what it means.","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"112db96787ef55cc96f70e5b957efeba823cd74f","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        type: \"dynamic\"}"},{"line_number":132,"context_line":"    };"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    var driverProperties \u003d {"},{"line_number":135,"context_line":"      deploy_kernel: \"UUID (from Glance)\","},{"line_number":136,"context_line":"      deploy_ramdisk: \"UUID (from Glance)\""},{"line_number":137,"context_line":"    };"}],"source_content_type":"text/javascript","patch_set":10,"id":"7f287b81_1d045849","line":134,"in_reply_to":"7f287b81_64766aa7","updated":"2017-09-08 18:56:55.000000000","message":"This is used as a return value for driver/properties API call made by getDriverProperties(). Just to cover test for each variable in loadDriverProperties().","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"69b652d731d2883ebf457fcac8d41eb95e60d021","unresolved":false,"context_lines":[{"line_number":178,"context_line":"      getPortgroup: getPortgroup,"},{"line_number":179,"context_line":"      defaultNodeInterfaces: defaultNodeInterfaces,"},{"line_number":180,"context_line":"      defaultNode: defaultNode,"},{"line_number":181,"context_line":"      dynamicDriver: dynamicDriver"},{"line_number":182,"context_line":"    };"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    var responseCode \u003d {"}],"source_content_type":"text/javascript","patch_set":10,"id":"7f287b81_84171646","line":181,"updated":"2017-09-05 22:30:32.000000000","message":"Not sure whether dynamicDriver should be exposed. I will keep looking.","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"69b652d731d2883ebf457fcac8d41eb95e60d021","unresolved":false,"context_lines":[{"line_number":635,"context_line":""},{"line_number":636,"context_line":"      // Get the currently available drivers"},{"line_number":637,"context_line":"      $httpBackend.whenGET(/\\/api\\/ironic\\/drivers\\/$/)"},{"line_number":638,"context_line":"        .respond(responseCode.SUCCESS, {drivers: Object.keys(dynamicDriver)});"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"      // Get driver properties"},{"line_number":641,"context_line":"      $httpBackend.whenGET(/\\/api\\/ironic\\/drivers\\/([^\\/]+)\\/properties$/,"}],"source_content_type":"text/javascript","patch_set":10,"id":"7f287b81_79297799","line":638,"updated":"2017-09-05 22:30:32.000000000","message":"I would use {drivers: drivers} drivers might be a combination of classic and dynamic drivers.","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"112db96787ef55cc96f70e5b957efeba823cd74f","unresolved":false,"context_lines":[{"line_number":635,"context_line":""},{"line_number":636,"context_line":"      // Get the currently available drivers"},{"line_number":637,"context_line":"      $httpBackend.whenGET(/\\/api\\/ironic\\/drivers\\/$/)"},{"line_number":638,"context_line":"        .respond(responseCode.SUCCESS, {drivers: Object.keys(dynamicDriver)});"},{"line_number":639,"context_line":""},{"line_number":640,"context_line":"      // Get driver properties"},{"line_number":641,"context_line":"      $httpBackend.whenGET(/\\/api\\/ironic\\/drivers\\/([^\\/]+)\\/properties$/,"}],"source_content_type":"text/javascript","patch_set":10,"id":"7f287b81_108b1a68","line":638,"in_reply_to":"7f287b81_79297799","updated":"2017-09-08 18:56:55.000000000","message":"Done","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"69b652d731d2883ebf457fcac8d41eb95e60d021","unresolved":false,"context_lines":[{"line_number":648,"context_line":"                           undefined,"},{"line_number":649,"context_line":"                           [\u0027driver\u0027])"},{"line_number":650,"context_line":"        .respond(function(method, url, data, headers, params) {"},{"line_number":651,"context_line":"          return [responseCode.SUCCESS, dynamicDriver[params.driver]];"},{"line_number":652,"context_line":"        });"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"      // Get glance images"}],"source_content_type":"text/javascript","patch_set":10,"id":"7f287b81_64ff8a01","line":651,"updated":"2017-09-05 22:30:32.000000000","message":"I think it should be drivers[params.driver]","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"112db96787ef55cc96f70e5b957efeba823cd74f","unresolved":false,"context_lines":[{"line_number":648,"context_line":"                           undefined,"},{"line_number":649,"context_line":"                           [\u0027driver\u0027])"},{"line_number":650,"context_line":"        .respond(function(method, url, data, headers, params) {"},{"line_number":651,"context_line":"          return [responseCode.SUCCESS, dynamicDriver[params.driver]];"},{"line_number":652,"context_line":"        });"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"      // Get glance images"}],"source_content_type":"text/javascript","patch_set":10,"id":"7f287b81_70ddbe6e","line":651,"in_reply_to":"7f287b81_64ff8a01","updated":"2017-09-08 18:56:55.000000000","message":"As we had a chat, drivers will just consist of name and type per each driver object. Hence, keeping as is. Let me know if you think of something else","commit_id":"033ac073d4bb92163ea9ca62b175a11b405251ab"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"122ecfed44bf0544e78d8e8b831ff682c4bf4c10","unresolved":false,"context_lines":[{"line_number":125,"context_line":"          enabled_deploy_interfaces: [\"iscsi\", \"direct\"],"},{"line_number":126,"context_line":"          enabled_inspect_interfaces: [\"no-inspect\"],"},{"line_number":127,"context_line":"          enabled_management_interfaces: [\"ipmitool\"],"},{"line_number":128,"context_line":"          enabled_network_interfaces: [\"flat\", \"noop\"],"},{"line_number":129,"context_line":"          enabled_power_interfaces: [\"ipmitool\"],"},{"line_number":130,"context_line":"          enabled_raid_interfaces: [\"no-raid\", \"agent\"],"},{"line_number":131,"context_line":"          enabled_vendor_interfaces: [\"ipmitool\", \"no-vendor\"],"}],"source_content_type":"text/javascript","patch_set":18,"id":"5f4e5783_8bed84b8","line":128,"updated":"2017-10-17 12:35:07.000000000","message":"no need for a storage interface yet?","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"3235e12a47c378ba5fdde96decc5661ba999f38f","unresolved":false,"context_lines":[{"line_number":125,"context_line":"          enabled_deploy_interfaces: [\"iscsi\", \"direct\"],"},{"line_number":126,"context_line":"          enabled_inspect_interfaces: [\"no-inspect\"],"},{"line_number":127,"context_line":"          enabled_management_interfaces: [\"ipmitool\"],"},{"line_number":128,"context_line":"          enabled_network_interfaces: [\"flat\", \"noop\"],"},{"line_number":129,"context_line":"          enabled_power_interfaces: [\"ipmitool\"],"},{"line_number":130,"context_line":"          enabled_raid_interfaces: [\"no-raid\", \"agent\"],"},{"line_number":131,"context_line":"          enabled_vendor_interfaces: [\"ipmitool\", \"no-vendor\"],"}],"source_content_type":"text/javascript","patch_set":18,"id":"3f4b6375_ea6271d8","line":128,"in_reply_to":"5f4e5783_8bed84b8","updated":"2017-10-18 17:37:39.000000000","message":"So, ipmi do not return storage_interface on the API call \"driver-show ipmi\". We check here https://review.openstack.org/#/c/473957/18/ironic_ui/static/dashboard/admin/ironic/base-node/base-node.controller.js@315 if interface is not defined we do not return. Hence this object won\u0027t have storage interface.","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"}],"ironic_ui/static/dashboard/admin/ironic/ironic.module.js":[{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"3235e12a47c378ba5fdde96decc5661ba999f38f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                       \u0027network\u0027,"},{"line_number":67,"context_line":"                       \u0027power\u0027,"},{"line_number":68,"context_line":"                       \u0027raid\u0027,"},{"line_number":69,"context_line":"                       \u0027storage\u0027,"},{"line_number":70,"context_line":"                       \u0027vendor\u0027]);"},{"line_number":71,"context_line":"  }"},{"line_number":72,"context_line":"})();"}],"source_content_type":"text/javascript","patch_set":18,"id":"3f4b6375_ca8d757c","line":69,"updated":"2017-10-18 17:37:39.000000000","message":"Adding storage here, so storage interface would be checked against each driver if it is defined and would be returned in that case","commit_id":"ba756729e09cccfd185f663558d439c6abea4127"}],"ironic_ui/static/dashboard/admin/ironic/ironic.service.js":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"389058000e8e8d2b1fe55eddc950585caf09f7bb","unresolved":false,"context_lines":[{"line_number":72,"context_line":"     * @param {string} hwInterface - Type of interface."},{"line_number":73,"context_line":"     * @return {promise} array  of interface names"},{"line_number":74,"context_line":"     */"},{"line_number":75,"context_line":"    function driverInfo(driver, hwInterface) {"},{"line_number":76,"context_line":"      return apiService.get(\u0027/api/ironic/drivers/\u0027 + driver)"},{"line_number":77,"context_line":"        .then(function(response) {"},{"line_number":78,"context_line":"          return response.data[\u0027enabled_\u0027 + hwInterface.toLowerCase() + \u0027_interfaces\u0027];"}],"source_content_type":"text/javascript","patch_set":2,"id":"5f201791_93a03c92","line":75,"updated":"2017-06-27 12:33:08.000000000","message":"let\u0027s call the function based on what it actually does: getDriverEnabledInterfaces or something like that.","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"d462061f9a63923f3c71402ccbad9184b4c29bee","unresolved":false,"context_lines":[{"line_number":72,"context_line":"     * @param {string} hwInterface - Type of interface."},{"line_number":73,"context_line":"     * @return {promise} array  of interface names"},{"line_number":74,"context_line":"     */"},{"line_number":75,"context_line":"    function driverInfo(driver, hwInterface) {"},{"line_number":76,"context_line":"      return apiService.get(\u0027/api/ironic/drivers/\u0027 + driver)"},{"line_number":77,"context_line":"        .then(function(response) {"},{"line_number":78,"context_line":"          return response.data[\u0027enabled_\u0027 + hwInterface.toLowerCase() + \u0027_interfaces\u0027];"}],"source_content_type":"text/javascript","patch_set":2,"id":"5f201791_be588ff9","line":75,"in_reply_to":"5f201791_93a03c92","updated":"2017-06-27 18:38:33.000000000","message":"Done","commit_id":"a6f08c73d96da468330f0eab59c465d4c7ff74ba"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":71,"context_line":"     * https://developer.openstack.org/api-ref/baremetal/"},{"line_number":72,"context_line":"     * ?expanded\u003dshow-driver-details-detail"},{"line_number":73,"context_line":"     *"},{"line_number":74,"context_line":"     * @param {string} driver \u003d Name of an underlying driver."},{"line_number":75,"context_line":"     * @param {string} hwInterface - Type of interface."},{"line_number":76,"context_line":"     * @return {promise} array  of interface names"},{"line_number":77,"context_line":"     */"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_331b9073","line":74,"updated":"2017-07-06 14:22:51.000000000","message":"nit: Change \u003d to -","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f82bd67a84d121328a6ac35540449619dd7e2c1e","unresolved":false,"context_lines":[{"line_number":71,"context_line":"     * https://developer.openstack.org/api-ref/baremetal/"},{"line_number":72,"context_line":"     * ?expanded\u003dshow-driver-details-detail"},{"line_number":73,"context_line":"     *"},{"line_number":74,"context_line":"     * @param {string} driver \u003d Name of an underlying driver."},{"line_number":75,"context_line":"     * @param {string} hwInterface - Type of interface."},{"line_number":76,"context_line":"     * @return {promise} array  of interface names"},{"line_number":77,"context_line":"     */"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_4143c142","line":74,"in_reply_to":"3f1d235d_331b9073","updated":"2017-07-07 00:48:15.000000000","message":"Done","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"     *"},{"line_number":74,"context_line":"     * @param {string} driver \u003d Name of an underlying driver."},{"line_number":75,"context_line":"     * @param {string} hwInterface - Type of interface."},{"line_number":76,"context_line":"     * @return {promise} array  of interface names"},{"line_number":77,"context_line":"     */"},{"line_number":78,"context_line":"    function getDriverEnabledInterfaces(driver, hwInterface) {"},{"line_number":79,"context_line":"      return apiService.get(\u0027/api/ironic/drivers/\u0027 + driver)"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_f3787890","line":76,"updated":"2017-07-06 14:22:51.000000000","message":"nit: s /array  of/array of/","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f82bd67a84d121328a6ac35540449619dd7e2c1e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"     *"},{"line_number":74,"context_line":"     * @param {string} driver \u003d Name of an underlying driver."},{"line_number":75,"context_line":"     * @param {string} hwInterface - Type of interface."},{"line_number":76,"context_line":"     * @return {promise} array  of interface names"},{"line_number":77,"context_line":"     */"},{"line_number":78,"context_line":"    function getDriverEnabledInterfaces(driver, hwInterface) {"},{"line_number":79,"context_line":"      return apiService.get(\u0027/api/ironic/drivers/\u0027 + driver)"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_0149495e","line":76,"in_reply_to":"3f1d235d_f3787890","updated":"2017-07-07 00:48:15.000000000","message":"Done","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":75,"context_line":"     * @param {string} hwInterface - Type of interface."},{"line_number":76,"context_line":"     * @return {promise} array  of interface names"},{"line_number":77,"context_line":"     */"},{"line_number":78,"context_line":"    function getDriverEnabledInterfaces(driver, hwInterface) {"},{"line_number":79,"context_line":"      return apiService.get(\u0027/api/ironic/drivers/\u0027 + driver)"},{"line_number":80,"context_line":"        .then(function(response) {"},{"line_number":81,"context_line":"          return response.data[\u0027enabled_\u0027 + hwInterface.toLowerCase() + \u0027_interfaces\u0027];"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_b3b0c0de","line":78,"updated":"2017-07-06 14:22:51.000000000","message":"I think this function would be better named getDriverHwInterfaceImplementations. Just a suggestion.","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"f82bd67a84d121328a6ac35540449619dd7e2c1e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"     * @param {string} hwInterface - Type of interface."},{"line_number":76,"context_line":"     * @return {promise} array  of interface names"},{"line_number":77,"context_line":"     */"},{"line_number":78,"context_line":"    function getDriverEnabledInterfaces(driver, hwInterface) {"},{"line_number":79,"context_line":"      return apiService.get(\u0027/api/ironic/drivers/\u0027 + driver)"},{"line_number":80,"context_line":"        .then(function(response) {"},{"line_number":81,"context_line":"          return response.data[\u0027enabled_\u0027 + hwInterface.toLowerCase() + \u0027_interfaces\u0027];"}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_c178f190","line":78,"in_reply_to":"3f1d235d_b3b0c0de","updated":"2017-07-07 00:48:15.000000000","message":"Done","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"bef1a16c57596282893af70edeeb3dbd075f0311","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        });"},{"line_number":89,"context_line":"    }"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    function getDriverType(driver) {"},{"line_number":92,"context_line":"      return apiService.get(\u0027/api/ironic/drivers/\u0027 + driver)"},{"line_number":93,"context_line":"        .then(function(response) {"},{"line_number":94,"context_line":"          return response.data.type;"}],"source_content_type":"text/javascript","patch_set":7,"id":"9f436f4f_2f2fb788","line":91,"updated":"2017-08-15 22:24:22.000000000","message":"Missing doc?","commit_id":"4274783fa1de915614b578a67fc7fde6179109a4"}],"ironic_ui/static/dashboard/admin/ironic/ironic.service.spec.js":[{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"26b34b486df38b0c8b8055f4492176cc196a84c2","unresolved":false,"context_lines":[{"line_number":509,"context_line":"        it(\u0027getDriverEnabledInterfaces\u0027, function() {"},{"line_number":510,"context_line":"          ironicAPI.getDriverEnabledInterfaces(\"dynamic\",\"network\")"},{"line_number":511,"context_line":"            .then(function(interfaces) {"},{"line_number":512,"context_line":"              expect(interfaces).toEqual([\"flat\", \"noop\"]);"},{"line_number":513,"context_line":"            })"},{"line_number":514,"context_line":"            .catch(failTest);"},{"line_number":515,"context_line":""}],"source_content_type":"text/javascript","patch_set":4,"id":"3f1d235d_089bc217","line":512,"updated":"2017-07-06 14:22:51.000000000","message":"I think we should be verifying the result against a value provided by the backendMockService. I believe we are trying to verify that the ironicAPI is returning exactly what the backend created.","commit_id":"2754c6a7327b11dc5cf93717dfb505b62bc86c52"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"bef1a16c57596282893af70edeeb3dbd075f0311","unresolved":false,"context_lines":[{"line_number":575,"context_line":"        });"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"        it(\u0027getDriverEnabledInterfaces\u0027, function() {"},{"line_number":578,"context_line":"          ironicAPI.getDriverHwInterfaceImplementation(\"ipmi\",\"network\")"},{"line_number":579,"context_line":"            .then(function(interfaces) {"},{"line_number":580,"context_line":"              expect(interfaces).toEqual("},{"line_number":581,"context_line":"                ironicBackendMockService.dynamicDriver.enabled_network_interfaces);"}],"source_content_type":"text/javascript","patch_set":7,"id":"9f436f4f_2f98d772","line":578,"updated":"2017-08-15 22:24:22.000000000","message":"You could verify that ipmi is in fact a dynamic driver.","commit_id":"4274783fa1de915614b578a67fc7fde6179109a4"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"359f77a6d17d4d26d418c4623c7a151d75223d6a","unresolved":false,"context_lines":[{"line_number":575,"context_line":"        });"},{"line_number":576,"context_line":""},{"line_number":577,"context_line":"        it(\u0027getDriverEnabledInterfaces\u0027, function() {"},{"line_number":578,"context_line":"          ironicAPI.getDriverHwInterfaceImplementation(\"ipmi\",\"network\")"},{"line_number":579,"context_line":"            .then(function(interfaces) {"},{"line_number":580,"context_line":"              expect(interfaces).toEqual("},{"line_number":581,"context_line":"                ironicBackendMockService.dynamicDriver.enabled_network_interfaces);"}],"source_content_type":"text/javascript","patch_set":7,"id":"9f436f4f_8bb43cf3","line":578,"in_reply_to":"9f436f4f_2f98d772","updated":"2017-08-16 19:07:31.000000000","message":"Oh yeah, will do that","commit_id":"4274783fa1de915614b578a67fc7fde6179109a4"},{"author":{"_account_id":19380,"name":"Peter Piela","email":"ppiela@gmail.com","username":"ppiela"},"change_message_id":"97675b98337d04136241145c81ac791334b84a78","unresolved":false,"context_lines":[{"line_number":574,"context_line":"        it(\u0027getDriverEnabledInterfaces\u0027, function() {"},{"line_number":575,"context_line":"          var driverName \u003d \"ipmi\";"},{"line_number":576,"context_line":"          ironicAPI.getDriverType(driverName).then(function(type) {"},{"line_number":577,"context_line":"            expect(type).toEqual(ironicBackendMockService.dynamicDriver[driverName].type);"},{"line_number":578,"context_line":"          });"},{"line_number":579,"context_line":"          ironicAPI.getDriverHwInterfaceImplementation(driverName,\"network\")"},{"line_number":580,"context_line":"            .then(function(interfaces) {"}],"source_content_type":"text/javascript","patch_set":9,"id":"7f287b81_956b0a1e","line":577,"updated":"2017-09-01 20:13:11.000000000","message":"I would use ironicBackendMockService.getDrivers()[driverName]","commit_id":"1c52037f9da7354976e937dbc5875c0ffe8740cb"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"33aeadeefbc53b12af62789b2db074cb61bf4260","unresolved":false,"context_lines":[{"line_number":574,"context_line":"        it(\u0027getDriverEnabledInterfaces\u0027, function() {"},{"line_number":575,"context_line":"          var driverName \u003d \"ipmi\";"},{"line_number":576,"context_line":"          ironicAPI.getDriverType(driverName).then(function(type) {"},{"line_number":577,"context_line":"            expect(type).toEqual(ironicBackendMockService.dynamicDriver[driverName].type);"},{"line_number":578,"context_line":"          });"},{"line_number":579,"context_line":"          ironicAPI.getDriverHwInterfaceImplementation(driverName,\"network\")"},{"line_number":580,"context_line":"            .then(function(interfaces) {"}],"source_content_type":"text/javascript","patch_set":9,"id":"7f287b81_c0ef51e7","line":577,"in_reply_to":"7f287b81_63431d15","updated":"2017-09-05 17:51:19.000000000","message":"Also, i noticed getDrivers just return the name of drivers and not objects. Hence, i have to still call dynamicDriver later to retrieve the type of that driver. Wondering if you want that here? The steps i see to use getDrivers() here would be 1. get the index of driverName as getDrivers() return array 2. retrieve the name of driver from the index  3. Retrieve the type of that driver by calling dynamicDriver object, is that something you are looking?","commit_id":"1c52037f9da7354976e937dbc5875c0ffe8740cb"},{"author":{"_account_id":19593,"name":"Anup Navare","email":"anup.d.navare@intel.com","username":"anup"},"change_message_id":"4fa00f606afaea982310d409679afa9b71fe9727","unresolved":false,"context_lines":[{"line_number":574,"context_line":"        it(\u0027getDriverEnabledInterfaces\u0027, function() {"},{"line_number":575,"context_line":"          var driverName \u003d \"ipmi\";"},{"line_number":576,"context_line":"          ironicAPI.getDriverType(driverName).then(function(type) {"},{"line_number":577,"context_line":"            expect(type).toEqual(ironicBackendMockService.dynamicDriver[driverName].type);"},{"line_number":578,"context_line":"          });"},{"line_number":579,"context_line":"          ironicAPI.getDriverHwInterfaceImplementation(driverName,\"network\")"},{"line_number":580,"context_line":"            .then(function(interfaces) {"}],"source_content_type":"text/javascript","patch_set":9,"id":"7f287b81_63431d15","line":577,"in_reply_to":"7f287b81_956b0a1e","updated":"2017-09-05 02:12:44.000000000","message":"Sure, I will update that. You think it\u0027s better because we can test getDrivers() along with it, is that so? Or is it a good practice to use it through a function rather than directly using a variable? (again just want to know so that will keep such things in mind doing next time)","commit_id":"1c52037f9da7354976e937dbc5875c0ffe8740cb"}],"package.json":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"122ecfed44bf0544e78d8e8b831ff682c4bf4c10","unresolved":false,"context_lines":[{"line_number":10,"context_line":"  \"license\": \"Apache-2.0\","},{"line_number":11,"context_line":"  \"devDependencies\": {"},{"line_number":12,"context_line":"    \"angular\": \"^1.6.6\","},{"line_number":13,"context_line":"    \"eslint\": \"^1.10.3\","},{"line_number":14,"context_line":"    \"eslint-config-openstack\": \"^1.2.4\","},{"line_number":15,"context_line":"    \"eslint-plugin-angular\": \"^1.0.1\","},{"line_number":16,"context_line":"    \"jasmine-core\": \"^2.8.0\","},{"line_number":17,"context_line":"    \"karma\": \"^1.7.1\","}],"source_content_type":"application/json","patch_set":12,"id":"7f515b1d_cf3eeab6","line":14,"range":{"start_line":13,"start_character":0,"end_line":14,"end_character":40},"updated":"2017-10-17 12:35:07.000000000","message":"Seems like this causes the build to go sideways...","commit_id":"7cca48bb5c74f633c952e39296967ea602cfcbd9"}],"releasenotes/notes/adding-driver-interfaces-while-node-enrollment-7cb82d6753074629.yaml":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"712523327d54bc8cd700f7580facce846cf4c89f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for selecting driver interfaces for dynamic drivers"},{"line_number":5,"context_line":"    while creating nodes. The support for driver interfaces is not compatible"},{"line_number":6,"context_line":"    with classic drivers. This feature is supported with Pike and further"},{"line_number":7,"context_line":"    versions of ironic."}],"source_content_type":"text/x-yaml","patch_set":19,"id":"3f4b6375_6ff3e874","line":6,"range":{"start_line":6,"start_character":66,"end_line":6,"end_character":73},"updated":"2017-10-21 16:22:24.000000000","message":"nit: s/further/later/","commit_id":"b286e2111b78da23ffe3c1d5ac07a57aaa80f389"}]}
