)]}'
{"doc/source/admin/secure-rbac.rst":[{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"c78d7de4f59cf9593aa63c04c2d8358d8639f49b","unresolved":true,"context_lines":[{"line_number":146,"context_line":"Pratical differences"},{"line_number":147,"context_line":"--------------------"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Most users, upon implementing the use of ``system`` scoped authenticaiton,"},{"line_number":150,"context_line":"should not notice a difference as long as their authentication token is"},{"line_number":151,"context_line":"properly scoped to ``system`` and with the appropriate role for their"},{"line_number":152,"context_line":"access level. For most users who used a ``baremetal`` project,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9ea45ab3_2ec92cfc","line":149,"range":{"start_line":149,"start_character":59,"end_line":149,"end_character":73},"updated":"2021-03-04 08:48:36.000000000","message":"nit: authentication","commit_id":"e9dfe5ddaad7324d8d89fef0661f41f18542028f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cc4c555fc4d3b883f57ad8f0af4c4c17ab121ead","unresolved":true,"context_lines":[{"line_number":146,"context_line":"Pratical differences"},{"line_number":147,"context_line":"--------------------"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Most users, upon implementing the use of ``system`` scoped authenticaiton,"},{"line_number":150,"context_line":"should not notice a difference as long as their authentication token is"},{"line_number":151,"context_line":"properly scoped to ``system`` and with the appropriate role for their"},{"line_number":152,"context_line":"access level. For most users who used a ``baremetal`` project,"}],"source_content_type":"text/x-rst","patch_set":8,"id":"a40341b9_5489d8d4","line":149,"range":{"start_line":149,"start_character":59,"end_line":149,"end_character":73},"in_reply_to":"9ea45ab3_2ec92cfc","updated":"2021-03-04 23:14:45.000000000","message":"addressed in next major doc change on the series in volumes","commit_id":"e9dfe5ddaad7324d8d89fef0661f41f18542028f"},{"author":{"_account_id":23851,"name":"Riccardo Pittau","email":"elfosardo@gmail.com","username":"elfosardo"},"change_message_id":"c78d7de4f59cf9593aa63c04c2d8358d8639f49b","unresolved":true,"context_lines":[{"line_number":154,"context_line":"role name such as ``baremetal_admin``, this will require changing"},{"line_number":155,"context_line":"the user to be a ``system`` scoped user with ``admin`` privilges."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"The most noticable difference for API consumers is the HTTP 403 access"},{"line_number":158,"context_line":"code is now mainly a HTTP 404 access code. The access concept has changed"},{"line_number":159,"context_line":"from \"Does the user user broadly has access to the API?\" to"},{"line_number":160,"context_line":"\"Does user have access to the node, and then do they have access"}],"source_content_type":"text/x-rst","patch_set":8,"id":"c8e02c68_deef53e9","line":157,"range":{"start_line":157,"start_character":9,"end_line":157,"end_character":18},"updated":"2021-03-04 08:48:36.000000000","message":"nit: noticeable","commit_id":"e9dfe5ddaad7324d8d89fef0661f41f18542028f"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cc4c555fc4d3b883f57ad8f0af4c4c17ab121ead","unresolved":true,"context_lines":[{"line_number":154,"context_line":"role name such as ``baremetal_admin``, this will require changing"},{"line_number":155,"context_line":"the user to be a ``system`` scoped user with ``admin`` privilges."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"The most noticable difference for API consumers is the HTTP 403 access"},{"line_number":158,"context_line":"code is now mainly a HTTP 404 access code. The access concept has changed"},{"line_number":159,"context_line":"from \"Does the user user broadly has access to the API?\" to"},{"line_number":160,"context_line":"\"Does user have access to the node, and then do they have access"}],"source_content_type":"text/x-rst","patch_set":8,"id":"57b0aac4_856772ca","line":157,"range":{"start_line":157,"start_character":9,"end_line":157,"end_character":18},"in_reply_to":"c8e02c68_deef53e9","updated":"2021-03-04 23:14:45.000000000","message":"addressed in next major doc change on the series in volumes","commit_id":"e9dfe5ddaad7324d8d89fef0661f41f18542028f"}],"ironic/api/controllers/v1/port.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":"56014dfec46c48652c1e1249541b1a8942fa1ab4","unresolved":true,"context_lines":[{"line_number":383,"context_line":"                                   for that portgroup."},{"line_number":384,"context_line":"        :raises: NotAcceptable, HTTPNotFound"},{"line_number":385,"context_line":"        \"\"\""},{"line_number":386,"context_line":"        project \u003d api_utils.check_port_list_policy()"},{"line_number":387,"context_line":""},{"line_number":388,"context_line":"        api_utils.check_allow_specify_fields(fields)"},{"line_number":389,"context_line":"        self._check_allowed_port_fields(fields)"}],"source_content_type":"text/x-python","patch_set":2,"id":"51169c0e_b85d0a8c","side":"PARENT","line":386,"updated":"2021-02-18 05:18:33.000000000","message":"umm... we need to capture if we\u0027re a parent node.","commit_id":"bf494c876e4d558d1e8f824e528a30ad2a4bd036"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2822adf19fbe0f5d6a360938543976c06d363b73","unresolved":true,"context_lines":[{"line_number":450,"context_line":"        project \u003d api_utils.check_port_list_policy("},{"line_number":451,"context_line":"            parent_node\u003dself.parent_node_ident,"},{"line_number":452,"context_line":"            parent_portgroup\u003dself.parent_portgroup_ident)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        self._check_allowed_port_fields([sort_key])"},{"line_number":455,"context_line":"        if portgroup and not api_utils.allow_portgroups_subcontrollers():"},{"line_number":456,"context_line":"            raise exception.NotAcceptable()"}],"source_content_type":"text/x-python","patch_set":4,"id":"405616e7_8730446d","line":453,"updated":"2021-02-24 21:02:16.000000000","message":"It looks like this should have the same node/portgroup swapout as get_all:\n\n        if self.parent_node_ident:\n            node \u003d self.parent_node_ident\n        if self.parent_portgroup_ident:\n            portgroup \u003d self.parent_portgroup_ident","commit_id":"80a538443ce8bc868350a1677bc4412e9df74676"}],"ironic/api/controllers/v1/portgroup.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":"118517210fdc0af741b064ace613c55c87cf7403","unresolved":true,"context_lines":[{"line_number":472,"context_line":"        if not api_utils.allow_portgroups():"},{"line_number":473,"context_line":"            raise exception.NotFound()"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if self.parent_node_ident:"},{"line_number":476,"context_line":"            # Shamelessly copied from port.py, to prevent subcontroller"},{"line_number":477,"context_line":"            # updates."},{"line_number":478,"context_line":"            raise exception.OperationNotPermitted()"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"        owner \u003d None"},{"line_number":481,"context_line":"        lessee \u003d None"},{"line_number":482,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"a27c7086_a3d6eb3f","line":479,"range":{"start_line":475,"start_character":2,"end_line":479,"end_character":0},"updated":"2021-02-24 17:56:44.000000000","message":"this likely needs to move below the policy checking :\\","commit_id":"80a538443ce8bc868350a1677bc4412e9df74676"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81933bd41dde1e57642b22fe84bab2b56663f0e9","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        if not api_utils.allow_portgroups():"},{"line_number":473,"context_line":"            raise exception.NotFound()"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        if self.parent_node_ident:"},{"line_number":476,"context_line":"            # Shamelessly copied from port.py, to prevent subcontroller"},{"line_number":477,"context_line":"            # updates."},{"line_number":478,"context_line":"            raise exception.OperationNotPermitted()"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"        owner \u003d None"},{"line_number":481,"context_line":"        lessee \u003d None"},{"line_number":482,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"0c54f475_ad6d1704","line":479,"range":{"start_line":475,"start_character":2,"end_line":479,"end_character":0},"in_reply_to":"a27c7086_a3d6eb3f","updated":"2021-02-24 19:35:07.000000000","message":"Done","commit_id":"80a538443ce8bc868350a1677bc4412e9df74676"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d6070ee3d44458f449702396b441f80874fd731d","unresolved":true,"context_lines":[{"line_number":375,"context_line":"            raise exception.PortgroupNotFound(portgroup\u003dportgroup_ident)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        api_utils.check_owner_policy(\u0027node\u0027, \u0027baremetal:portgroup:get\u0027,"},{"line_number":378,"context_line":"                                     owner, lessee, conceal_node\u003dFalse)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        if self.parent_node_ident:"},{"line_number":381,"context_line":"            raise exception.OperationNotPermitted()"}],"source_content_type":"text/x-python","patch_set":5,"id":"8f160406_8c73ab0e","line":378,"updated":"2021-02-24 03:58:43.000000000","message":"This is how I imagined this would look. Might this pattern be common enough to be mostly done by a util function which is not portgroup specific?","commit_id":"cb6dab788e7d256927eda2191bbadd2a548d37e7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"118517210fdc0af741b064ace613c55c87cf7403","unresolved":true,"context_lines":[{"line_number":375,"context_line":"            raise exception.PortgroupNotFound(portgroup\u003dportgroup_ident)"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        api_utils.check_owner_policy(\u0027node\u0027, \u0027baremetal:portgroup:get\u0027,"},{"line_number":378,"context_line":"                                     owner, lessee, conceal_node\u003dFalse)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        if self.parent_node_ident:"},{"line_number":381,"context_line":"            raise exception.OperationNotPermitted()"}],"source_content_type":"text/x-python","patch_set":5,"id":"ee4bb1cd_d6cc1e77","line":378,"in_reply_to":"8f160406_8c73ab0e","updated":"2021-02-24 17:56:44.000000000","message":"It seems feasible per type. I think I already did that for one of the methods, but I *guess* I didn\u0027t get it into this upload.","commit_id":"cb6dab788e7d256927eda2191bbadd2a548d37e7"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2822adf19fbe0f5d6a360938543976c06d363b73","unresolved":true,"context_lines":[{"line_number":483,"context_line":"        #    not present in the API object"},{"line_number":484,"context_line":"        # 2) Add node_uuid"},{"line_number":485,"context_line":"        # TODO(TheJulia): This seems redundant?"},{"line_number":486,"context_line":"        rpc_node \u003d api_utils.replace_node_id_with_uuid(portgroup_dict)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        portgroup_dict \u003d api_utils.apply_jsonpatch(portgroup_dict, patch)"},{"line_number":489,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"465c151c_c3b68440","line":486,"updated":"2021-02-24 21:02:16.000000000","message":"delete it I reckon","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81ee9644c2dede6b7994c107f3fed80177f64402","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        #    not present in the API object"},{"line_number":484,"context_line":"        # 2) Add node_uuid"},{"line_number":485,"context_line":"        # TODO(TheJulia): This seems redundant?"},{"line_number":486,"context_line":"        rpc_node \u003d api_utils.replace_node_id_with_uuid(portgroup_dict)"},{"line_number":487,"context_line":""},{"line_number":488,"context_line":"        portgroup_dict \u003d api_utils.apply_jsonpatch(portgroup_dict, patch)"},{"line_number":489,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"b096ac76_b1d1c6ef","line":486,"in_reply_to":"465c151c_c3b68440","updated":"2021-03-01 18:44:29.000000000","message":"Done","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"}],"ironic/api/controllers/v1/utils.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"d6070ee3d44458f449702396b441f80874fd731d","unresolved":true,"context_lines":[{"line_number":1729,"context_line":"        rpc_portgroup \u003d objects.Portgroup.get_by_uuid(api.request.context,"},{"line_number":1730,"context_line":"                                                      parent_portgroup)"},{"line_number":1731,"context_line":"        rpc_node \u003d objects.Node.get_by_id(api.request.context,"},{"line_number":1732,"context_line":"                                          rpc_portgroup.node_id)"},{"line_number":1733,"context_line":"        parent_node \u003d rpc_node.uuid"},{"line_number":1734,"context_line":""},{"line_number":1735,"context_line":"    if parent_node and not rpc_node:"}],"source_content_type":"text/x-python","patch_set":5,"id":"603a694c_e937fc42","line":1732,"updated":"2021-02-24 03:58:43.000000000","message":"How about passing in rpc_portgroup and rpc_node as arguments to this function? Chances are the caller has already fetched them, or will later.","commit_id":"cb6dab788e7d256927eda2191bbadd2a548d37e7"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"118517210fdc0af741b064ace613c55c87cf7403","unresolved":true,"context_lines":[{"line_number":1729,"context_line":"        rpc_portgroup \u003d objects.Portgroup.get_by_uuid(api.request.context,"},{"line_number":1730,"context_line":"                                                      parent_portgroup)"},{"line_number":1731,"context_line":"        rpc_node \u003d objects.Node.get_by_id(api.request.context,"},{"line_number":1732,"context_line":"                                          rpc_portgroup.node_id)"},{"line_number":1733,"context_line":"        parent_node \u003d rpc_node.uuid"},{"line_number":1734,"context_line":""},{"line_number":1735,"context_line":"    if parent_node and not rpc_node:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fd4bd377_fdcc6366","line":1732,"in_reply_to":"603a694c_e937fc42","updated":"2021-02-24 17:56:44.000000000","message":"So the caller only has the ident if memory serves becasue it divided the path to call the subresource. parent_portgroup just comes from ?self.parent_portgroup_ident? and ?self.parent_node_ident? when the item is called.","commit_id":"cb6dab788e7d256927eda2191bbadd2a548d37e7"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2822adf19fbe0f5d6a360938543976c06d363b73","unresolved":true,"context_lines":[{"line_number":1684,"context_line":"        owner \u003d rpc_node[\u0027owner\u0027]"},{"line_number":1685,"context_line":"        lessee \u003d rpc_node[\u0027lessee\u0027]"},{"line_number":1686,"context_line":"    except exception.NodeNotFound:"},{"line_number":1687,"context_line":"        pass"},{"line_number":1688,"context_line":"    target_dict \u003d dict(cdict)"},{"line_number":1689,"context_line":"    target_dict[\u0027node.owner\u0027] \u003d owner"},{"line_number":1690,"context_line":"    target_dict[\u0027node.lessee\u0027] \u003d lessee"}],"source_content_type":"text/x-python","patch_set":6,"id":"7de27a11_e9a6f22a","line":1687,"updated":"2021-02-24 21:02:16.000000000","message":"An explicit rpc_node \u003d None would make me more comfortable.","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81ee9644c2dede6b7994c107f3fed80177f64402","unresolved":true,"context_lines":[{"line_number":1684,"context_line":"        owner \u003d rpc_node[\u0027owner\u0027]"},{"line_number":1685,"context_line":"        lessee \u003d rpc_node[\u0027lessee\u0027]"},{"line_number":1686,"context_line":"    except exception.NodeNotFound:"},{"line_number":1687,"context_line":"        pass"},{"line_number":1688,"context_line":"    target_dict \u003d dict(cdict)"},{"line_number":1689,"context_line":"    target_dict[\u0027node.owner\u0027] \u003d owner"},{"line_number":1690,"context_line":"    target_dict[\u0027node.lessee\u0027] \u003d lessee"}],"source_content_type":"text/x-python","patch_set":6,"id":"a6cdc287_72967dec","line":1687,"in_reply_to":"7de27a11_e9a6f22a","updated":"2021-03-01 18:44:29.000000000","message":"Hmm, yes.","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"}],"ironic/common/policy.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2822adf19fbe0f5d6a360938543976c06d363b73","unresolved":true,"context_lines":[{"line_number":908,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":909,"context_line":"        name\u003d\u0027baremetal:port:list_all\u0027,"},{"line_number":910,"context_line":"        check_str\u003dSYSTEM_READER,"},{"line_number":911,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":912,"context_line":"        description\u003d\u0027Retrieve multiple Port records\u0027,"},{"line_number":913,"context_line":"        operations\u003d["},{"line_number":914,"context_line":"            {\u0027path\u0027: \u0027/ports\u0027, \u0027method\u0027: \u0027GET\u0027},"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f11726a_e71f4f78","line":911,"updated":"2021-02-24 21:02:16.000000000","message":"Looking at the the implementation of check_list_policy, can we leave \u0027project\u0027 off the scope_types? The policy check gets retried with baremetal:port:list which does support project scope","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81ee9644c2dede6b7994c107f3fed80177f64402","unresolved":true,"context_lines":[{"line_number":908,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":909,"context_line":"        name\u003d\u0027baremetal:port:list_all\u0027,"},{"line_number":910,"context_line":"        check_str\u003dSYSTEM_READER,"},{"line_number":911,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":912,"context_line":"        description\u003d\u0027Retrieve multiple Port records\u0027,"},{"line_number":913,"context_line":"        operations\u003d["},{"line_number":914,"context_line":"            {\u0027path\u0027: \u0027/ports\u0027, \u0027method\u0027: \u0027GET\u0027},"}],"source_content_type":"text/x-python","patch_set":6,"id":"8b3612f0_f6aca0c3","line":911,"in_reply_to":"1f11726a_e71f4f78","updated":"2021-03-01 18:44:29.000000000","message":"We really can\u0027t just leave it off, because if someone revises the checkstring then the would have to monkey around in the code.","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2822adf19fbe0f5d6a360938543976c06d363b73","unresolved":true,"context_lines":[{"line_number":1037,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":1038,"context_line":"        name\u003d\u0027baremetal:portgroup:list_all\u0027,"},{"line_number":1039,"context_line":"        check_str\u003dSYSTEM_READER,"},{"line_number":1040,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":1041,"context_line":"        description\u003d\u0027Retrieve multiple Port records\u0027,"},{"line_number":1042,"context_line":"        operations\u003d["},{"line_number":1043,"context_line":"            {\u0027path\u0027: \u0027/portgroups\u0027, \u0027method\u0027: \u0027GET\u0027},"}],"source_content_type":"text/x-python","patch_set":6,"id":"233f3053_6a06b74d","line":1040,"updated":"2021-02-24 21:02:16.000000000","message":"same comment as #911","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81ee9644c2dede6b7994c107f3fed80177f64402","unresolved":true,"context_lines":[{"line_number":1037,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":1038,"context_line":"        name\u003d\u0027baremetal:portgroup:list_all\u0027,"},{"line_number":1039,"context_line":"        check_str\u003dSYSTEM_READER,"},{"line_number":1040,"context_line":"        scope_types\u003d[\u0027system\u0027, \u0027project\u0027],"},{"line_number":1041,"context_line":"        description\u003d\u0027Retrieve multiple Port records\u0027,"},{"line_number":1042,"context_line":"        operations\u003d["},{"line_number":1043,"context_line":"            {\u0027path\u0027: \u0027/portgroups\u0027, \u0027method\u0027: \u0027GET\u0027},"}],"source_content_type":"text/x-python","patch_set":6,"id":"6cae346f_dc78ae97","line":1040,"in_reply_to":"233f3053_6a06b74d","updated":"2021-03-01 18:44:29.000000000","message":"Same reply :)","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2822adf19fbe0f5d6a360938543976c06d363b73","unresolved":true,"context_lines":[{"line_number":1713,"context_line":"                                  *args, **kwargs)"},{"line_number":1714,"context_line":"    except policy.PolicyNotAuthorized as e:"},{"line_number":1715,"context_line":"        print(\u0027rejecting authorization\u0027)"},{"line_number":1716,"context_line":"        print(e)"},{"line_number":1717,"context_line":"        raise exception.HTTPForbidden(resource\u003drule)"},{"line_number":1718,"context_line":""},{"line_number":1719,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"364267b9_1e44f472","line":1716,"updated":"2021-02-24 21:02:16.000000000","message":"we could legitimately LOG.error or LOG.exception this","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81ee9644c2dede6b7994c107f3fed80177f64402","unresolved":true,"context_lines":[{"line_number":1713,"context_line":"                                  *args, **kwargs)"},{"line_number":1714,"context_line":"    except policy.PolicyNotAuthorized as e:"},{"line_number":1715,"context_line":"        print(\u0027rejecting authorization\u0027)"},{"line_number":1716,"context_line":"        print(e)"},{"line_number":1717,"context_line":"        raise exception.HTTPForbidden(resource\u003drule)"},{"line_number":1718,"context_line":""},{"line_number":1719,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3571ce94_8c131b0b","line":1716,"in_reply_to":"364267b9_1e44f472","updated":"2021-03-01 18:44:29.000000000","message":"+++  Consider it done.","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"}],"ironic/tests/unit/api/test_rbac_project_scoped.yaml":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2822adf19fbe0f5d6a360938543976c06d363b73","unresolved":true,"context_lines":[{"line_number":1861,"context_line":"  assert_status: 403"},{"line_number":1862,"context_line":"  skip_reason: policy not implemented"},{"line_number":1863,"context_line":""},{"line_number":1864,"context_line":"lessee_reader_can_get_node_porgtroups:"},{"line_number":1865,"context_line":"  path: \u0027/v1/nodes/{lessee_node_ident}/ports\u0027"},{"line_number":1866,"context_line":"  method: get"},{"line_number":1867,"context_line":"  headers: *lessee_reader_headers"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"88454b37_3c03a5d0","side":"PARENT","line":1864,"range":{"start_line":1864,"start_character":27,"end_line":1864,"end_character":37},"updated":"2021-02-24 21:02:16.000000000","message":"Porg Troups!","commit_id":"eb0b675f65e67ad6f7d9a542c505f60f714374ff"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81ee9644c2dede6b7994c107f3fed80177f64402","unresolved":false,"context_lines":[{"line_number":1861,"context_line":"  assert_status: 403"},{"line_number":1862,"context_line":"  skip_reason: policy not implemented"},{"line_number":1863,"context_line":""},{"line_number":1864,"context_line":"lessee_reader_can_get_node_porgtroups:"},{"line_number":1865,"context_line":"  path: \u0027/v1/nodes/{lessee_node_ident}/ports\u0027"},{"line_number":1866,"context_line":"  method: get"},{"line_number":1867,"context_line":"  headers: *lessee_reader_headers"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"4ee83e78_b6454e2d","side":"PARENT","line":1864,"range":{"start_line":1864,"start_character":27,"end_line":1864,"end_character":37},"in_reply_to":"88454b37_3c03a5d0","updated":"2021-03-01 18:44:29.000000000","message":"All hail the migty porg troups!","commit_id":"eb0b675f65e67ad6f7d9a542c505f60f714374ff"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2822adf19fbe0f5d6a360938543976c06d363b73","unresolved":true,"context_lines":[{"line_number":1834,"context_line":"  assert_list_length:"},{"line_number":1835,"context_line":"    ports: 2"},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"lessee_reader_can_get_node_portgroups:"},{"line_number":1838,"context_line":"  path: \u0027/v1/nodes/{lessee_node_ident}/ports\u0027"},{"line_number":1839,"context_line":"  method: get"},{"line_number":1840,"context_line":"  headers: *lessee_reader_headers"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"55583fb1_15d6acdd","line":1837,"range":{"start_line":1837,"start_character":0,"end_line":1837,"end_character":37},"updated":"2021-02-24 21:02:16.000000000","message":"should this be lessee_reader_can_get_node_ports","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"81ee9644c2dede6b7994c107f3fed80177f64402","unresolved":false,"context_lines":[{"line_number":1834,"context_line":"  assert_list_length:"},{"line_number":1835,"context_line":"    ports: 2"},{"line_number":1836,"context_line":""},{"line_number":1837,"context_line":"lessee_reader_can_get_node_portgroups:"},{"line_number":1838,"context_line":"  path: \u0027/v1/nodes/{lessee_node_ident}/ports\u0027"},{"line_number":1839,"context_line":"  method: get"},{"line_number":1840,"context_line":"  headers: *lessee_reader_headers"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"de9f67e6_56f48f99","line":1837,"range":{"start_line":1837,"start_character":0,"end_line":1837,"end_character":37},"in_reply_to":"55583fb1_15d6acdd","updated":"2021-03-01 18:44:29.000000000","message":"Done","commit_id":"ae22bd86695929878ff60bf0eb52248eae2cbba3"}]}
