)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"803e50d5800d9949464399a30de42ea1281f850c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Annie Lezil \u003cannie.lezil@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-14 22:43:35 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fixes description not present for vendor passthru methods."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change fixes `description not present` bug for vendor"},{"line_number":10,"context_line":"passthru methods."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7a8ec9b2_9e63271a","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":5},"updated":"2016-09-14 23:05:44.000000000","message":"Add descriptions for vendor passthru methods\n\nThis adds descriptions to the vendor passthru methods. Previously the descriptions were not present.","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"}],"ironic/drivers/modules/agent_base_vendor.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"827dc16081a0e6da41f4c9c46006c97f8acb75fa","unresolved":false,"context_lines":[{"line_number":710,"context_line":""},{"line_number":711,"context_line":"    @METRICS.timer(\u0027BaseAgentVendor.heartbeat\u0027)"},{"line_number":712,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":713,"context_line":"                   description\u003d(\u0027Method for agent to periodically check in.\u0027,"},{"line_number":714,"context_line":"                                \u0027Required arguments: callback_url: agent HTTP\u0027,"},{"line_number":715,"context_line":"                                \u0027 API URL.\u0027))"},{"line_number":716,"context_line":"    @base.passthru([\u0027POST\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_0e9a8263","line":713,"updated":"2016-09-15 01:02:57.000000000","message":"for internationalization purposes, we should wrap these strings with \"_(..)\".  E.g.: https://github.com/openstack/ironic/blob/6c1aa56429f9ce27428b9bf55791903228e24083/ironic/drivers/modules/fake.py#L123","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":18462,"name":"Rahul U Nair","email":"rahulunair@gmail.com","username":"rahulunair"},"change_message_id":"3cbf4d1195a13e976324f10069b548a1892e056d","unresolved":false,"context_lines":[{"line_number":711,"context_line":"    @METRICS.timer(\u0027BaseAgentVendor.heartbeat\u0027)"},{"line_number":712,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":713,"context_line":"                   description\u003d(\u0027Method for agent to periodically check in.\u0027,"},{"line_number":714,"context_line":"                                \u0027Required arguments: callback_url: agent HTTP\u0027,"},{"line_number":715,"context_line":"                                \u0027 API URL.\u0027))"},{"line_number":716,"context_line":"    @base.passthru([\u0027POST\u0027])"},{"line_number":717,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_5ef35f9e","line":714,"range":{"start_line":714,"start_character":53,"end_line":714,"end_character":65},"updated":"2016-09-14 22:55:04.000000000","message":"is it agent_url?","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"827dc16081a0e6da41f4c9c46006c97f8acb75fa","unresolved":false,"context_lines":[{"line_number":711,"context_line":"    @METRICS.timer(\u0027BaseAgentVendor.heartbeat\u0027)"},{"line_number":712,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":713,"context_line":"                   description\u003d(\u0027Method for agent to periodically check in.\u0027,"},{"line_number":714,"context_line":"                                \u0027Required arguments: callback_url: agent HTTP\u0027,"},{"line_number":715,"context_line":"                                \u0027 API URL.\u0027))"},{"line_number":716,"context_line":"    @base.passthru([\u0027POST\u0027])"},{"line_number":717,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_2e9d7e59","line":714,"range":{"start_line":714,"start_character":53,"end_line":714,"end_character":65},"in_reply_to":"7a8ec9b2_5ef35f9e","updated":"2016-09-15 01:02:57.000000000","message":"++","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"827dc16081a0e6da41f4c9c46006c97f8acb75fa","unresolved":false,"context_lines":[{"line_number":712,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":713,"context_line":"                   description\u003d(\u0027Method for agent to periodically check in.\u0027,"},{"line_number":714,"context_line":"                                \u0027Required arguments: callback_url: agent HTTP\u0027,"},{"line_number":715,"context_line":"                                \u0027 API URL.\u0027))"},{"line_number":716,"context_line":"    @base.passthru([\u0027POST\u0027])"},{"line_number":717,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":718,"context_line":"    def heartbeat(self, task, **kwargs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_0ee8c2b3","line":715,"updated":"2016-09-15 01:02:57.000000000","message":"How about \u0027Used by ramdisk agent to check in with the ironic-conductor service. Required argument \"agent_url\": the API URL of the agent, in the form http://\u003cagent_host\u003e:\u003cagent_port\u003e\u0027","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"827dc16081a0e6da41f4c9c46006c97f8acb75fa","unresolved":false,"context_lines":[{"line_number":713,"context_line":"                   description\u003d(\u0027Method for agent to periodically check in.\u0027,"},{"line_number":714,"context_line":"                                \u0027Required arguments: callback_url: agent HTTP\u0027,"},{"line_number":715,"context_line":"                                \u0027 API URL.\u0027))"},{"line_number":716,"context_line":"    @base.passthru([\u0027POST\u0027])"},{"line_number":717,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":718,"context_line":"    def heartbeat(self, task, **kwargs):"},{"line_number":719,"context_line":"        \"\"\"Method for agent to periodically check in."}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_2e02de6f","line":716,"updated":"2016-09-15 01:02:57.000000000","message":"shouldn\u0027t this be deleted?","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"827dc16081a0e6da41f4c9c46006c97f8acb75fa","unresolved":false,"context_lines":[{"line_number":737,"context_line":"        super(BaseAgentVendor, self).heartbeat(task, callback_url)"},{"line_number":738,"context_line":""},{"line_number":739,"context_line":"    @METRICS.timer(\u0027BaseAgentVendor.lookup\u0027)"},{"line_number":740,"context_line":"    @base.driver_passthru([\u0027POST\u0027], async\u003dFalse)"},{"line_number":741,"context_line":"    def lookup(self, context, **kwargs):"},{"line_number":742,"context_line":"        \"\"\"Find a matching node for the agent."},{"line_number":743,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_ee2e36f9","line":740,"updated":"2016-09-15 01:02:57.000000000","message":"What about a description for this one?","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7b22abc988b567237a8a61c77e2d29412fa9b4f5","unresolved":false,"context_lines":[{"line_number":739,"context_line":""},{"line_number":740,"context_line":"    @METRICS.timer(\u0027BaseAgentVendor.lookup\u0027)"},{"line_number":741,"context_line":"    @base.driver_passthru([\u0027POST\u0027], async\u003dFalse,"},{"line_number":742,"context_line":"                          description\u003d_(\"Find a matching node for the agent.\"))"},{"line_number":743,"context_line":"    def lookup(self, context, **kwargs):"},{"line_number":744,"context_line":"        \"\"\"Find a matching node for the agent."},{"line_number":745,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a8ec9b2_e05013d7","line":742,"updated":"2016-09-20 13:36:47.000000000","message":"wow, there are arguments for this, see below. This is going to be a lot of text. I took a quick look and don\u0027t see \u0027version\u0027 used anywhere. Maybe someone else knows.\n\nnode_uuid is an optional argument, the UUID of the matching node\n\ninventory is ... longer description. looks like it is needed.\n\nThis method also returns some information, maybe that should be in the description too.\n\nThis makes me wonder if we should have the details in some wiki page, with a pointer to that here.","commit_id":"0fc5f94644172bd3834233185e5115dd8a2dd617"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                                 \"ironic-conductor service. Required argument:\""},{"line_number":716,"context_line":"                                 \"\u0027agent_url\u0027 - the API URL of the \""},{"line_number":717,"context_line":"                                 \"agent, in the form http://\u003cagent_host\u003e:\""},{"line_number":718,"context_line":"                                 \"\u003cagent_port\u003e\"))"},{"line_number":719,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":720,"context_line":"    def heartbeat(self, task, **kwargs):"},{"line_number":721,"context_line":"        \"\"\"Method for agent to periodically check in."}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_6af3220b","line":718,"updated":"2016-09-22 17:02:13.000000000","message":"missing \u0027.\u0027 at end of this sentence","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":776,"context_line":"                                                      \"cess as it operates on \""},{"line_number":777,"context_line":"                                                      \"the node, and  ``config\""},{"line_number":778,"context_line":"                                                      \"`` key is a json docume\""},{"line_number":779,"context_line":"                                                      \"nt of con\")))"},{"line_number":780,"context_line":"    def lookup(self, context, **kwargs):"},{"line_number":781,"context_line":"        \"\"\"Find a matching node for the agent."},{"line_number":782,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_caf51684","line":779,"updated":"2016-09-22 17:02:13.000000000","message":"textwrap.fill() doesn\u0027t work with \u0027openstack baremetal driver passthru list\u0027 command. and we are moving towards using openstack* command. It doesn\u0027t look good with the \u0027ironic driver-get-vendor-passthru-methods\u0027 command, but I think that is a problem with the client.\n\nSo I don\u0027t think we should be formatting the string at this level.\n\nThinking a bit more about this. I\u0027m not convinced that the description below for kwargs is correct, so it may not be a good idea to put it in the description. (I don\u0027t want to spend time checking that). Also, lookup is/should only be used by the ramdisk agent, so an operator should not be invoking this method. It should be fine (for now anyway) to do something like:\n\nThis should only be called by a ramdisk agent, the first time the agent checks in. It finds the Node associated with the ramdisk and returns the Node object.\n\nYou could add a comment above the decorator if you want, something like \n\n# NOTE(aslezil): keep the description short since it should not be invoked by human beings.","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"df1490796df899826cb9215be8252ad878982a2a","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    @METRICS.timer(\u0027BaseAgentVendor.heartbeat\u0027)"},{"line_number":707,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":708,"context_line":"                   description\u003d_(\"Used by ramdisk agent to check in with the \""},{"line_number":709,"context_line":"                                 \"ironic-conductor service. Required argument:\""},{"line_number":710,"context_line":"                                 \"\u0027agent_url\u0027 - the API URL of the \""},{"line_number":711,"context_line":"                                 \"agent, in the form http://\u003cagent_host\u003e:\""},{"line_number":712,"context_line":"                                 \"\u003cagent_port\u003e.\"))"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a98d1f4_d8e500a9","line":709,"updated":"2016-09-28 18:33:08.000000000","message":"would be good to have a space after \u0027argument:\u0027. (Mentioned by John.)","commit_id":"1a08080e5ad595861081bdee3ee484991a89dbff"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"74d59998a10e5d815dae5dbe375a31b02d50ef6b","unresolved":false,"context_lines":[{"line_number":711,"context_line":"    @METRICS.timer(\u0027BaseAgentVendor.heartbeat\u0027)"},{"line_number":712,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":713,"context_line":"                   description\u003d_(\"Used by ramdisk agent to check in with the \""},{"line_number":714,"context_line":"                                 \"ironic-conductor service. Argument: \""},{"line_number":715,"context_line":"                                 \"\u0027agent_url\u0027 - the API URL of the agent, in \""},{"line_number":716,"context_line":"                                 \"the form http://\u003cagent_host\u003e:\u003cagent_port\u003e.\"))"},{"line_number":717,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_50a4aa06","line":714,"updated":"2016-10-03 14:41:51.000000000","message":"Isn\u0027t this a required argument? Why did you remove \u0027Required\u0027?","commit_id":"ed95b8bde0c0325e62e0e42cfd6322c34ddadfc4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f29ad80fd873e344f5df78cb5bb6b9ee74a00cc8","unresolved":false,"context_lines":[{"line_number":706,"context_line":"    @METRICS.timer(\u0027BaseAgentVendor.heartbeat\u0027)"},{"line_number":707,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":708,"context_line":"                   description\u003d_(\"Used by ramdisk agent to check in with the \""},{"line_number":709,"context_line":"                                 \"ironic-conductor service. Required Argument:\""},{"line_number":710,"context_line":"                                 \" \u0027agent_url\u0027 - the API URL of the agent, in \""},{"line_number":711,"context_line":"                                 \"the form http://\u003cagent_host\u003e:\u003cagent_port\u003e.\"))"},{"line_number":712,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a95cdbc_93ce0259","line":709,"updated":"2016-10-04 19:14:21.000000000","message":"s/Argument/argument/","commit_id":"5e37bcfa9c82aa058074afb37e1e4af0dde778bc"}],"ironic/drivers/modules/drac/vendor_passthru.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"7b22abc988b567237a8a61c77e2d29412fa9b4f5","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @base.passthru([\u0027GET\u0027], async\u003dFalse,"},{"line_number":47,"context_line":"                   description\u003d_(\"Get the BIOS configuration from a node. \""},{"line_number":48,"context_line":"                                 \"Required argument: None.\"))"},{"line_number":49,"context_line":"    def get_bios_config(self, task, **kwargs):"},{"line_number":50,"context_line":"        \"\"\"Get the BIOS configuration."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a8ec9b2_e01573e5","line":48,"updated":"2016-09-20 13:36:47.000000000","message":"how about \u0027Returns a dictionary containing the BIOS settings from a node.\u0027\n\nI don\u0027t feel like we need to mention \u0027Required argument: None\u0027 if there aren\u0027t any.","commit_id":"0fc5f94644172bd3834233185e5115dd8a2dd617"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        return drac_common.parse_driver_info(task.node)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @base.passthru([\u0027GET\u0027], async\u003dFalse,"},{"line_number":47,"context_line":"                   description\u003d_(\"Get the BIOS configuration from a node. \""},{"line_number":48,"context_line":"                                 \"Returns a dictionary containing the BIOS \""},{"line_number":49,"context_line":"                                 \"settings from a node.\"))"},{"line_number":50,"context_line":"    def get_bios_config(self, task, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_8aa5d305","line":47,"updated":"2016-09-22 17:02:13.000000000","message":"I don\u0027t think this first sentence is needed.","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                                 \"Required argument: a dictionary of \""},{"line_number":71,"context_line":"                                 \"{\u0027AttributeName\u0027: \u0027NewValue\u0027}. Returns \""},{"line_number":72,"context_line":"                                 \"a dictionary containing the \""},{"line_number":73,"context_line":"                                 \"``commit_required`` key with a Boolean value\""},{"line_number":74,"context_line":"                                 \" indicating whether commit_bios_config() \""},{"line_number":75,"context_line":"                                 \"needs to be called to make the changes.\"))"},{"line_number":76,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_4a374bb0","line":73,"updated":"2016-09-22 17:02:13.000000000","message":"s/``/\u0027/","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                                 \"argument: \u0027reboot\u0027 - indicates whether a \""},{"line_number":95,"context_line":"                                 \"reboot job should be automatically created \""},{"line_number":96,"context_line":"                                 \"with the config job. Returns a dictionary \""},{"line_number":97,"context_line":"                                 \"containing the ``job_id`` key with the id of\""},{"line_number":98,"context_line":"                                 \" the newly created config job, and the \""},{"line_number":99,"context_line":"                                 \"``reboot_required`` key indicating whether \""},{"line_number":100,"context_line":"                                 \"the node needs to be rebooted to start the \""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_0aa0e39e","line":97,"updated":"2016-09-22 17:02:13.000000000","message":"s/id/ID/","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"df1490796df899826cb9215be8252ad878982a2a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                                 \"Required argument: a dictionary of \""},{"line_number":71,"context_line":"                                 \"{\u0027AttributeName\u0027: \u0027NewValue\u0027}. Returns \""},{"line_number":72,"context_line":"                                 \"a dictionary containing the \u0027commit_required\""},{"line_number":73,"context_line":"                                 \"\u0027 key with a Boolean value indicating \""},{"line_number":74,"context_line":"                                 \"whether commit_bios_config() needs to be \""},{"line_number":75,"context_line":"                                 \"called to make the changes.\"))"},{"line_number":76,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a98d1f4_982538c4","line":73,"updated":"2016-09-28 18:33:08.000000000","message":"could you reformat things so that the \u0027 is with \u0027commit_required? Otherwise it is yucky to read.","commit_id":"1a08080e5ad595861081bdee3ee484991a89dbff"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"df1490796df899826cb9215be8252ad878982a2a","unresolved":false,"context_lines":[{"line_number":94,"context_line":"                                 \"argument: \u0027reboot\u0027 - indicates whether a \""},{"line_number":95,"context_line":"                                 \"reboot job should be automatically created \""},{"line_number":96,"context_line":"                                 \"with the config job. Returns a dictionary \""},{"line_number":97,"context_line":"                                 \"containing the ``job_id`` key with the id of\""},{"line_number":98,"context_line":"                                 \" the newly created config job, and the \""},{"line_number":99,"context_line":"                                 \"``reboot_required`` key indicating whether \""},{"line_number":100,"context_line":"                                 \"the node needs to be rebooted to start the \""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a98d1f4_4b091c2c","line":97,"updated":"2016-09-28 18:33:08.000000000","message":"s/id of/ID of/","commit_id":"1a08080e5ad595861081bdee3ee484991a89dbff"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f29ad80fd873e344f5df78cb5bb6b9ee74a00cc8","unresolved":false,"context_lines":[{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @base.passthru([\u0027POST\u0027], async\u003dFalse,"},{"line_number":92,"context_line":"                   description\u003d_(\"Commit a BIOS configuration job submitted \""},{"line_number":93,"context_line":"                                 \"through set_bios_config(). Reqiured \""},{"line_number":94,"context_line":"                                 \"Argument: \u0027reboot\u0027 - indicates whether a \""},{"line_number":95,"context_line":"                                 \"reboot job should be automatically created \""},{"line_number":96,"context_line":"                                 \"with the config job. Returns a dictionary \""}],"source_content_type":"text/x-python","patch_set":10,"id":"1a95cdbc_131752a4","line":93,"updated":"2016-10-04 19:14:21.000000000","message":"s/Reqiured/Required/","commit_id":"5e37bcfa9c82aa058074afb37e1e4af0dde778bc"}],"ironic/drivers/modules/ilo/vendor.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":114,"context_line":"                   description\u003d_(\"An ISO image href (a Glance UUID or an \""},{"line_number":115,"context_line":"                                 \"HTTP(S) URL) is attached as virtual \""},{"line_number":116,"context_line":"                                 \"media and then reboots the node. \""},{"line_number":117,"context_line":"                                 \"Required argument: \u0027boot_iso_href\u0027 - href of\""},{"line_number":118,"context_line":"                                 \" the image to be booted. This can be a \""},{"line_number":119,"context_line":"                                 \"Glance UUID or an HTTP(S) URL.\"))"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_2a911ff1","line":116,"updated":"2016-09-22 17:02:13.000000000","message":"This can be shortened to \u0027Attach an ISO image and reboot the node.\u0027","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"}],"ironic/drivers/modules/ipminative.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":659,"context_line":""},{"line_number":660,"context_line":"    @METRICS.timer(\u0027VendorPassthru.send_raw\u0027)"},{"line_number":661,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":662,"context_line":"                   description\u003d_(\"Used by IPMITool driver to send raw bytes \""},{"line_number":663,"context_line":"                                 \"to the BMC. Required argument: \u0027raw_bytes\u0027 \""},{"line_number":664,"context_line":"                                 \"- A string of raw bytes.\"))"},{"line_number":665,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_0a07031d","line":662,"updated":"2016-09-22 17:02:13.000000000","message":"this is actually the ipminative driver, not the ipmitool driver.\n\nhow about \u0027Send raw bytes to the BMC.\u0027","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":661,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":662,"context_line":"                   description\u003d_(\"Used by IPMITool driver to send raw bytes \""},{"line_number":663,"context_line":"                                 \"to the BMC. Required argument: \u0027raw_bytes\u0027 \""},{"line_number":664,"context_line":"                                 \"- A string of raw bytes.\"))"},{"line_number":665,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":666,"context_line":"    def send_raw(self, task, http_method, raw_bytes):"},{"line_number":667,"context_line":"        \"\"\"Send raw bytes to the BMC. Bytes should be a string of bytes."}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_55fff000","line":664,"updated":"2016-09-22 17:02:13.000000000","message":"r/A/a/\n\nan eg might be useful, s/bytes/bytes (e.g. \u00270x00 0x01\u0027)/","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":679,"context_line":""},{"line_number":680,"context_line":"    @METRICS.timer(\u0027VendorPassthru.bmc_reset\u0027)"},{"line_number":681,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":682,"context_line":"                   description\u003d_(\"Reset BMC with IPMI command. \""},{"line_number":683,"context_line":"                                 \"Required argument: \u0027warm\u0027 (Boolean) for \""},{"line_number":684,"context_line":"                                 \"warm (True) or cold (False) reset.\"))"},{"line_number":685,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_75a06cf5","line":682,"updated":"2016-09-22 17:02:13.000000000","message":"\u0027Reset the BMC.\u0027 is enough.","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"df1490796df899826cb9215be8252ad878982a2a","unresolved":false,"context_lines":[{"line_number":660,"context_line":"    @METRICS.timer(\u0027VendorPassthru.send_raw\u0027)"},{"line_number":661,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":662,"context_line":"                   description\u003d_(\"Send raw bytes to the BMC. Required argument\""},{"line_number":663,"context_line":"                                 \": \u0027raw_bytes\u0027 - a string of raw bytes (e.g. \""},{"line_number":664,"context_line":"                                 \"\u00270x00 0x01\u0027).\"))"},{"line_number":665,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":666,"context_line":"    def send_raw(self, task, http_method, raw_bytes):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a98d1f4_eb48285e","line":663,"updated":"2016-09-28 18:33:08.000000000","message":"again, please put the punctuation \u0027:\u0027 next to the above \u0027argument\u0027.","commit_id":"1a08080e5ad595861081bdee3ee484991a89dbff"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"df1490796df899826cb9215be8252ad878982a2a","unresolved":false,"context_lines":[{"line_number":679,"context_line":""},{"line_number":680,"context_line":"    @METRICS.timer(\u0027VendorPassthru.bmc_reset\u0027)"},{"line_number":681,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":682,"context_line":"                   description\u003d_(\"Reset the  BMC. Required argument: \u0027warm\u0027 \""},{"line_number":683,"context_line":"                                 \"(Boolean) for warm (True) or cold (False) \""},{"line_number":684,"context_line":"                                 \"reset.\"))"},{"line_number":685,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a98d1f4_8b6884bc","line":682,"updated":"2016-09-28 18:33:08.000000000","message":"looks like you have two spaces before \u0027BMC\u0027.","commit_id":"1a08080e5ad595861081bdee3ee484991a89dbff"}],"ironic/drivers/modules/ipmitool.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"803e50d5800d9949464399a30de42ea1281f850c","unresolved":false,"context_lines":[{"line_number":439,"context_line":"                                if x in six.text_type(e)]"},{"line_number":440,"context_line":"                    if ((time.time() \u003e end_time) or"},{"line_number":441,"context_line":"                        (num_tries \u003d\u003d 0) or"},{"line_number":442,"context_line":"                            not err_list):"},{"line_number":443,"context_line":"                        LOG.error(_LE(\u0027IPMI Error while attempting \"%(cmd)s\"\u0027"},{"line_number":444,"context_line":"                                      \u0027for node %(node)s. Error: %(error)s\u0027), {"},{"line_number":445,"context_line":"                                  \u0027node\u0027: driver_info[\u0027uuid\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_fe70abde","line":442,"updated":"2016-09-14 23:05:44.000000000","message":"Why is this changed?","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"803e50d5800d9949464399a30de42ea1281f850c","unresolved":false,"context_lines":[{"line_number":681,"context_line":"    except (exception.PasswordFileFailedToCreate,"},{"line_number":682,"context_line":"            processutils.ProcessExecutionError) as e:"},{"line_number":683,"context_line":"        LOG.exception(_LE(\u0027IPMI \"raw bytes\" failed for node %(node_id)s \u0027"},{"line_number":684,"context_line":"                          \u0027with error: %(error)s.\u0027),"},{"line_number":685,"context_line":"                      {\u0027node_id\u0027: node_uuid, \u0027error\u0027: e})"},{"line_number":686,"context_line":"        raise exception.IPMIFailure(cmd\u003dcmd)"},{"line_number":687,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_3e73f3e8","line":684,"updated":"2016-09-14 23:05:44.000000000","message":"Why is this changed?","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"803e50d5800d9949464399a30de42ea1281f850c","unresolved":false,"context_lines":[{"line_number":712,"context_line":"    except (exception.PasswordFileFailedToCreate,"},{"line_number":713,"context_line":"            processutils.ProcessExecutionError) as e:"},{"line_number":714,"context_line":"        LOG.exception(_LE(\u0027IPMI \"sdr dump\" failed for node %(node_id)s \u0027"},{"line_number":715,"context_line":"                          \u0027with error: %(error)s.\u0027),"},{"line_number":716,"context_line":"                      {\u0027node_id\u0027: node_uuid, \u0027error\u0027: e})"},{"line_number":717,"context_line":"        raise exception.IPMIFailure(cmd\u003dcmd)"},{"line_number":718,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_5e827f95","line":715,"updated":"2016-09-14 23:05:44.000000000","message":"Why is this changed?","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"827dc16081a0e6da41f4c9c46006c97f8acb75fa","unresolved":false,"context_lines":[{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    @METRICS.timer(\u0027VendorPassthru.send_raw\u0027)"},{"line_number":1054,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":1055,"context_line":"                   description\u003d(\u0027Send raw bytes to the BMC.\u0027,"},{"line_number":1056,"context_line":"                                \u0027Required arguments: raw_bytes: A string \u0027,"},{"line_number":1057,"context_line":"                                \u0027of raw bytes.\u0027))"},{"line_number":1058,"context_line":"    @base.passthru([\u0027POST\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_2e101ea8","line":1055,"updated":"2016-09-15 01:02:57.000000000","message":"Missing a blank space after \u0027BMC.\u0027","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"827dc16081a0e6da41f4c9c46006c97f8acb75fa","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"                   description\u003d(\u0027Send raw bytes to the BMC.\u0027,"},{"line_number":1056,"context_line":"                                \u0027Required arguments: raw_bytes: A string \u0027,"},{"line_number":1057,"context_line":"                                \u0027of raw bytes.\u0027))"},{"line_number":1058,"context_line":"    @base.passthru([\u0027POST\u0027])"},{"line_number":1059,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":1060,"context_line":"    def send_raw(self, task, http_method, raw_bytes):"},{"line_number":1061,"context_line":"        \"\"\"Send raw bytes to the BMC. Bytes should be a string of bytes."}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_2e39fe41","line":1058,"updated":"2016-09-15 01:02:57.000000000","message":"please remove this","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"827dc16081a0e6da41f4c9c46006c97f8acb75fa","unresolved":false,"context_lines":[{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":"    @METRICS.timer(\u0027VendorPassthru.bmc_reset\u0027)"},{"line_number":1074,"context_line":"    @base.passthru("},{"line_number":1075,"context_line":"        [\u0027POST\u0027], description\u003d(\u0027Reset BMC with IPMI command\u0027,"},{"line_number":1076,"context_line":"                               \u0027Required parameters: warm: \u0027,"},{"line_number":1077,"context_line":"                               \u0027boolean parameter to decide on \u0027,"},{"line_number":1078,"context_line":"                               \u0027warm or cold reset.\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_2e5e5e76","line":1075,"updated":"2016-09-15 01:02:57.000000000","message":"missing blank space after \u0027command\u0027","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"827dc16081a0e6da41f4c9c46006c97f8acb75fa","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"    @base.passthru("},{"line_number":1075,"context_line":"        [\u0027POST\u0027], description\u003d(\u0027Reset BMC with IPMI command\u0027,"},{"line_number":1076,"context_line":"                               \u0027Required parameters: warm: \u0027,"},{"line_number":1077,"context_line":"                               \u0027boolean parameter to decide on \u0027,"},{"line_number":1078,"context_line":"                               \u0027warm or cold reset.\u0027))"},{"line_number":1079,"context_line":"    @base.passthru([\u0027POST\u0027])"},{"line_number":1080,"context_line":"    @task_manager.require_exclusive_lock"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_2ebade6e","line":1077,"updated":"2016-09-15 01:02:57.000000000","message":"s/boolean parameter/Boolean argument/\n\nHow about \"Required parameter: \u0027warm\u0027 - (Boolean). for warm (True) or cold (False) reset.\"","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"803e50d5800d9949464399a30de42ea1281f850c","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"        except (exception.PasswordFileFailedToCreate,"},{"line_number":1110,"context_line":"                processutils.ProcessExecutionError) as e:"},{"line_number":1111,"context_line":"            LOG.exception(_LE(\u0027IPMI \"bmc reset\" failed for node %(node_id)s \u0027"},{"line_number":1112,"context_line":"                              \u0027with error: %(error)s.\u0027),"},{"line_number":1113,"context_line":"                          {\u0027node_id\u0027: node_uuid, \u0027error\u0027: e})"},{"line_number":1114,"context_line":"            raise exception.IPMIFailure(cmd\u003dcmd)"},{"line_number":1115,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8ec9b2_be4d439b","line":1112,"updated":"2016-09-14 23:05:44.000000000","message":"Why is this changed?","commit_id":"7abcdd83c270be8271a512c18ed917eb6eb62000"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":1053,"context_line":"    @METRICS.timer(\u0027VendorPassthru.send_raw\u0027)"},{"line_number":1054,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":1055,"context_line":"                   description\u003d_(\"Used by IPMITool driver to send raw bytes \""},{"line_number":1056,"context_line":"                                 \"to the BMC. Required argument: \u0027raw_bytes\u0027 -\""},{"line_number":1057,"context_line":"                                 \"A string of raw bytes.\"))"},{"line_number":1058,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":1059,"context_line":"    def send_raw(self, task, http_method, raw_bytes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_d520604c","line":1056,"updated":"2016-09-22 17:02:13.000000000","message":"\u0027Send raw bytes to the BMC.\u0027 is enough.","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":1054,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":1055,"context_line":"                   description\u003d_(\"Used by IPMITool driver to send raw bytes \""},{"line_number":1056,"context_line":"                                 \"to the BMC. Required argument: \u0027raw_bytes\u0027 -\""},{"line_number":1057,"context_line":"                                 \"A string of raw bytes.\"))"},{"line_number":1058,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":1059,"context_line":"    def send_raw(self, task, http_method, raw_bytes):"},{"line_number":1060,"context_line":"        \"\"\"Send raw bytes to the BMC. Bytes should be a string of bytes."}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_b5b914ec","line":1057,"updated":"2016-09-22 17:02:13.000000000","message":"missing a space before \u0027A\u0027.\n\nalso s/A/a/\nand maybe add an example (see comment in ipminative.py)","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":1073,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":1074,"context_line":"                   description\u003d_(\"Reset BMC with IPMI command. Required \""},{"line_number":1075,"context_line":"                                 \"argument: \u0027warm\u0027 (Boolean) - for warm (True)\""},{"line_number":1076,"context_line":"                                 \" or cold (False) reset.\"))"},{"line_number":1077,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":1078,"context_line":"    def bmc_reset(self, task, http_method, warm\u003dTrue):"},{"line_number":1079,"context_line":"        \"\"\"Reset BMC with IPMI command \u0027bmc reset (warm|cold)\u0027."}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_f579dc30","line":1076,"updated":"2016-09-22 17:02:13.000000000","message":"should be similar to whatever we do in ipminative.py","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"df1490796df899826cb9215be8252ad878982a2a","unresolved":false,"context_lines":[{"line_number":1044,"context_line":"    @METRICS.timer(\u0027VendorPassthru.send_raw\u0027)"},{"line_number":1045,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":1046,"context_line":"                   description\u003d_(\"Send raw bytes to the BMC. Required argument\""},{"line_number":1047,"context_line":"                                 \": \u0027raw_bytes\u0027 - a string of raw bytes (e.g. \""},{"line_number":1048,"context_line":"                                 \"\u00270x00 0x01\u0027).\"))"},{"line_number":1049,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":1050,"context_line":"    def send_raw(self, task, http_method, raw_bytes):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a98d1f4_eb5f480c","line":1047,"updated":"2016-09-28 18:33:08.000000000","message":"ditto","commit_id":"1a08080e5ad595861081bdee3ee484991a89dbff"}],"ironic/drivers/modules/seamicro.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"df032b1e0f0fcbbc5f5a21ae70610a4c678e0128","unresolved":false,"context_lines":[{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":438,"context_line":"                   description\u003d_(\"Sets an untagged vlan id for NIC 0 of \""},{"line_number":439,"context_line":"                                 \"node.\\nRequired argument:\u0027vlan_id\u0027 - id of \""},{"line_number":440,"context_line":"                                 \"untagged vlan for NIC 0 of node\"))"},{"line_number":441,"context_line":"    def set_node_vlan_id(self, task, **kwargs):"},{"line_number":442,"context_line":"        \"\"\"Sets an untagged vlan id for NIC 0 of node."}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8ec9b2_6cbc87bb","line":439,"updated":"2016-09-16 17:40:05.000000000","message":"What happens if don\u0027t use \\n ? If it isn\u0027t needed I would prefer not to use it here and other places.\n\nIf \\n is required. Maybe should use the textwrap.wrap() function?\n\nhttps://docs.python.org/2/library/textwrap.html","commit_id":"8add785dc98c307a1a728595a06578274c733877"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"a203e7b0dbc3be95430b32b37a4f11fe36d1cf36","unresolved":false,"context_lines":[{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":438,"context_line":"                   description\u003d_(\"Sets an untagged vlan id for NIC 0 of \""},{"line_number":439,"context_line":"                                 \"node.\\nRequired argument:\u0027vlan_id\u0027 - id of \""},{"line_number":440,"context_line":"                                 \"untagged vlan for NIC 0 of node\"))"},{"line_number":441,"context_line":"    def set_node_vlan_id(self, task, **kwargs):"},{"line_number":442,"context_line":"        \"\"\"Sets an untagged vlan id for NIC 0 of node."}],"source_content_type":"text/x-python","patch_set":2,"id":"7a8ec9b2_5e648ae4","line":439,"in_reply_to":"7a8ec9b2_6cbc87bb","updated":"2016-09-19 14:45:54.000000000","message":"I\u0027m not convinced that we should be formatting the string in any way except for having \u0027sentences\u0027. I would think that whatever is used to *display* the information to the user, will/should format it. Eg, if openstack client command is being used, I think the openstackclient code will format the tables/strings that are returned.","commit_id":"8add785dc98c307a1a728595a06578274c733877"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":435,"context_line":"        _parse_driver_info(task.node)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":438,"context_line":"                   description\u003d_(\"Sets an untagged vlan id for NIC 0 of \""},{"line_number":439,"context_line":"                                 \"node. Required argument: \u0027vlan_id\u0027 - id of \""},{"line_number":440,"context_line":"                                 \"untagged vlan for NIC 0 of node.\"))"},{"line_number":441,"context_line":"    def set_node_vlan_id(self, task, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_d5ca204f","line":438,"updated":"2016-09-22 17:02:13.000000000","message":"s/Sets/Set/ to be consistent with the other descriptions.\n\ns/vlan id/VLAN ID/","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":436,"context_line":""},{"line_number":437,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":438,"context_line":"                   description\u003d_(\"Sets an untagged vlan id for NIC 0 of \""},{"line_number":439,"context_line":"                                 \"node. Required argument: \u0027vlan_id\u0027 - id of \""},{"line_number":440,"context_line":"                                 \"untagged vlan for NIC 0 of node.\"))"},{"line_number":441,"context_line":"    def set_node_vlan_id(self, task, **kwargs):"},{"line_number":442,"context_line":"        \"\"\"Sets an untagged vlan id for NIC 0 of node."}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_552b70eb","line":439,"updated":"2016-09-22 17:02:13.000000000","message":"s/id of/ID of/","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":437,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":438,"context_line":"                   description\u003d_(\"Sets an untagged vlan id for NIC 0 of \""},{"line_number":439,"context_line":"                                 \"node. Required argument: \u0027vlan_id\u0027 - id of \""},{"line_number":440,"context_line":"                                 \"untagged vlan for NIC 0 of node.\"))"},{"line_number":441,"context_line":"    def set_node_vlan_id(self, task, **kwargs):"},{"line_number":442,"context_line":"        \"\"\"Sets an untagged vlan id for NIC 0 of node."},{"line_number":443,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_d502203e","line":440,"updated":"2016-09-22 17:02:13.000000000","message":"I think it should be enough to have \u0027ID of untagged VLAN\u0027. The first sentence indicates what is being set.","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":470,"context_line":"                   description\u003d_(\"Attach volume from SeaMicro storage pools \""},{"line_number":471,"context_line":"                                 \"for ironic to node. Required argument: \""},{"line_number":472,"context_line":"                                 \"\u0027volume_id\u0027 - id of pre-provisioned volume \""},{"line_number":473,"context_line":"                                 \"that is to be attached. \u0027volume_size\u0027 - \""},{"line_number":474,"context_line":"                                 \"size of new volume to be created and \""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_b5bbd471","line":471,"updated":"2016-09-22 17:02:13.000000000","message":"s/for ironic//","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":472,"context_line":"                                 \"\u0027volume_id\u0027 - id of pre-provisioned volume \""},{"line_number":473,"context_line":"                                 \"that is to be attached. \u0027volume_size\u0027 - \""},{"line_number":474,"context_line":"                                 \"size of new volume to be created and \""},{"line_number":475,"context_line":"                                 \"attached as root volume of node. Note: \""},{"line_number":476,"context_line":"                                 \"If \u0027volume_id\u0027 not given, Creates volume in \""},{"line_number":477,"context_line":"                                 \"SeaMicro storage pool and attach to node.\"))"},{"line_number":478,"context_line":"    def attach_volume(self, task, **kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_f509dc32","line":475,"updated":"2016-09-22 17:02:13.000000000","message":"\u0027size of new volume to be created\u0027 should be enough.","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"0758ed50cadb410b76985b744185a176de862d1f","unresolved":false,"context_lines":[{"line_number":474,"context_line":"                                 \"size of new volume to be created and \""},{"line_number":475,"context_line":"                                 \"attached as root volume of node. Note: \""},{"line_number":476,"context_line":"                                 \"If \u0027volume_id\u0027 not given, Creates volume in \""},{"line_number":477,"context_line":"                                 \"SeaMicro storage pool and attach to node.\"))"},{"line_number":478,"context_line":"    def attach_volume(self, task, **kwargs):"},{"line_number":479,"context_line":"        \"\"\"Attach a volume to a node."},{"line_number":480,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a8bc5a2_b0e20202","line":477,"updated":"2016-09-22 17:02:13.000000000","message":"Instead of this Note, I\u0027d change the description of \u0027volume_id\u0027.\nMaybe\n\nAttach volume to node. Arguments: 1. \u0027volume_id\u0027 - ID of pre-provisioned volume. This is optional. If not specified, a volume is created in SeaMicro storage pool. 2. \u0027volume_size\u0027 - size of new volume (if volume_id is not specified)\u0027.","commit_id":"dab3e1fe28db7271c0814ac30755b60159c75afc"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"df1490796df899826cb9215be8252ad878982a2a","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        node.save()"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"    @base.passthru([\u0027POST\u0027],"},{"line_number":470,"context_line":"                   description\u003d_(\"Attach volume to node. Required arguments: \""},{"line_number":471,"context_line":"                                 \"1. \u0027volume_id\u0027 - ID of pre-provisioned \""},{"line_number":472,"context_line":"                                 \"volume. This is optional. If not specified, \""},{"line_number":473,"context_line":"                                 \"a volume is created in SeaMicro storage pool\""}],"source_content_type":"text/x-python","patch_set":6,"id":"3a98d1f4_eb8d887c","line":470,"updated":"2016-09-28 18:33:08.000000000","message":"s/Required a/A/","commit_id":"1a08080e5ad595861081bdee3ee484991a89dbff"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"df1490796df899826cb9215be8252ad878982a2a","unresolved":false,"context_lines":[{"line_number":471,"context_line":"                                 \"1. \u0027volume_id\u0027 - ID of pre-provisioned \""},{"line_number":472,"context_line":"                                 \"volume. This is optional. If not specified, \""},{"line_number":473,"context_line":"                                 \"a volume is created in SeaMicro storage pool\""},{"line_number":474,"context_line":"                                 \". 2. \u0027volume_size\u0027 - size of new volume (if \""},{"line_number":475,"context_line":"                                 \"volume_id is not specified).\"))"},{"line_number":476,"context_line":"    def attach_volume(self, task, **kwargs):"},{"line_number":477,"context_line":"        \"\"\"Attach a volume to a node."}],"source_content_type":"text/x-python","patch_set":6,"id":"3a98d1f4_6bf898e6","line":474,"updated":"2016-09-28 18:33:08.000000000","message":"period should be next to \u0027pool\u0027 in line above.","commit_id":"1a08080e5ad595861081bdee3ee484991a89dbff"}]}
