)]}'
{"api-ref/source/parameters.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":552,"context_line":"      Ironic will provide the defaults for the ``uuid`` and ``name`` fields."},{"line_number":553,"context_line":"    * ``network_data`` (optional) - JSON object with networking configuration."},{"line_number":554,"context_line":"    * ``user_data`` (optional) - vendor data. If it is a string, it is written"},{"line_number":555,"context_line":"      directly with UTF-8 encoding. If it is an object or an array, it is"},{"line_number":556,"context_line":"      JSON-encoded first."},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    This parameter is only accepted when setting the state to \"active\" or"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9fdfeff1_e96926f8","line":555,"updated":"2019-03-05 17:47:56.000000000","message":"I\u0027m not totally sure if I understand, but I think we want to describe what the user needs to specify as the value for the configdrive input. The object or array is input in JSON, and then we internally convert it to a dict or array, and then we want to JSON-ify it for the configdrive-building code. Right? So would this suffice:\n\n...vendor data. May be a string (which will be UTF-8 encoded); a JSON object, or a JSON array.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5ed37a14d7d4ca2bda969656a1822623836a767e","unresolved":false,"context_lines":[{"line_number":552,"context_line":"      Ironic will provide the defaults for the ``uuid`` and ``name`` fields."},{"line_number":553,"context_line":"    * ``network_data`` (optional) - JSON object with networking configuration."},{"line_number":554,"context_line":"    * ``user_data`` (optional) - vendor data. If it is a string, it is written"},{"line_number":555,"context_line":"      directly with UTF-8 encoding. If it is an object or an array, it is"},{"line_number":556,"context_line":"      JSON-encoded first."},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"    This parameter is only accepted when setting the state to \"active\" or"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5fc1f717_b03176ef","line":555,"in_reply_to":"9fdfeff1_e96926f8","updated":"2019-03-05 18:02:10.000000000","message":"Done","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"}],"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":617,"context_line":"        :param target: The desired provision state of the node or verb."},{"line_number":618,"context_line":"        :param configdrive: Optional. A gzipped and base64 encoded"},{"line_number":619,"context_line":"            configdrive. Only valid when setting provision state"},{"line_number":620,"context_line":"            to \"active\" or \"rebuild\"."},{"line_number":621,"context_line":"        :param clean_steps: An ordered list of cleaning steps that will be"},{"line_number":622,"context_line":"            performed on the node. A cleaning step is a dictionary with"},{"line_number":623,"context_line":"            required keys \u0027interface\u0027 and \u0027step\u0027, and optional key \u0027args\u0027. If"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_bcd6fa52","line":620,"updated":"2019-03-05 17:47:56.000000000","message":"probably want to update this.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5ed37a14d7d4ca2bda969656a1822623836a767e","unresolved":false,"context_lines":[{"line_number":617,"context_line":"        :param target: The desired provision state of the node or verb."},{"line_number":618,"context_line":"        :param configdrive: Optional. A gzipped and base64 encoded"},{"line_number":619,"context_line":"            configdrive. Only valid when setting provision state"},{"line_number":620,"context_line":"            to \"active\" or \"rebuild\"."},{"line_number":621,"context_line":"        :param clean_steps: An ordered list of cleaning steps that will be"},{"line_number":622,"context_line":"            performed on the node. A cleaning step is a dictionary with"},{"line_number":623,"context_line":"            required keys \u0027interface\u0027 and \u0027step\u0027, and optional key \u0027args\u0027. If"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_7051ce0e","line":620,"in_reply_to":"9fdfeff1_bcd6fa52","updated":"2019-03-05 18:02:10.000000000","message":"Done","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"}],"ironic/conductor/manager.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9dd398a7548c0d286656f0ef67b73c4795c95f2d","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"import collections"},{"line_number":44,"context_line":"import datetime"},{"line_number":45,"context_line":"import json"},{"line_number":46,"context_line":"import tempfile"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"import eventlet"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_5828c831","line":45,"updated":"2019-02-26 23:12:01.000000000","message":"why not the oslo wrapper which does the safe wrapping?","commit_id":"fd431aa170731ad68cc562baa430c48289bc7847"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1a7dd507f48b479d2d82172d5527bf1e3f05404f","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"import collections"},{"line_number":44,"context_line":"import datetime"},{"line_number":45,"context_line":"import json"},{"line_number":46,"context_line":"import tempfile"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"import eventlet"}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_08a2c4ae","line":45,"in_reply_to":"9fdfeff1_5828c831","updated":"2019-02-28 13:27:38.000000000","message":"Done","commit_id":"fd431aa170731ad68cc562baa430c48289bc7847"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9dd398a7548c0d286656f0ef67b73c4795c95f2d","unresolved":false,"context_lines":[{"line_number":3615,"context_line":"    node.save()"},{"line_number":3616,"context_line":""},{"line_number":3617,"context_line":""},{"line_number":3618,"context_line":"def _build_configdrive(node, configdrive):"},{"line_number":3619,"context_line":"    \"\"\"Build a configdrive from provided metadata and user_data."},{"line_number":3620,"context_line":""},{"line_number":3621,"context_line":"    :param node: an Ironic node object."}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_9832b0a6","line":3618,"updated":"2019-02-26 23:12:01.000000000","message":"nit: Can this go into conductor utils instead?","commit_id":"fd431aa170731ad68cc562baa430c48289bc7847"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1a7dd507f48b479d2d82172d5527bf1e3f05404f","unresolved":false,"context_lines":[{"line_number":3615,"context_line":"    node.save()"},{"line_number":3616,"context_line":""},{"line_number":3617,"context_line":""},{"line_number":3618,"context_line":"def _build_configdrive(node, configdrive):"},{"line_number":3619,"context_line":"    \"\"\"Build a configdrive from provided metadata and user_data."},{"line_number":3620,"context_line":""},{"line_number":3621,"context_line":"    :param node: an Ironic node object."}],"source_content_type":"text/x-python","patch_set":5,"id":"9fdfeff1_a8c13882","line":3618,"in_reply_to":"9fdfeff1_9832b0a6","updated":"2019-02-28 13:27:38.000000000","message":"Totally.","commit_id":"fd431aa170731ad68cc562baa430c48289bc7847"}],"ironic/conductor/utils.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":1321,"context_line":""},{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"def build_configdrive(node, configdrive):"},{"line_number":1324,"context_line":"    \"\"\"Build a configdrive from provided metadata and user_data."},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"    :param node: an Ironic node object."},{"line_number":1327,"context_line":"    :param configdrive: A configdrive as a dict with keys ``meta_data`` and"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_1fbb7875","line":1324,"updated":"2019-03-05 17:47:56.000000000","message":"nit s/metadata/meta_data/\n\nAlso, network_data.\n\nAll are optional.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5ed37a14d7d4ca2bda969656a1822623836a767e","unresolved":false,"context_lines":[{"line_number":1321,"context_line":""},{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"def build_configdrive(node, configdrive):"},{"line_number":1324,"context_line":"    \"\"\"Build a configdrive from provided metadata and user_data."},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"    :param node: an Ironic node object."},{"line_number":1327,"context_line":"    :param configdrive: A configdrive as a dict with keys ``meta_data`` and"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_b046564f","line":1324,"in_reply_to":"9fdfeff1_1fbb7875","updated":"2019-03-05 18:02:10.000000000","message":"Done","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"def build_configdrive(node, configdrive):"},{"line_number":1324,"context_line":"    \"\"\"Build a configdrive from provided metadata and user_data."},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"    :param node: an Ironic node object."},{"line_number":1327,"context_line":"    :param configdrive: A configdrive as a dict with keys ``meta_data`` and"},{"line_number":1328,"context_line":"        ``user_data``."}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_8d49c161","line":1325,"updated":"2019-03-05 17:47:56.000000000","message":"wonder if we should mention (you can see in the code), that default metadata uuid \u0026 name are the node\u0027s uuid \u0026 name.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5ed37a14d7d4ca2bda969656a1822623836a767e","unresolved":false,"context_lines":[{"line_number":1322,"context_line":""},{"line_number":1323,"context_line":"def build_configdrive(node, configdrive):"},{"line_number":1324,"context_line":"    \"\"\"Build a configdrive from provided metadata and user_data."},{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"    :param node: an Ironic node object."},{"line_number":1327,"context_line":"    :param configdrive: A configdrive as a dict with keys ``meta_data`` and"},{"line_number":1328,"context_line":"        ``user_data``."}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_509a92c5","line":1325,"in_reply_to":"5fc1f717_8d49c161","updated":"2019-03-05 18:02:10.000000000","message":"Done","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"    :param node: an Ironic node object."},{"line_number":1327,"context_line":"    :param configdrive: A configdrive as a dict with keys ``meta_data`` and"},{"line_number":1328,"context_line":"        ``user_data``."},{"line_number":1329,"context_line":"    :returns: A gzipped and base64 encoded configdrive as a string."},{"line_number":1330,"context_line":"    \"\"\""},{"line_number":1331,"context_line":"    meta_data \u003d configdrive.setdefault(\u0027meta_data\u0027, {})"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_ed3725e3","line":1328,"updated":"2019-03-05 17:47:56.000000000","message":"and/or ``network_data``. All are optional.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5ed37a14d7d4ca2bda969656a1822623836a767e","unresolved":false,"context_lines":[{"line_number":1325,"context_line":""},{"line_number":1326,"context_line":"    :param node: an Ironic node object."},{"line_number":1327,"context_line":"    :param configdrive: A configdrive as a dict with keys ``meta_data`` and"},{"line_number":1328,"context_line":"        ``user_data``."},{"line_number":1329,"context_line":"    :returns: A gzipped and base64 encoded configdrive as a string."},{"line_number":1330,"context_line":"    \"\"\""},{"line_number":1331,"context_line":"    meta_data \u003d configdrive.setdefault(\u0027meta_data\u0027, {})"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_709f8eb4","line":1328,"in_reply_to":"5fc1f717_ed3725e3","updated":"2019-03-05 18:02:10.000000000","message":"Done","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":1341,"context_line":""},{"line_number":1342,"context_line":"    LOG.debug(\u0027Building a configdrive for node %s\u0027, node.uuid)"},{"line_number":1343,"context_line":"    return os_configdrive.build(meta_data, user_data\u003duser_data,"},{"line_number":1344,"context_line":"                                network_data\u003dconfigdrive.get(\u0027network_data\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_1a81464e","line":1344,"updated":"2019-03-05 17:47:56.000000000","message":"if this raises any exceptions, do we want to catch, or let it bubble up?","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"89d11180631c33ef2bb38ab5e7c5463adb572fc8","unresolved":false,"context_lines":[{"line_number":1341,"context_line":""},{"line_number":1342,"context_line":"    LOG.debug(\u0027Building a configdrive for node %s\u0027, node.uuid)"},{"line_number":1343,"context_line":"    return os_configdrive.build(meta_data, user_data\u003duser_data,"},{"line_number":1344,"context_line":"                                network_data\u003dconfigdrive.get(\u0027network_data\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_f0ccde62","line":1344,"in_reply_to":"5fc1f717_30a906df","updated":"2019-03-05 18:25:26.000000000","message":"Ah, I just looked. As long as the generic one spits out a message that makes it somewhat clear that it was due to building the config drive. We can update that later if people complain.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5ed37a14d7d4ca2bda969656a1822623836a767e","unresolved":false,"context_lines":[{"line_number":1341,"context_line":""},{"line_number":1342,"context_line":"    LOG.debug(\u0027Building a configdrive for node %s\u0027, node.uuid)"},{"line_number":1343,"context_line":"    return os_configdrive.build(meta_data, user_data\u003duser_data,"},{"line_number":1344,"context_line":"                                network_data\u003dconfigdrive.get(\u0027network_data\u0027))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_30a906df","line":1344,"in_reply_to":"9fdfeff1_1a81464e","updated":"2019-03-05 18:02:10.000000000","message":"I think the calling code already has a generic try..except, so we should be fine.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"}],"ironic/tests/unit/api/controllers/v1/test_node.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":4187,"context_line":"                            expect_errors\u003dTrue)"},{"line_number":4188,"context_line":"        self.assertEqual(http_client.BAD_REQUEST, ret.status_code)"},{"line_number":4189,"context_line":""},{"line_number":4190,"context_line":"    def test_provision_with_rebuild_configdrive(self):"},{"line_number":4191,"context_line":"        node \u003d self.node"},{"line_number":4192,"context_line":"        node.provision_state \u003d states.ACTIVE"},{"line_number":4193,"context_line":"        node.target_provision_state \u003d states.NOSTATE"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_2d2c4d46","line":4190,"updated":"2019-03-05 17:47:56.000000000","message":"not sure if we want to add a test with rebuild \u0026 configdrive object.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"}],"ironic/tests/unit/api/controllers/v1/test_utils.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":526,"context_line":"        utils.check_allow_configdrive(states.ACTIVE, {\u0027meta_data\u0027: {},"},{"line_number":527,"context_line":"                                                      \u0027network_data\u0027: {},"},{"line_number":528,"context_line":"                                                      \u0027user_data\u0027: {}})"},{"line_number":529,"context_line":"        utils.check_allow_configdrive(states.ACTIVE, {\u0027user_data\u0027: \u0027foo\u0027})"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    @mock.patch.object(pecan, \u0027request\u0027, spec_set\u003d[\u0027version\u0027])"},{"line_number":532,"context_line":"    def test_check_allow_configdrive_as_dict_invalid(self, mock_request):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_cdcee982","line":529,"updated":"2019-03-05 17:47:56.000000000","message":"user_data can be an array so we might want to test that.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5ed37a14d7d4ca2bda969656a1822623836a767e","unresolved":false,"context_lines":[{"line_number":526,"context_line":"        utils.check_allow_configdrive(states.ACTIVE, {\u0027meta_data\u0027: {},"},{"line_number":527,"context_line":"                                                      \u0027network_data\u0027: {},"},{"line_number":528,"context_line":"                                                      \u0027user_data\u0027: {}})"},{"line_number":529,"context_line":"        utils.check_allow_configdrive(states.ACTIVE, {\u0027user_data\u0027: \u0027foo\u0027})"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    @mock.patch.object(pecan, \u0027request\u0027, spec_set\u003d[\u0027version\u0027])"},{"line_number":532,"context_line":"    def test_check_allow_configdrive_as_dict_invalid(self, mock_request):"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_f0aa9ed0","line":529,"in_reply_to":"5fc1f717_cdcee982","updated":"2019-03-05 18:02:10.000000000","message":"Done","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"}],"ironic/tests/unit/conductor/test_manager.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":2097,"context_line":"        mock_cd.assert_called_once_with({\u0027uuid\u0027: self.node.uuid},"},{"line_number":2098,"context_line":"                                        network_data\u003dNone,"},{"line_number":2099,"context_line":"                                        user_data\u003db\u0027{\"user\": \"data\"}\u0027)"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    @mock.patch.object(swift, \u0027SwiftAPI\u0027)"},{"line_number":2102,"context_line":"    @mock.patch(\u0027ironic.drivers.modules.fake.FakeDeploy.prepare\u0027)"},{"line_number":2103,"context_line":"    def test__do_node_deploy_configdrive_swift_error(self, mock_prepare,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_edf5e584","line":2100,"updated":"2019-03-05 17:47:56.000000000","message":"wonder if we should add a test with meta_data, uuid and name specified.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5ed37a14d7d4ca2bda969656a1822623836a767e","unresolved":false,"context_lines":[{"line_number":2097,"context_line":"        mock_cd.assert_called_once_with({\u0027uuid\u0027: self.node.uuid},"},{"line_number":2098,"context_line":"                                        network_data\u003dNone,"},{"line_number":2099,"context_line":"                                        user_data\u003db\u0027{\"user\": \"data\"}\u0027)"},{"line_number":2100,"context_line":""},{"line_number":2101,"context_line":"    @mock.patch.object(swift, \u0027SwiftAPI\u0027)"},{"line_number":2102,"context_line":"    @mock.patch(\u0027ironic.drivers.modules.fake.FakeDeploy.prepare\u0027)"},{"line_number":2103,"context_line":"    def test__do_node_deploy_configdrive_swift_error(self, mock_prepare,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5fc1f717_f0d85e80","line":2100,"in_reply_to":"5fc1f717_edf5e584","updated":"2019-03-05 18:02:10.000000000","message":"Done","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"}],"releasenotes/notes/build-configdrive-5b3b9095824faf4e.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"bd6e1a0dff811f57c781967b6756b9e8f956f73d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for building config drives. Starting with API version 1.56,"},{"line_number":5,"context_line":"    the ``configdrive`` parameter of ``/v1/nodes/\u003cnode\u003e/states/provision`` can"},{"line_number":6,"context_line":"    be a JSON object with optional keys ``meta_data``, ``network_data`` (JSON"},{"line_number":7,"context_line":"    objects) and ``user_data`` (JSON object, array or a string). See `story"},{"line_number":8,"context_line":"    2005083 \u003chttps://storyboard.openstack.org/#!/story/2005083\u003e`_ for details."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9fdfeff1_891bbac8","line":6,"updated":"2019-03-05 17:47:56.000000000","message":"grammatically, the (JSON objects) pertains only to network_data. Maybe add (JSON object) to both meta_data and network_data.\n\nOur API ref should have more info about it?","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"89d11180631c33ef2bb38ab5e7c5463adb572fc8","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for building config drives. Starting with API version 1.56,"},{"line_number":5,"context_line":"    the ``configdrive`` parameter of ``/v1/nodes/\u003cnode\u003e/states/provision`` can"},{"line_number":6,"context_line":"    be a JSON object with optional keys ``meta_data``, ``network_data`` (JSON"},{"line_number":7,"context_line":"    objects) and ``user_data`` (JSON object, array or a string). See `story"},{"line_number":8,"context_line":"    2005083 \u003chttps://storyboard.openstack.org/#!/story/2005083\u003e`_ for details."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5fc1f717_7099ce1d","line":6,"in_reply_to":"5fc1f717_703b0e9c","updated":"2019-03-05 18:25:26.000000000","message":"I added this comment before I looked at the api-ref changes. At the time, I was wondering if the story had more useful info, or if the api-ref had more useful info :) This is fine now. If anything/anyone asks, we could add more documentation in that install guide.","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5ed37a14d7d4ca2bda969656a1822623836a767e","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds support for building config drives. Starting with API version 1.56,"},{"line_number":5,"context_line":"    the ``configdrive`` parameter of ``/v1/nodes/\u003cnode\u003e/states/provision`` can"},{"line_number":6,"context_line":"    be a JSON object with optional keys ``meta_data``, ``network_data`` (JSON"},{"line_number":7,"context_line":"    objects) and ``user_data`` (JSON object, array or a string). See `story"},{"line_number":8,"context_line":"    2005083 \u003chttps://storyboard.openstack.org/#!/story/2005083\u003e`_ for details."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"5fc1f717_703b0e9c","line":6,"in_reply_to":"9fdfeff1_891bbac8","updated":"2019-03-05 18:02:10.000000000","message":"Done.\n\nWhat would you add to api-ref?","commit_id":"699dc352e58ab794fbdb8984c028bd2534060ff4"}],"requirements.txt":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9dd398a7548c0d286656f0ef67b73c4795c95f2d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"psutil\u003e\u003d3.2.2 # BSD"},{"line_number":48,"context_line":"futurist\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":49,"context_line":"tooz\u003e\u003d1.58.0 # Apache-2.0"},{"line_number":50,"context_line":"openstacksdk\u003e\u003d0.22.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"9fdfeff1_b868d487","line":50,"updated":"2019-02-26 23:12:01.000000000","message":"how bad does this make requirements expansion... or do I not want to know?","commit_id":"fd431aa170731ad68cc562baa430c48289bc7847"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1a7dd507f48b479d2d82172d5527bf1e3f05404f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"psutil\u003e\u003d3.2.2 # BSD"},{"line_number":48,"context_line":"futurist\u003e\u003d1.2.0 # Apache-2.0"},{"line_number":49,"context_line":"tooz\u003e\u003d1.58.0 # Apache-2.0"},{"line_number":50,"context_line":"openstacksdk\u003e\u003d0.22.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"9fdfeff1_489bec71","line":50,"in_reply_to":"9fdfeff1_b868d487","updated":"2019-02-28 13:27:38.000000000","message":"openstacksdk is already a requirement, it\u0027s pulled by one of the client libraries. And it\u0027s actually much lighter than any of the client libraries we use, so I\u0027m considering gradually switching to using it instead :)","commit_id":"fd431aa170731ad68cc562baa430c48289bc7847"}]}
