)]}'
{"api-ref/source/baremetal-api-v1-nodes.inc":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3ddf8afa8d60aed61973404d3cb5246e15acf0dd","unresolved":false,"context_lines":[{"line_number":93,"context_line":"  Introduced the ``conductor_group`` field."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":".. versionadded: 1.48"},{"line_number":96,"context_line":"  Introdcued the ``owner`` field."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Normal response codes: 201"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":1,"id":"3f79a3b5_5ebb90dc","line":96,"updated":"2018-11-27 14:56:39.000000000","message":"\"Introduced\". Also it\u0027s going to conflict with the protected instances feature..","commit_id":"6d6043fcc4c67bd3c9f11d6fc6cc8513c029867b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9d76fee084694f7301da6a72b345f097f2bae7f8","unresolved":false,"context_lines":[{"line_number":239,"context_line":".. versionadded:: 1.46"},{"line_number":240,"context_line":"  Introduced the ``conductor_group`` request parameter, to allow filtering the"},{"line_number":241,"context_line":"  list of returned nodes by conductor group."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Normal response codes: 200"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Error codes: 400,403,406"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"3f79a3b5_c95dd3eb","line":242,"updated":"2018-12-07 13:42:31.000000000","message":".. versionadded here","commit_id":"d5d8bcd50a1b33d931f67ac06e11fb20cb543cfd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4288e8aef17704546d22b00b544f58efaf1060ea","unresolved":false,"context_lines":[{"line_number":239,"context_line":".. versionadded:: 1.46"},{"line_number":240,"context_line":"  Introduced the ``conductor_group`` request parameter, to allow filtering the"},{"line_number":241,"context_line":"  list of returned nodes by conductor group."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Normal response codes: 200"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Error codes: 400,403,406"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"3f79a3b5_a659925c","line":242,"in_reply_to":"3f79a3b5_c95dd3eb","updated":"2018-12-08 17:18:40.000000000","message":"Done","commit_id":"d5d8bcd50a1b33d931f67ac06e11fb20cb543cfd"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9d76fee084694f7301da6a72b345f097f2bae7f8","unresolved":false,"context_lines":[{"line_number":312,"context_line":""},{"line_number":313,"context_line":".. versionadded:: 1.48"},{"line_number":314,"context_line":"  Introduced the ``protected`` and ``protected_reason`` fields."},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Normal response codes: 200"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"Error codes: 400,403,406"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"3f79a3b5_694eff35","line":315,"updated":"2018-12-07 13:42:31.000000000","message":"ditto","commit_id":"d5d8bcd50a1b33d931f67ac06e11fb20cb543cfd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4288e8aef17704546d22b00b544f58efaf1060ea","unresolved":false,"context_lines":[{"line_number":312,"context_line":""},{"line_number":313,"context_line":".. versionadded:: 1.48"},{"line_number":314,"context_line":"  Introduced the ``protected`` and ``protected_reason`` fields."},{"line_number":315,"context_line":""},{"line_number":316,"context_line":"Normal response codes: 200"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"Error codes: 400,403,406"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"3f79a3b5_c654ce25","line":315,"in_reply_to":"3f79a3b5_694eff35","updated":"2018-12-08 17:18:40.000000000","message":"Done","commit_id":"d5d8bcd50a1b33d931f67ac06e11fb20cb543cfd"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"9d76fee084694f7301da6a72b345f097f2bae7f8","unresolved":false,"context_lines":[{"line_number":333,"context_line":"   - limit: limit"},{"line_number":334,"context_line":"   - marker: marker"},{"line_number":335,"context_line":"   - sort_dir: sort_dir"},{"line_number":336,"context_line":"   - sort_key: sort_key"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"Response"},{"line_number":339,"context_line":"--------"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"3f79a3b5_89535bdd","line":336,"updated":"2018-12-07 13:42:31.000000000","message":"missing owner","commit_id":"d5d8bcd50a1b33d931f67ac06e11fb20cb543cfd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4288e8aef17704546d22b00b544f58efaf1060ea","unresolved":false,"context_lines":[{"line_number":333,"context_line":"   - limit: limit"},{"line_number":334,"context_line":"   - marker: marker"},{"line_number":335,"context_line":"   - sort_dir: sort_dir"},{"line_number":336,"context_line":"   - sort_key: sort_key"},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"Response"},{"line_number":339,"context_line":"--------"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"3f79a3b5_060de63d","line":336,"in_reply_to":"3f79a3b5_89535bdd","updated":"2018-12-08 17:18:40.000000000","message":"Done","commit_id":"d5d8bcd50a1b33d931f67ac06e11fb20cb543cfd"}],"api-ref/source/parameters.yaml":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"506e8fee324dddfa64fd9e50ddcd6142be1645e2","unresolved":false,"context_lines":[{"line_number":858,"context_line":"  type: array"},{"line_number":859,"context_line":"owner:"},{"line_number":860,"context_line":"  description: |"},{"line_number":861,"context_line":"    A human readable string or UUID of the tenant who owns the baremetal node."},{"line_number":862,"context_line":"  in: body"},{"line_number":863,"context_line":"  required: false"},{"line_number":864,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3f79a3b5_ffcc7360","line":861,"range":{"start_line":861,"start_character":4,"end_line":861,"end_character":35},"updated":"2018-12-03 09:22:42.000000000","message":"We didn\u0027t regex the owner, and in fact I guess we can\u0027t check if the string is \"human readable\" :)\nThe point is, maybe we just express it is a string which represents an owner (no matter what is contains).","commit_id":"c4eb4d987449c4b066aa025a424d669d2a887378"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3bdd2ec354069c67109af95e88e702a5b52c0c6d","unresolved":false,"context_lines":[{"line_number":858,"context_line":"  type: array"},{"line_number":859,"context_line":"owner:"},{"line_number":860,"context_line":"  description: |"},{"line_number":861,"context_line":"    A human readable string or UUID of the tenant who owns the baremetal node."},{"line_number":862,"context_line":"  in: body"},{"line_number":863,"context_line":"  required: false"},{"line_number":864,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3f79a3b5_751d9776","line":861,"range":{"start_line":861,"start_character":4,"end_line":861,"end_character":35},"in_reply_to":"3f79a3b5_ffcc7360","updated":"2018-12-05 20:45:07.000000000","message":"You make an extremely valid point! I\u0027ll change in my next revision.","commit_id":"c4eb4d987449c4b066aa025a424d669d2a887378"}],"ironic/api/controllers/v1/node.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"506e8fee324dddfa64fd9e50ddcd6142be1645e2","unresolved":false,"context_lines":[{"line_number":1614,"context_line":"                \u0027resource_class\u0027: resource_class,"},{"line_number":1615,"context_line":"                \u0027fault\u0027: fault,"},{"line_number":1616,"context_line":"                \u0027conductor_group\u0027: conductor_group,"},{"line_number":1617,"context_line":"                \u0027owner\u0027: owner,"},{"line_number":1618,"context_line":"            }"},{"line_number":1619,"context_line":"            filters \u003d {}"},{"line_number":1620,"context_line":"            for key, value in possible_filters.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_dfc0974e","line":1617,"range":{"start_line":1617,"start_character":16,"end_line":1617,"end_character":31},"updated":"2018-12-03 09:22:42.000000000","message":"I believe we\u0027ll need to add some code in the db api if it is used as a filter.\n\nhttps://github.com/openstack/ironic/blob/master/ironic/db/sqlalchemy/api.py#L222-L227\n\nSince CI has passed, I guess we are also missing a test for filtering nodes by owner :)","commit_id":"c4eb4d987449c4b066aa025a424d669d2a887378"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3bdd2ec354069c67109af95e88e702a5b52c0c6d","unresolved":false,"context_lines":[{"line_number":1614,"context_line":"                \u0027resource_class\u0027: resource_class,"},{"line_number":1615,"context_line":"                \u0027fault\u0027: fault,"},{"line_number":1616,"context_line":"                \u0027conductor_group\u0027: conductor_group,"},{"line_number":1617,"context_line":"                \u0027owner\u0027: owner,"},{"line_number":1618,"context_line":"            }"},{"line_number":1619,"context_line":"            filters \u003d {}"},{"line_number":1620,"context_line":"            for key, value in possible_filters.items():"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_d0211950","line":1617,"range":{"start_line":1617,"start_character":16,"end_line":1617,"end_character":31},"in_reply_to":"3f79a3b5_dfc0974e","updated":"2018-12-05 20:45:07.000000000","message":"Yup, two tests. :(","commit_id":"c4eb4d987449c4b066aa025a424d669d2a887378"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"34a4191e315e2e4cb47b642e6f3375d23b41f065","unresolved":false,"context_lines":[{"line_number":1592,"context_line":"                filtered_nodes.append(n)"},{"line_number":1593,"context_line":"        return filtered_nodes"},{"line_number":1594,"context_line":""},{"line_number":1595,"context_line":"    def _create_node_filters(self, chassis_uuid\u003dNone, associated\u003dNone,"},{"line_number":1596,"context_line":"                             maintenance\u003dNone, provision_state\u003dNone,"},{"line_number":1597,"context_line":"                             driver\u003dNone, resource_class\u003dNone, fault\u003dNone,"},{"line_number":1598,"context_line":"                             conductor_group\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_d8c58236","line":1595,"updated":"2018-12-10 01:24:32.000000000","message":"this method was introduced to reduce complexity, since we have a better implementation down below, this can be removed now. fine to do it in a follow up.","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d7087a3c8b8cd353b28dfe0cd2d5c6b3bd1d8bb3","unresolved":false,"context_lines":[{"line_number":1592,"context_line":"                filtered_nodes.append(n)"},{"line_number":1593,"context_line":"        return filtered_nodes"},{"line_number":1594,"context_line":""},{"line_number":1595,"context_line":"    def _create_node_filters(self, chassis_uuid\u003dNone, associated\u003dNone,"},{"line_number":1596,"context_line":"                             maintenance\u003dNone, provision_state\u003dNone,"},{"line_number":1597,"context_line":"                             driver\u003dNone, resource_class\u003dNone, fault\u003dNone,"},{"line_number":1598,"context_line":"                             conductor_group\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e5ba006e","line":1595,"in_reply_to":"3f79a3b5_d8c58236","updated":"2018-12-10 22:32:48.000000000","message":"doh, forgot to remove it. Done.","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"34a4191e315e2e4cb47b642e6f3375d23b41f065","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                  \"sorting\") % {\u0027key\u0027: sort_key})"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"        marker_obj \u003d None"},{"line_number":1637,"context_line":"        if marker:"},{"line_number":1638,"context_line":"            marker_obj \u003d objects.Node.get_by_uuid(pecan.request.context,"},{"line_number":1639,"context_line":"                                                  marker)"},{"line_number":1640,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_78d0eef5","line":1637,"updated":"2018-12-10 01:24:32.000000000","message":"this order of the marker_obj and sort_key block is reversed in the conductor patch in accordance with Dmitry\u0027s comment, this can avoid a db query when sort_key is invalid and marker is specified.","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"f4f79362666970e90114550f9638b3f70dcfd31b","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                  \"sorting\") % {\u0027key\u0027: sort_key})"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"        marker_obj \u003d None"},{"line_number":1637,"context_line":"        if marker:"},{"line_number":1638,"context_line":"            marker_obj \u003d objects.Node.get_by_uuid(pecan.request.context,"},{"line_number":1639,"context_line":"                                                  marker)"},{"line_number":1640,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_6daa566c","line":1637,"in_reply_to":"3f79a3b5_45abb41d","updated":"2018-12-11 01:38:38.000000000","message":"didn\u0027t remember why I left this comment, probably I took wrong impression at that time and thought the order was restored, just ignore this comment.","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d7087a3c8b8cd353b28dfe0cd2d5c6b3bd1d8bb3","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                  \"sorting\") % {\u0027key\u0027: sort_key})"},{"line_number":1635,"context_line":""},{"line_number":1636,"context_line":"        marker_obj \u003d None"},{"line_number":1637,"context_line":"        if marker:"},{"line_number":1638,"context_line":"            marker_obj \u003d objects.Node.get_by_uuid(pecan.request.context,"},{"line_number":1639,"context_line":"                                                  marker)"},{"line_number":1640,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_45abb41d","line":1637,"in_reply_to":"3f79a3b5_78d0eef5","updated":"2018-12-10 22:32:48.000000000","message":"Is this just something where we should put a \"do not change this order? That seems unrelated to this change.","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d7087a3c8b8cd353b28dfe0cd2d5c6b3bd1d8bb3","unresolved":false,"context_lines":[{"line_number":1653,"context_line":"            # be generated, which we don\u0027t want."},{"line_number":1654,"context_line":"            limit \u003d 0"},{"line_number":1655,"context_line":"        else:"},{"line_number":1656,"context_line":"            # filters \u003d self._create_node_filters(chassis_uuid, associated,"},{"line_number":1657,"context_line":"            #                                    maintenance, provision_state,"},{"line_number":1658,"context_line":"            #                                    driver, resource_class, fault,"},{"line_number":1659,"context_line":"            #                                    conductor_group)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e510c0ac","line":1656,"updated":"2018-12-10 22:32:48.000000000","message":"This needs to be removed","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"}],"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3ddf8afa8d60aed61973404d3cb5246e15acf0dd","unresolved":false,"context_lines":[{"line_number":921,"context_line":"    Version 1.47 exposes this field."},{"line_number":922,"context_line":"    \"\"\""},{"line_number":923,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":924,"context_line":"            versions.MINOR_47_NODE_AUTOMATED_CLEAN)"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"def allow_owner():"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_fe9b7c75","line":924,"updated":"2018-11-27 14:56:39.000000000","message":"are these two really needed?","commit_id":"6d6043fcc4c67bd3c9f11d6fc6cc8513c029867b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c63cd6b17b7876d02139e607b4f0fdd00142bb6f","unresolved":false,"context_lines":[{"line_number":921,"context_line":"    Version 1.47 exposes this field."},{"line_number":922,"context_line":"    \"\"\""},{"line_number":923,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":924,"context_line":"            versions.MINOR_47_NODE_AUTOMATED_CLEAN)"},{"line_number":925,"context_line":""},{"line_number":926,"context_line":""},{"line_number":927,"context_line":"def allow_owner():"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_93983a19","line":924,"in_reply_to":"3f79a3b5_fe9b7c75","updated":"2018-11-27 19:18:06.000000000","message":"side effect of a rebase..  I wrote this on an older branch.","commit_id":"6d6043fcc4c67bd3c9f11d6fc6cc8513c029867b"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3ddf8afa8d60aed61973404d3cb5246e15acf0dd","unresolved":false,"context_lines":[{"line_number":930,"context_line":"    Version 1.48 exposes this field."},{"line_number":931,"context_line":"    \"\"\""},{"line_number":932,"context_line":"    return (pecan.request.version.minor \u003e\u003d"},{"line_number":933,"context_line":"            versions.MINOR_48_NODE_OWNER)"},{"line_number":934,"context_line":""},{"line_number":935,"context_line":""},{"line_number":936,"context_line":"def get_request_return_fields(fields, detail, default_fields):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_1e9f5864","line":933,"updated":"2018-11-27 14:56:39.000000000","message":"This does not seem used (and probably should not be - allow_field) handles it.","commit_id":"6d6043fcc4c67bd3c9f11d6fc6cc8513c029867b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"34a4191e315e2e4cb47b642e6f3375d23b41f065","unresolved":false,"context_lines":[{"line_number":945,"context_line":"def allow_expose_conductors():"},{"line_number":946,"context_line":"    \"\"\"Check if accessing conductor endpoints is allowed."},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    Version 1.48 of the API exposed conductor endpoints and conductor field"},{"line_number":949,"context_line":"    for the node."},{"line_number":950,"context_line":"    \"\"\""},{"line_number":951,"context_line":"    return pecan.request.version.minor \u003e\u003d versions.MINOR_49_CONDUCTORS"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_98e4ead4","line":948,"range":{"start_line":948,"start_character":14,"end_line":948,"end_character":16},"updated":"2018-12-10 01:24:32.000000000","message":"Doh! 1.49","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d7087a3c8b8cd353b28dfe0cd2d5c6b3bd1d8bb3","unresolved":false,"context_lines":[{"line_number":945,"context_line":"def allow_expose_conductors():"},{"line_number":946,"context_line":"    \"\"\"Check if accessing conductor endpoints is allowed."},{"line_number":947,"context_line":""},{"line_number":948,"context_line":"    Version 1.48 of the API exposed conductor endpoints and conductor field"},{"line_number":949,"context_line":"    for the node."},{"line_number":950,"context_line":"    \"\"\""},{"line_number":951,"context_line":"    return pecan.request.version.minor \u003e\u003d versions.MINOR_49_CONDUCTORS"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_2571d8dc","line":948,"range":{"start_line":948,"start_character":14,"end_line":948,"end_character":16},"in_reply_to":"3f79a3b5_98e4ead4","updated":"2018-12-10 22:32:48.000000000","message":"Going ahead and changing this.","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"34a4191e315e2e4cb47b642e6f3375d23b41f065","unresolved":false,"context_lines":[{"line_number":954,"context_line":"def check_allow_filter_by_conductor(conductor):"},{"line_number":955,"context_line":"    \"\"\"Check if filtering nodes by conductor is allowed."},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"    Version 1.48 of the API allows filtering nodes by conductor."},{"line_number":958,"context_line":"    \"\"\""},{"line_number":959,"context_line":"    if conductor is not None and not allow_expose_conductors():"},{"line_number":960,"context_line":"        raise exception.NotAcceptable(_("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_582892eb","line":957,"range":{"start_line":957,"start_character":12,"end_line":957,"end_character":16},"updated":"2018-12-10 01:24:32.000000000","message":"1.49","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d7087a3c8b8cd353b28dfe0cd2d5c6b3bd1d8bb3","unresolved":false,"context_lines":[{"line_number":954,"context_line":"def check_allow_filter_by_conductor(conductor):"},{"line_number":955,"context_line":"    \"\"\"Check if filtering nodes by conductor is allowed."},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"    Version 1.48 of the API allows filtering nodes by conductor."},{"line_number":958,"context_line":"    \"\"\""},{"line_number":959,"context_line":"    if conductor is not None and not allow_expose_conductors():"},{"line_number":960,"context_line":"        raise exception.NotAcceptable(_("}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_05761cd7","line":957,"range":{"start_line":957,"start_character":12,"end_line":957,"end_character":16},"in_reply_to":"3f79a3b5_582892eb","updated":"2018-12-10 22:32:48.000000000","message":"Done","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"}],"ironic/api/controllers/v1/versions.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"34a4191e315e2e4cb47b642e6f3375d23b41f065","unresolved":false,"context_lines":[{"line_number":86,"context_line":"# v1.46: Add conductor_group to the node object."},{"line_number":87,"context_line":"# v1.47: Add automated_clean to the node object."},{"line_number":88,"context_line":"# v1.48: Add protected to the node object."},{"line_number":89,"context_line":"# v1.50: Add owner to the node object."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"MINOR_0_JUNO \u003d 0"},{"line_number":92,"context_line":"MINOR_1_INITIAL_VERSION \u003d 1"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_783eae27","line":89,"updated":"2018-12-10 01:24:32.000000000","message":"1.49 is missing here, looks like I have to do a follow up.","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d7087a3c8b8cd353b28dfe0cd2d5c6b3bd1d8bb3","unresolved":false,"context_lines":[{"line_number":86,"context_line":"# v1.46: Add conductor_group to the node object."},{"line_number":87,"context_line":"# v1.47: Add automated_clean to the node object."},{"line_number":88,"context_line":"# v1.48: Add protected to the node object."},{"line_number":89,"context_line":"# v1.50: Add owner to the node object."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"MINOR_0_JUNO \u003d 0"},{"line_number":92,"context_line":"MINOR_1_INITIAL_VERSION \u003d 1"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e52d20ad","line":89,"in_reply_to":"3f79a3b5_783eae27","updated":"2018-12-10 22:32:48.000000000","message":"Meh, I can do it :)","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"}],"ironic/tests/unit/api/controllers/v1/test_node.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"34a4191e315e2e4cb47b642e6f3375d23b41f065","unresolved":false,"context_lines":[{"line_number":1603,"context_line":""},{"line_number":1604,"context_line":"    def test_get_nodes_by_conductor_not_allowed(self):"},{"line_number":1605,"context_line":"        response \u003d self.get_json(\u0027/nodes?conductor\u003drocky.rocks\u0027,"},{"line_number":1606,"context_line":"                                 headers\u003d{api_base.Version.string: \"1.47\"},"},{"line_number":1607,"context_line":"                                 expect_errors\u003dTrue)"},{"line_number":1608,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":1609,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_code)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_581172ad","line":1606,"range":{"start_line":1606,"start_character":68,"end_line":1606,"end_character":72},"updated":"2018-12-10 01:24:32.000000000","message":"this should be 1.48..","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d7087a3c8b8cd353b28dfe0cd2d5c6b3bd1d8bb3","unresolved":false,"context_lines":[{"line_number":1603,"context_line":""},{"line_number":1604,"context_line":"    def test_get_nodes_by_conductor_not_allowed(self):"},{"line_number":1605,"context_line":"        response \u003d self.get_json(\u0027/nodes?conductor\u003drocky.rocks\u0027,"},{"line_number":1606,"context_line":"                                 headers\u003d{api_base.Version.string: \"1.47\"},"},{"line_number":1607,"context_line":"                                 expect_errors\u003dTrue)"},{"line_number":1608,"context_line":"        self.assertEqual(\u0027application/json\u0027, response.content_type)"},{"line_number":1609,"context_line":"        self.assertEqual(http_client.NOT_ACCEPTABLE, response.status_code)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_65191089","line":1606,"range":{"start_line":1606,"start_character":68,"end_line":1606,"end_character":72},"in_reply_to":"3f79a3b5_581172ad","updated":"2018-12-10 22:32:48.000000000","message":"Done","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"}],"ironic/tests/unit/objects/test_node.py":[{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"506e8fee324dddfa64fd9e50ddcd6142be1645e2","unresolved":false,"context_lines":[{"line_number":884,"context_line":""},{"line_number":885,"context_line":"        node.owner \u003d None"},{"line_number":886,"context_line":"        node.obj_reset_changes()"},{"line_number":887,"context_line":"        node._convert_to_version(\"1.28\", False)"},{"line_number":888,"context_line":"        self.assertIsNone(node.owner)"},{"line_number":889,"context_line":"        self.assertEqual({}, node.obj_get_changes())"},{"line_number":890,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_bf7efb69","line":887,"range":{"start_line":887,"start_character":34,"end_line":887,"end_character":38},"updated":"2018-12-03 09:22:42.000000000","message":"1.29?","commit_id":"c4eb4d987449c4b066aa025a424d669d2a887378"}],"releasenotes/notes/add-owner-information-52e153faf570747e.yaml":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"3ddf8afa8d60aed61973404d3cb5246e15acf0dd","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Adds API version 1.48 which allows for the storage of an ``owner`` field"},{"line_number":5,"context_line":"    on node objects. This is intended for either storage of human parsable"},{"line_number":6,"context_line":"    information or the storage of a tenant UUID which could be leveraged"},{"line_number":7,"context_line":"    in later versions of the Bare Metal as a Service API."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f79a3b5_bea184a9","line":7,"updated":"2018-11-27 14:56:39.000000000","message":"Worth putting an even bigger emphasis on the fact that we don\u0027t interpret this field anyhow yet?","commit_id":"6d6043fcc4c67bd3c9f11d6fc6cc8513c029867b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"c63cd6b17b7876d02139e607b4f0fdd00142bb6f","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Adds API version 1.48 which allows for the storage of an ``owner`` field"},{"line_number":5,"context_line":"    on node objects. This is intended for either storage of human parsable"},{"line_number":6,"context_line":"    information or the storage of a tenant UUID which could be leveraged"},{"line_number":7,"context_line":"    in later versions of the Bare Metal as a Service API."}],"source_content_type":"text/x-yaml","patch_set":1,"id":"3f79a3b5_14bad7de","line":7,"in_reply_to":"3f79a3b5_bea184a9","updated":"2018-11-27 19:18:06.000000000","message":"Yeah.....","commit_id":"6d6043fcc4c67bd3c9f11d6fc6cc8513c029867b"},{"author":{"_account_id":24828,"name":"Kaifeng Wang","email":"kaifeng.w@gmail.com","username":"wangkf"},"change_message_id":"34a4191e315e2e4cb47b642e6f3375d23b41f065","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Adds API version 1.49 which allows for the storage of an ``owner`` field"},{"line_number":5,"context_line":"    on node objects. This is intended for either storage of human parsable"},{"line_number":6,"context_line":"    information or the storage of a tenant UUID which could be leveraged"},{"line_number":7,"context_line":"    in a future version of the Bare Metal as a Service API."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"3f79a3b5_d81ca2c4","line":4,"range":{"start_line":4,"start_character":21,"end_line":4,"end_character":25},"updated":"2018-12-10 01:24:32.000000000","message":"Oo, it\u0027s 1.50 now","commit_id":"ab6ade8c8cdc54d2d6121e80badcdbc5f9258ede"}]}
