)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7d85d06e4fbf5e8b03c42f5a5fb5e85485a6d537","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e675def6_85a0d1cf","updated":"2022-11-17 19:10:42.000000000","message":"First pass, LGTM.","commit_id":"9396d6d23eeab830f288992adf12c52903685463"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f75a3299b1605f974117d9e7de8770e5d2a3b590","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"b3d01a8d_0a0e53f6","updated":"2022-12-07 21:58:06.000000000","message":"Overall, lgtm","commit_id":"b9ad690d07c5691ea326b290ab8eeb79bc21c8a0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"987f19b444857ac04a23ea547b97602deca07a59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"217be088_79b2ca69","updated":"2023-01-26 17:48:12.000000000","message":"recheck nested VM failed to restart on one boot unable to trust the timer. 😭","commit_id":"a87ce365fb42dd522a75a926db315a60c0542fdd"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1e5f9b66e84b9f3b89e8bd80453b79c586c25996","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"7a0c0efe_b101066c","updated":"2023-02-10 15:22:26.000000000","message":"Comments on a couple of ambiguous things, the ACK\u0027d ones, I\u0027ll follow your suggestion.","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"450bd9c18f067278b2735285d94ffeb25e2e6c03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"b86c272c_9c3f8495","updated":"2023-02-12 23:34:30.000000000","message":"Will push these fixes when I\u0027m done w/the other ones in this chain","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"9c69e8ec59d9d31201c8b2c0283b79ec69bd92c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"a16daa3b_12a402e1","updated":"2023-02-13 02:48:32.000000000","message":"Looks good, thanks","commit_id":"79e36761c0424f0df0d45fc888ec5c93f46c8f84"}],"ironic/db/api.py":[{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"ea713b8c7636814a5bf972c1d98f07af4fbe0b47","unresolved":true,"context_lines":[{"line_number":72,"context_line":"                        :reserved_by_any_of: [conductor1, conductor2]"},{"line_number":73,"context_line":"                        :resource_class: resource class name"},{"line_number":74,"context_line":"                        :retired: True | False"},{"line_number":75,"context_line":"                        :shard_in: shard (multiple possibilities)"},{"line_number":76,"context_line":"                        :provision_state: provision state of node"},{"line_number":77,"context_line":"                        :provision_state_in:"},{"line_number":78,"context_line":"                            provision state of node (multiple possibilities)"}],"source_content_type":"text/x-python","patch_set":17,"id":"cfbb4524_fba65f93","line":75,"updated":"2023-02-10 03:58:10.000000000","message":"In the next change I question if we should support filtering by multiple shards","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"9c69e8ec59d9d31201c8b2c0283b79ec69bd92c7","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                        :reserved_by_any_of: [conductor1, conductor2]"},{"line_number":73,"context_line":"                        :resource_class: resource class name"},{"line_number":74,"context_line":"                        :retired: True | False"},{"line_number":75,"context_line":"                        :shard_in: shard (multiple possibilities)"},{"line_number":76,"context_line":"                        :provision_state: provision state of node"},{"line_number":77,"context_line":"                        :provision_state_in:"},{"line_number":78,"context_line":"                            provision state of node (multiple possibilities)"}],"source_content_type":"text/x-python","patch_set":17,"id":"6bd68be8_8fd1fda3","line":75,"in_reply_to":"1253a74e_4fb5dbef","updated":"2023-02-13 02:48:32.000000000","message":"ack","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1e5f9b66e84b9f3b89e8bd80453b79c586c25996","unresolved":true,"context_lines":[{"line_number":72,"context_line":"                        :reserved_by_any_of: [conductor1, conductor2]"},{"line_number":73,"context_line":"                        :resource_class: resource class name"},{"line_number":74,"context_line":"                        :retired: True | False"},{"line_number":75,"context_line":"                        :shard_in: shard (multiple possibilities)"},{"line_number":76,"context_line":"                        :provision_state: provision state of node"},{"line_number":77,"context_line":"                        :provision_state_in:"},{"line_number":78,"context_line":"                            provision state of node (multiple possibilities)"}],"source_content_type":"text/x-python","patch_set":17,"id":"1253a74e_4fb5dbef","line":75,"in_reply_to":"cfbb4524_fba65f93","updated":"2023-02-10 15:22:26.000000000","message":"We do, in the later patches in the chain.","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"ea713b8c7636814a5bf972c1d98f07af4fbe0b47","unresolved":true,"context_lines":[{"line_number":1457,"context_line":"        :param node_id: The integer node ID."},{"line_number":1458,"context_line":"        :returns: An inventory of a node."},{"line_number":1459,"context_line":"        \"\"\""},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"    def get_shard_list(self):"},{"line_number":1462,"context_line":"        \"\"\"Retrieve a list of shards.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"5aacfabc_25b58edb","line":1460,"updated":"2023-02-10 03:58:10.000000000","message":"@abc.abstractmethod","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1e5f9b66e84b9f3b89e8bd80453b79c586c25996","unresolved":true,"context_lines":[{"line_number":1457,"context_line":"        :param node_id: The integer node ID."},{"line_number":1458,"context_line":"        :returns: An inventory of a node."},{"line_number":1459,"context_line":"        \"\"\""},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"    def get_shard_list(self):"},{"line_number":1462,"context_line":"        \"\"\"Retrieve a list of shards.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"8a07c989_7be02f68","line":1460,"in_reply_to":"5aacfabc_25b58edb","updated":"2023-02-10 15:22:26.000000000","message":"Ack","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"450bd9c18f067278b2735285d94ffeb25e2e6c03","unresolved":false,"context_lines":[{"line_number":1457,"context_line":"        :param node_id: The integer node ID."},{"line_number":1458,"context_line":"        :returns: An inventory of a node."},{"line_number":1459,"context_line":"        \"\"\""},{"line_number":1460,"context_line":""},{"line_number":1461,"context_line":"    def get_shard_list(self):"},{"line_number":1462,"context_line":"        \"\"\"Retrieve a list of shards.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"a51d3a4b_0a3fa277","line":1460,"in_reply_to":"8a07c989_7be02f68","updated":"2023-02-12 23:34:30.000000000","message":"Done","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"}],"ironic/db/sqlalchemy/alembic/versions/4dbec778866e_create_node_shard_key_and_shards_table.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":"5f4f1ae8bb8f427c798805a0ce35b1724ced2ea7","unresolved":true,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":"\"\"\"create node.shard_key and shards table"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Revision ID: 4dbec778866e"},{"line_number":15,"context_line":"Revises: 9ef41f07cb58"},{"line_number":16,"context_line":"Create Date: 2022-11-10 14:20:59.175355"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# revision identifiers, used by Alembic."},{"line_number":21,"context_line":"revision \u003d \u00274dbec778866e\u0027"},{"line_number":22,"context_line":"down_revision \u003d \u00279ef41f07cb58\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from alembic import op"},{"line_number":25,"context_line":"import sqlalchemy as sa"}],"source_content_type":"text/x-python","patch_set":3,"id":"ca8a9f84_5501f083","line":22,"range":{"start_line":12,"start_character":0,"end_line":22,"end_character":30},"updated":"2022-11-16 19:45:41.000000000","message":"yeah, move this below the imports.","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0e92d0cf09dab825b478ca19320a57e74e34458a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":"\"\"\"create node.shard_key and shards table"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Revision ID: 4dbec778866e"},{"line_number":15,"context_line":"Revises: 9ef41f07cb58"},{"line_number":16,"context_line":"Create Date: 2022-11-10 14:20:59.175355"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"# revision identifiers, used by Alembic."},{"line_number":21,"context_line":"revision \u003d \u00274dbec778866e\u0027"},{"line_number":22,"context_line":"down_revision \u003d \u00279ef41f07cb58\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from alembic import op"},{"line_number":25,"context_line":"import sqlalchemy as sa"}],"source_content_type":"text/x-python","patch_set":3,"id":"0d99f2ec_8c5a8d60","line":22,"range":{"start_line":12,"start_character":0,"end_line":22,"end_character":30},"in_reply_to":"ca8a9f84_5501f083","updated":"2022-11-16 22:54:29.000000000","message":"Done","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5f4f1ae8bb8f427c798805a0ce35b1724ced2ea7","unresolved":true,"context_lines":[{"line_number":37,"context_line":"                    mysql_charset\u003d\u0027UTF8MB3\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    op.add_column(\u0027nodes\u0027, sa.Column(\u0027shard_key\u0027, sa.String(length\u003d255), nullable\u003dTrue))"},{"line_number":40,"context_line":"    op.create_index(\u0027shard_key_idx\u0027, \u0027nodes\u0027, [\u0027shard_key\u0027], unique\u003dFalse)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"74442d49_2b267941","line":40,"updated":"2022-11-16 19:45:41.000000000","message":"so just a thought, we likely *ought* (but don\u0027t have to) consider a compound shard key index with shard key *and* conductor_group. Then again, both should be fairly small so maybe it wouldn\u0027t matter.","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0e92d0cf09dab825b478ca19320a57e74e34458a","unresolved":true,"context_lines":[{"line_number":37,"context_line":"                    mysql_charset\u003d\u0027UTF8MB3\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    op.add_column(\u0027nodes\u0027, sa.Column(\u0027shard_key\u0027, sa.String(length\u003d255), nullable\u003dTrue))"},{"line_number":40,"context_line":"    op.create_index(\u0027shard_key_idx\u0027, \u0027nodes\u0027, [\u0027shard_key\u0027], unique\u003dFalse)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"b5d3d661_4639aa5a","line":40,"in_reply_to":"74442d49_2b267941","updated":"2022-11-16 22:54:29.000000000","message":"This implies it\u0027d be a valid configuration to have shards across conductor groups; that doesn\u0027t seem to fit well with my understanding of the nova side implementation.","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"d5b312a0831af961e5590d6597be38fb7f1386fe","unresolved":true,"context_lines":[{"line_number":37,"context_line":"                    mysql_charset\u003d\u0027UTF8MB3\u0027)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    op.add_column(\u0027nodes\u0027, sa.Column(\u0027shard_key\u0027, sa.String(length\u003d255), nullable\u003dTrue))"},{"line_number":40,"context_line":"    op.create_index(\u0027shard_key_idx\u0027, \u0027nodes\u0027, [\u0027shard_key\u0027], unique\u003dFalse)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"f8852dfa_03fa36f5","line":40,"in_reply_to":"b5d3d661_4639aa5a","updated":"2022-11-17 13:23:58.000000000","message":"It seems possible, I guess we also just leave it like this and if we do get reports then we can always add a compound index. The fact the column is still indexed in general will help queries.","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"5f4f1ae8bb8f427c798805a0ce35b1724ced2ea7","unresolved":true,"context_lines":[{"line_number":40,"context_line":"    op.create_index(\u0027shard_key_idx\u0027, \u0027nodes\u0027, [\u0027shard_key\u0027], unique\u003dFalse)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"d09676f4_282a8073","line":43,"in_reply_to":"49c4d1b1_0250418a","updated":"2022-11-16 19:45:41.000000000","message":"\u003e pep8: W391 blank line at end of file\n\nPlease fix.","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0e92d0cf09dab825b478ca19320a57e74e34458a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    op.create_index(\u0027shard_key_idx\u0027, \u0027nodes\u0027, [\u0027shard_key\u0027], unique\u003dFalse)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"de542974_195bcab0","line":43,"in_reply_to":"d09676f4_282a8073","updated":"2022-11-16 22:54:29.000000000","message":"Done","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"}],"ironic/db/sqlalchemy/api.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":"5f4f1ae8bb8f427c798805a0ce35b1724ced2ea7","unresolved":true,"context_lines":[{"line_number":2560,"context_line":"        #             assume the table will be static across queries."},{"line_number":2561,"context_line":"        with _session_for_read() as session:"},{"line_number":2562,"context_line":"            res \u003d session.execute(sa.select(models.Shard)).fetchall()"},{"line_number":2563,"context_line":"            if len(res) \u003d\u003d 0:"},{"line_number":2564,"context_line":"                # Return an empty list instead of a class with no objects."},{"line_number":2565,"context_line":"                return []"},{"line_number":2566,"context_line":"            return [r[0] for r in res]"}],"source_content_type":"text/x-python","patch_set":3,"id":"4dc97e4b_2f70976f","line":2565,"range":{"start_line":2563,"start_character":12,"end_line":2565,"end_character":25},"updated":"2022-11-16 19:45:41.000000000","message":"so I *think* the contents of the line below should result in an empty list [] if there is no item to iterate upon.","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0e92d0cf09dab825b478ca19320a57e74e34458a","unresolved":false,"context_lines":[{"line_number":2560,"context_line":"        #             assume the table will be static across queries."},{"line_number":2561,"context_line":"        with _session_for_read() as session:"},{"line_number":2562,"context_line":"            res \u003d session.execute(sa.select(models.Shard)).fetchall()"},{"line_number":2563,"context_line":"            if len(res) \u003d\u003d 0:"},{"line_number":2564,"context_line":"                # Return an empty list instead of a class with no objects."},{"line_number":2565,"context_line":"                return []"},{"line_number":2566,"context_line":"            return [r[0] for r in res]"}],"source_content_type":"text/x-python","patch_set":3,"id":"ea6c9a66_2c57bb3b","line":2565,"range":{"start_line":2563,"start_character":12,"end_line":2565,"end_character":25},"in_reply_to":"4dc97e4b_2f70976f","updated":"2022-11-16 22:54:29.000000000","message":"Done","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f75a3299b1605f974117d9e7de8770e5d2a3b590","unresolved":true,"context_lines":[{"line_number":2598,"context_line":"        \"\"\""},{"line_number":2599,"context_line":"        # Note(JayF): In a perfect world this would be sortable and paginated,"},{"line_number":2600,"context_line":"        #             but this is problematic if we\u0027re going to be atomically"},{"line_number":2601,"context_line":"        #             updating this table via periodic task -- so we can\u0027t"},{"line_number":2602,"context_line":"        #             assume the table will be static across queries."},{"line_number":2603,"context_line":"        with _session_for_read() as session:"},{"line_number":2604,"context_line":"            res \u003d session.execute(sa.text("},{"line_number":2605,"context_line":"                \"SELECT count(id), shard from nodes group by shard;\""}],"source_content_type":"text/x-python","patch_set":9,"id":"6e0d5a3a_6b2b2aae","line":2602,"range":{"start_line":2601,"start_character":0,"end_line":2602,"end_character":69},"updated":"2022-12-07 21:58:06.000000000","message":"nit: No periodic task anymore, and this is really an atomic interaction, and if we were to support pagination (difficult) or sorting(eh....)... then the results might not be the same a moment later. Well, at least for pagination since there is no marker to base the response handling on either.","commit_id":"b9ad690d07c5691ea326b290ab8eeb79bc21c8a0"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ee79c4958303d6e8bee280eb62d17f4d2d72c9da","unresolved":false,"context_lines":[{"line_number":2598,"context_line":"        \"\"\""},{"line_number":2599,"context_line":"        # Note(JayF): In a perfect world this would be sortable and paginated,"},{"line_number":2600,"context_line":"        #             but this is problematic if we\u0027re going to be atomically"},{"line_number":2601,"context_line":"        #             updating this table via periodic task -- so we can\u0027t"},{"line_number":2602,"context_line":"        #             assume the table will be static across queries."},{"line_number":2603,"context_line":"        with _session_for_read() as session:"},{"line_number":2604,"context_line":"            res \u003d session.execute(sa.text("},{"line_number":2605,"context_line":"                \"SELECT count(id), shard from nodes group by shard;\""}],"source_content_type":"text/x-python","patch_set":9,"id":"f46fc7e3_00658b88","line":2602,"range":{"start_line":2601,"start_character":0,"end_line":2602,"end_character":69},"in_reply_to":"6e0d5a3a_6b2b2aae","updated":"2022-12-08 17:12:45.000000000","message":"Done","commit_id":"b9ad690d07c5691ea326b290ab8eeb79bc21c8a0"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"ea713b8c7636814a5bf972c1d98f07af4fbe0b47","unresolved":true,"context_lines":[{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    # NOTE(dtantsur): don\u0027t forget to update the get_nodeinfo_list docstring"},{"line_number":395,"context_line":"    # in ironic/db/api.py when adding new filters!"},{"line_number":396,"context_line":"    _NODE_QUERY_FIELDS \u003d {\u0027console_enabled\u0027, \u0027maintenance\u0027, \u0027retired\u0027,"},{"line_number":397,"context_line":"                          \u0027driver\u0027, \u0027resource_class\u0027, \u0027provision_state\u0027,"},{"line_number":398,"context_line":"                          \u0027uuid\u0027, \u0027id\u0027, \u0027fault\u0027, \u0027conductor_group\u0027,"},{"line_number":399,"context_line":"                          \u0027owner\u0027, \u0027lessee\u0027, \u0027instance_uuid\u0027}"},{"line_number":400,"context_line":"    _NODE_IN_QUERY_FIELDS \u003d {\u0027%s_in\u0027 % field: field"},{"line_number":401,"context_line":"                             for field in (\u0027uuid\u0027, \u0027provision_state\u0027)}"},{"line_number":402,"context_line":"    _NODE_NON_NULL_FILTERS \u003d {\u0027associated\u0027: \u0027instance_uuid\u0027,"},{"line_number":403,"context_line":"                              \u0027reserved\u0027: \u0027reservation\u0027,"},{"line_number":404,"context_line":"                              \u0027with_power_state\u0027: \u0027power_state\u0027}"}],"source_content_type":"text/x-python","patch_set":17,"id":"c08ce811_6649354d","line":401,"range":{"start_line":396,"start_character":0,"end_line":401,"end_character":70},"updated":"2023-02-10 03:58:10.000000000","message":"Whether we support \u0027shard\u0027 and/or \u0027shard_in\u0027 they should be added here.","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"450bd9c18f067278b2735285d94ffeb25e2e6c03","unresolved":true,"context_lines":[{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    # NOTE(dtantsur): don\u0027t forget to update the get_nodeinfo_list docstring"},{"line_number":395,"context_line":"    # in ironic/db/api.py when adding new filters!"},{"line_number":396,"context_line":"    _NODE_QUERY_FIELDS \u003d {\u0027console_enabled\u0027, \u0027maintenance\u0027, \u0027retired\u0027,"},{"line_number":397,"context_line":"                          \u0027driver\u0027, \u0027resource_class\u0027, \u0027provision_state\u0027,"},{"line_number":398,"context_line":"                          \u0027uuid\u0027, \u0027id\u0027, \u0027fault\u0027, \u0027conductor_group\u0027,"},{"line_number":399,"context_line":"                          \u0027owner\u0027, \u0027lessee\u0027, \u0027instance_uuid\u0027}"},{"line_number":400,"context_line":"    _NODE_IN_QUERY_FIELDS \u003d {\u0027%s_in\u0027 % field: field"},{"line_number":401,"context_line":"                             for field in (\u0027uuid\u0027, \u0027provision_state\u0027)}"},{"line_number":402,"context_line":"    _NODE_NON_NULL_FILTERS \u003d {\u0027associated\u0027: \u0027instance_uuid\u0027,"},{"line_number":403,"context_line":"                              \u0027reserved\u0027: \u0027reservation\u0027,"},{"line_number":404,"context_line":"                              \u0027with_power_state\u0027: \u0027power_state\u0027}"}],"source_content_type":"text/x-python","patch_set":17,"id":"61a87c4e_8596db48","line":401,"range":{"start_line":396,"start_character":0,"end_line":401,"end_character":70},"in_reply_to":"032244f9_0f725059","updated":"2023-02-12 23:34:30.000000000","message":"If you feel strongly I\u0027ll pull that change (adding shard to _NODE_IN_QUERY_FIELDS) back to this patch, but I\u0027m not doing it now because I don\u0027t have time right now and would prefer not shifting things between two commits :)\n\nI\u0027ll also note; even though this is shard_in here (and from anyone using the DBAPI), the actual API query is still /v1/nodes?shard\u003dshard1,shard2,shard3.","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"2d39c43c0dbffea87ce9582945fdbcc7d5218c0f","unresolved":false,"context_lines":[{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    # NOTE(dtantsur): don\u0027t forget to update the get_nodeinfo_list docstring"},{"line_number":395,"context_line":"    # in ironic/db/api.py when adding new filters!"},{"line_number":396,"context_line":"    _NODE_QUERY_FIELDS \u003d {\u0027console_enabled\u0027, \u0027maintenance\u0027, \u0027retired\u0027,"},{"line_number":397,"context_line":"                          \u0027driver\u0027, \u0027resource_class\u0027, \u0027provision_state\u0027,"},{"line_number":398,"context_line":"                          \u0027uuid\u0027, \u0027id\u0027, \u0027fault\u0027, \u0027conductor_group\u0027,"},{"line_number":399,"context_line":"                          \u0027owner\u0027, \u0027lessee\u0027, \u0027instance_uuid\u0027}"},{"line_number":400,"context_line":"    _NODE_IN_QUERY_FIELDS \u003d {\u0027%s_in\u0027 % field: field"},{"line_number":401,"context_line":"                             for field in (\u0027uuid\u0027, \u0027provision_state\u0027)}"},{"line_number":402,"context_line":"    _NODE_NON_NULL_FILTERS \u003d {\u0027associated\u0027: \u0027instance_uuid\u0027,"},{"line_number":403,"context_line":"                              \u0027reserved\u0027: \u0027reservation\u0027,"},{"line_number":404,"context_line":"                              \u0027with_power_state\u0027: \u0027power_state\u0027}"}],"source_content_type":"text/x-python","patch_set":17,"id":"be8b44fb_7d9a723e","line":401,"range":{"start_line":396,"start_character":0,"end_line":401,"end_character":70},"in_reply_to":"61a87c4e_8596db48","updated":"2023-02-13 02:10:02.000000000","message":"eh, the first dbapi change doesn\u0027t need to be perfect on the api side, its fine adding it later in the series.","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1e5f9b66e84b9f3b89e8bd80453b79c586c25996","unresolved":true,"context_lines":[{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    # NOTE(dtantsur): don\u0027t forget to update the get_nodeinfo_list docstring"},{"line_number":395,"context_line":"    # in ironic/db/api.py when adding new filters!"},{"line_number":396,"context_line":"    _NODE_QUERY_FIELDS \u003d {\u0027console_enabled\u0027, \u0027maintenance\u0027, \u0027retired\u0027,"},{"line_number":397,"context_line":"                          \u0027driver\u0027, \u0027resource_class\u0027, \u0027provision_state\u0027,"},{"line_number":398,"context_line":"                          \u0027uuid\u0027, \u0027id\u0027, \u0027fault\u0027, \u0027conductor_group\u0027,"},{"line_number":399,"context_line":"                          \u0027owner\u0027, \u0027lessee\u0027, \u0027instance_uuid\u0027}"},{"line_number":400,"context_line":"    _NODE_IN_QUERY_FIELDS \u003d {\u0027%s_in\u0027 % field: field"},{"line_number":401,"context_line":"                             for field in (\u0027uuid\u0027, \u0027provision_state\u0027)}"},{"line_number":402,"context_line":"    _NODE_NON_NULL_FILTERS \u003d {\u0027associated\u0027: \u0027instance_uuid\u0027,"},{"line_number":403,"context_line":"                              \u0027reserved\u0027: \u0027reservation\u0027,"},{"line_number":404,"context_line":"                              \u0027with_power_state\u0027: \u0027power_state\u0027}"}],"source_content_type":"text/x-python","patch_set":17,"id":"e9e55a6b_e4bf43eb","line":401,"range":{"start_line":396,"start_character":0,"end_line":401,"end_character":70},"in_reply_to":"c08ce811_6649354d","updated":"2023-02-10 15:22:26.000000000","message":"This change comes in later. Have you looked at the other 3 patches in the chain?","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"70350b7f2d6b942ec55fb1949183d5597e3187e8","unresolved":true,"context_lines":[{"line_number":393,"context_line":""},{"line_number":394,"context_line":"    # NOTE(dtantsur): don\u0027t forget to update the get_nodeinfo_list docstring"},{"line_number":395,"context_line":"    # in ironic/db/api.py when adding new filters!"},{"line_number":396,"context_line":"    _NODE_QUERY_FIELDS \u003d {\u0027console_enabled\u0027, \u0027maintenance\u0027, \u0027retired\u0027,"},{"line_number":397,"context_line":"                          \u0027driver\u0027, \u0027resource_class\u0027, \u0027provision_state\u0027,"},{"line_number":398,"context_line":"                          \u0027uuid\u0027, \u0027id\u0027, \u0027fault\u0027, \u0027conductor_group\u0027,"},{"line_number":399,"context_line":"                          \u0027owner\u0027, \u0027lessee\u0027, \u0027instance_uuid\u0027}"},{"line_number":400,"context_line":"    _NODE_IN_QUERY_FIELDS \u003d {\u0027%s_in\u0027 % field: field"},{"line_number":401,"context_line":"                             for field in (\u0027uuid\u0027, \u0027provision_state\u0027)}"},{"line_number":402,"context_line":"    _NODE_NON_NULL_FILTERS \u003d {\u0027associated\u0027: \u0027instance_uuid\u0027,"},{"line_number":403,"context_line":"                              \u0027reserved\u0027: \u0027reservation\u0027,"},{"line_number":404,"context_line":"                              \u0027with_power_state\u0027: \u0027power_state\u0027}"}],"source_content_type":"text/x-python","patch_set":17,"id":"032244f9_0f725059","line":401,"range":{"start_line":396,"start_character":0,"end_line":401,"end_character":70},"in_reply_to":"e9e55a6b_e4bf43eb","updated":"2023-02-12 20:45:02.000000000","message":"I elaborated on this question here[1] but forgot to post the review\n\n[1] https://review.opendev.org/c/openstack/ironic/+/866235/23/ironic/api/controllers/v1/node.py#2306","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"ea713b8c7636814a5bf972c1d98f07af4fbe0b47","unresolved":true,"context_lines":[{"line_number":2592,"context_line":"    def get_shard_list(self):"},{"line_number":2593,"context_line":"        \"\"\"Return a list of shards."},{"line_number":2594,"context_line":""},{"line_number":2595,"context_line":"        :returns: A list of shards."},{"line_number":2596,"context_line":"        \"\"\""},{"line_number":2597,"context_line":"        # Note(JayF): This should never be a large enough list to require"},{"line_number":2598,"context_line":"        #             pagination. Furthermore, it wouldn\u0027t really be a sensible"}],"source_content_type":"text/x-python","patch_set":17,"id":"81f13347_bfb52a1c","line":2595,"updated":"2023-02-10 03:58:10.000000000","message":"Its more a list of dicts containing name and count keys, maybe this could elaborate a bit and be moved to ironic/db/api.py?\n\nI was going to suggest that this should be a real Shard class instead of a dict, but that seems too heavy.\n\nSince this list is returned directly by the API I would suggest that name and count be lower case, to be consistent with other attributes in the API.","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1e5f9b66e84b9f3b89e8bd80453b79c586c25996","unresolved":true,"context_lines":[{"line_number":2592,"context_line":"    def get_shard_list(self):"},{"line_number":2593,"context_line":"        \"\"\"Return a list of shards."},{"line_number":2594,"context_line":""},{"line_number":2595,"context_line":"        :returns: A list of shards."},{"line_number":2596,"context_line":"        \"\"\""},{"line_number":2597,"context_line":"        # Note(JayF): This should never be a large enough list to require"},{"line_number":2598,"context_line":"        #             pagination. Furthermore, it wouldn\u0027t really be a sensible"}],"source_content_type":"text/x-python","patch_set":17,"id":"b8b71981_ee18f7f3","line":2595,"in_reply_to":"81f13347_bfb52a1c","updated":"2023-02-10 15:22:26.000000000","message":"Ack","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"450bd9c18f067278b2735285d94ffeb25e2e6c03","unresolved":false,"context_lines":[{"line_number":2592,"context_line":"    def get_shard_list(self):"},{"line_number":2593,"context_line":"        \"\"\"Return a list of shards."},{"line_number":2594,"context_line":""},{"line_number":2595,"context_line":"        :returns: A list of shards."},{"line_number":2596,"context_line":"        \"\"\""},{"line_number":2597,"context_line":"        # Note(JayF): This should never be a large enough list to require"},{"line_number":2598,"context_line":"        #             pagination. Furthermore, it wouldn\u0027t really be a sensible"}],"source_content_type":"text/x-python","patch_set":17,"id":"dc28c0b0_bf20d2f2","line":2595,"in_reply_to":"b8b71981_ee18f7f3","updated":"2023-02-12 23:34:30.000000000","message":"Done","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"ea713b8c7636814a5bf972c1d98f07af4fbe0b47","unresolved":true,"context_lines":[{"line_number":2606,"context_line":"            return ["},{"line_number":2607,"context_line":"                {\"Name\": str(x[1]), \"Count\": x[0]}"},{"line_number":2608,"context_line":"                for x in res"},{"line_number":2609,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":17,"id":"167aef21_c4a2423d","line":2609,"updated":"2023-02-10 03:58:10.000000000","message":"It would be nice to sort this by something useful. Like descending count?","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"1e5f9b66e84b9f3b89e8bd80453b79c586c25996","unresolved":true,"context_lines":[{"line_number":2606,"context_line":"            return ["},{"line_number":2607,"context_line":"                {\"Name\": str(x[1]), \"Count\": x[0]}"},{"line_number":2608,"context_line":"                for x in res"},{"line_number":2609,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":17,"id":"f3b2e57c_41a1595b","line":2609,"in_reply_to":"167aef21_c4a2423d","updated":"2023-02-10 15:22:26.000000000","message":"Ack","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"450bd9c18f067278b2735285d94ffeb25e2e6c03","unresolved":false,"context_lines":[{"line_number":2606,"context_line":"            return ["},{"line_number":2607,"context_line":"                {\"Name\": str(x[1]), \"Count\": x[0]}"},{"line_number":2608,"context_line":"                for x in res"},{"line_number":2609,"context_line":"            ]"}],"source_content_type":"text/x-python","patch_set":17,"id":"a9c99b28_0b06c451","line":2609,"in_reply_to":"f3b2e57c_41a1595b","updated":"2023-02-12 23:34:30.000000000","message":"Done","commit_id":"f0bc674c031011b0650be9802f1ff9178fd4a3aa"}],"ironic/objects/node.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":"5f4f1ae8bb8f427c798805a0ce35b1724ced2ea7","unresolved":true,"context_lines":[{"line_number":343,"context_line":"            # version model updates. Driver and conductor_group are required"},{"line_number":344,"context_line":"            # for conductor mapping."},{"line_number":345,"context_line":"            # TODO(JayF): Remove this before merge"},{"line_number":346,"context_line":"            # QUESTION: Should we add shard_key to the list of required fields..."},{"line_number":347,"context_line":"            #           probably not? But it\u0027s worth getting other opinions."},{"line_number":348,"context_line":"            target_fields \u003d [\u0027id\u0027] + fields[:] + [\u0027version\u0027, \u0027updated_at\u0027,"},{"line_number":349,"context_line":"                                                  \u0027created_at\u0027, \u0027owner\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"81688f19_19b4370b","line":346,"updated":"2022-11-16 19:45:41.000000000","message":"Likely not... the list of fields are the minimal needed fields to apply higher level API logic. Like owner/lessee/driver/conductor_group all have higher level access logic if memory serves, so they are expected to be in every reply for anything.","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0e92d0cf09dab825b478ca19320a57e74e34458a","unresolved":false,"context_lines":[{"line_number":343,"context_line":"            # version model updates. Driver and conductor_group are required"},{"line_number":344,"context_line":"            # for conductor mapping."},{"line_number":345,"context_line":"            # TODO(JayF): Remove this before merge"},{"line_number":346,"context_line":"            # QUESTION: Should we add shard_key to the list of required fields..."},{"line_number":347,"context_line":"            #           probably not? But it\u0027s worth getting other opinions."},{"line_number":348,"context_line":"            target_fields \u003d [\u0027id\u0027] + fields[:] + [\u0027version\u0027, \u0027updated_at\u0027,"},{"line_number":349,"context_line":"                                                  \u0027created_at\u0027, \u0027owner\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"268a0bb6_086a85cd","line":346,"in_reply_to":"81688f19_19b4370b","updated":"2022-11-16 22:54:29.000000000","message":"Done","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2344863f981397cdcce139aefbac2ca8a1558681","unresolved":true,"context_lines":[{"line_number":171,"context_line":"        \u0027network_data\u0027: object_fields.FlexibleDictField(nullable\u003dTrue),"},{"line_number":172,"context_line":"        \u0027boot_mode\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":173,"context_line":"        \u0027secure_boot\u0027: object_fields.BooleanField(nullable\u003dTrue),"},{"line_number":174,"context_line":"        \u0027shard_key\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":175,"context_line":"    }"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def as_dict(self, secure\u003dFalse, mask_configdrive\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":5,"id":"c97fff10_f32ce268","line":174,"updated":"2022-11-22 22:06:48.000000000","message":"s/shard_key/shard/ according to the spec","commit_id":"9396d6d23eeab830f288992adf12c52903685463"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"9573235f94ea68b7e9aa13b9abb0c45bc658c4a6","unresolved":false,"context_lines":[{"line_number":171,"context_line":"        \u0027network_data\u0027: object_fields.FlexibleDictField(nullable\u003dTrue),"},{"line_number":172,"context_line":"        \u0027boot_mode\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":173,"context_line":"        \u0027secure_boot\u0027: object_fields.BooleanField(nullable\u003dTrue),"},{"line_number":174,"context_line":"        \u0027shard_key\u0027: object_fields.StringField(nullable\u003dTrue),"},{"line_number":175,"context_line":"    }"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def as_dict(self, secure\u003dFalse, mask_configdrive\u003dTrue):"}],"source_content_type":"text/x-python","patch_set":5,"id":"f9c645f6_67387f8a","line":174,"in_reply_to":"c97fff10_f32ce268","updated":"2022-11-29 16:58:09.000000000","message":"Done","commit_id":"9396d6d23eeab830f288992adf12c52903685463"}],"ironic/objects/shard.py":[{"author":{"_account_id":35099,"name":"Jakub Jelinek","email":"jakub.jelinek@cern.ch","username":"kubajj"},"change_message_id":"92b4b3968ab50223626c280e502b35442cb0353b","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        :raises: InvalidParameterValue"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        db_shards \u003d cls.dbapi.get_shard_list(limit\u003dlimit,"},{"line_number":55,"context_line":"                                             marker\u003dmarker,"},{"line_number":56,"context_line":"                                             sort_key\u003dsort_key,"},{"line_number":57,"context_line":"                                             sort_dir\u003dsort_dir)"},{"line_number":58,"context_line":"        return cls._from_db_object_list(context, db_shards)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ae939ad3_72570fbb","line":57,"range":{"start_line":54,"start_character":8,"end_line":57,"end_character":63},"updated":"2022-11-16 20:02:24.000000000","message":"I am not sure that this is right, but I think that you have just\n```def get_shard_list(self):```\nin the api. So do you need these parameters here?","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"0e92d0cf09dab825b478ca19320a57e74e34458a","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        :raises: InvalidParameterValue"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        \"\"\""},{"line_number":54,"context_line":"        db_shards \u003d cls.dbapi.get_shard_list(limit\u003dlimit,"},{"line_number":55,"context_line":"                                             marker\u003dmarker,"},{"line_number":56,"context_line":"                                             sort_key\u003dsort_key,"},{"line_number":57,"context_line":"                                             sort_dir\u003dsort_dir)"},{"line_number":58,"context_line":"        return cls._from_db_object_list(context, db_shards)"}],"source_content_type":"text/x-python","patch_set":3,"id":"53a673e2_f21c462f","line":57,"range":{"start_line":54,"start_character":8,"end_line":57,"end_character":63},"in_reply_to":"ae939ad3_72570fbb","updated":"2022-11-16 22:54:29.000000000","message":"Nope, just leftovers, nice catch.","commit_id":"44aa0be020187b93cbe0c49a703127f9572b17d1"}],"ironic/tests/unit/db/test_shard.py":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"2608d951478e2ef4e88f57895fd485432ab05254","unresolved":true,"context_lines":[{"line_number":38,"context_line":"    def test_get_shard_list(self):"},{"line_number":39,"context_line":"        self._create_test_shard_data()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        res \u003d self.dbapi.get_shard_list()"},{"line_number":42,"context_line":"        self.assertEqual({}, res)"}],"source_content_type":"text/x-python","patch_set":2,"id":"db872995_79398ec9","line":41,"updated":"2022-11-15 22:14:49.000000000","message":"This test is not complete, I obviously need to have a better fixture, but just trying to \"hello world\" the DBAPI code is failing.\n\nhttps://gist.github.com/jayofdoom/9171223f236759c2d0a9cf589f70d6e6\n\nany ideas?","commit_id":"fca576cacba8f8a649cfb28c45d55178dd3f2545"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"ac89f03145d341ad53710c7b9a6d73a276df7557","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    def test_get_shard_list(self):"},{"line_number":39,"context_line":"        self._create_test_shard_data()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"        res \u003d self.dbapi.get_shard_list()"},{"line_number":42,"context_line":"        self.assertEqual({}, res)"}],"source_content_type":"text/x-python","patch_set":2,"id":"469004ba_53372987","line":41,"in_reply_to":"db872995_79398ec9","updated":"2022-11-15 23:46:54.000000000","message":"Done","commit_id":"fca576cacba8f8a649cfb28c45d55178dd3f2545"}]}
