)]}'
{"/PATCHSET_LEVEL":[{"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":"22bc880a2eeb9c0eac8c29d2a27260090458482c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9b0a5d56_422a4d0e","updated":"2022-10-26 18:19:16.000000000","message":"I think there are some other gotchas we need to indicate here: such as when used with nova; shard key can\u0027t be changed.\n\nI may push a revision to this later this week.","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"1ffa0c5f2ea7aa10e495a88fa01cdf0d35fdf171","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"2da8e782_01fc286a","updated":"2022-11-11 09:52:32.000000000","message":"This looks to be evolving nicely from my perspective.\n\nI didn\u0027t expect to see the auto populating shard key in the v1, but that seems way nicer to work with. But I would totally be happy if all we got was the API get/set shard key, then auto populate came later (granted I don\u0027t fancy the microversion discussion around the behaviour change, so landing together sounds more efficient in that sense).","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"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":"eefd6527557f1bce316ec3378ff6bde038d0a1d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"aae5d1d8_1f7fba92","updated":"2022-11-08 20:48:37.000000000","message":"This seems ready for more feedback from the Ironic team outside of me/Julia/John","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51753beaed5803b3aaab0d4dad013e00c1a9bc5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"60e53955_0ca10b93","in_reply_to":"2da8e782_01fc286a","updated":"2022-11-15 23:39:47.000000000","message":"I\u0027d be all for just including it, but I think Jay just wants to get it done. Granted... this may also be a case where micro-version guarding that might be the wrong move, since the consumer capability/support is much more important in the grand scheme of the universe. Maybe just do it and document it... (or land it in rapid secession and move on in life.)","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"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":"00e5b22b10bfd5a2114783bf42495f6334548484","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"326402b8_136d1976","in_reply_to":"60e53955_0ca10b93","updated":"2022-11-15 23:45:22.000000000","message":"I was thinking more the \"land in rapid succession\" model here -- mainly I want us to have working API primitives ASAP so we have something to dev against in Nova. (Even if they all don\u0027t merge yet, that\u0027s fine too, I just think in general it\u0027s best to commit to an MVP and deliver more if we can).","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"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":"8b2547d45f85e79981e08687d398c4c6fc145997","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"0e8358fe_533b3e34","updated":"2022-11-16 00:04:41.000000000","message":"We probably need a blueprint or a story or something for this; right? ","commit_id":"90251a6328d9361799f670b47740dd165873d0bd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"cf33de5ee97f9cbb8ce2935536bcbdf1016f5484","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"78d30888_89b587cb","in_reply_to":"0e8358fe_533b3e34","updated":"2022-11-16 16:34:35.000000000","message":"On the change, not really, tbh. If we had a giant list I would say yes","commit_id":"90251a6328d9361799f670b47740dd165873d0bd"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ee806e80adf88ec17553c904d9e1e83ba3778127","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9673c9cd_806ba2fa","updated":"2022-11-16 17:35:31.000000000","message":"Sorry, not had chance to do a full proper review, but this looks good based on our previous discussions and ideas. I hope to spend a bit of time tomorrow morning revisitng this an the nova spec with any luck.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"effcb759f5431c119dd79ea3d90ac84031639dae","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"28d4a0cc_fc9c1441","in_reply_to":"9673c9cd_806ba2fa","updated":"2022-11-16 18:15:53.000000000","message":"Thanks John!","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"a7f1de3e_6252f003","updated":"2022-12-08 16:28:48.000000000","message":"Thanks! I think this is good but I\u0027m not sure. I was at the PTG when it was discussed with John, Dan, et al and if I recall, it makes sense. I think this spec might be missing some of the knowledge that was communicated.\n\nI suspect without too much work, that the same values for conductor groups COULD be used for shards.\n\nI guess one thing that this doesn\u0027t mention, is the maintenance/admin. I don\u0027t really grok how these shards (and growth of shards or whatever) maps into what the consumer wants/restrictions of the consumer. It seems like this info would be needed if ironic is going to auto-assign shards to ironic nodes? What happens if (or should or why would) an ironic node change shard values? Anyway, lots of interesting things to think about 😊","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b2b1612ab0ccd226b650a416f934eb882951535d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"d31c00ee_241c5c68","updated":"2022-12-09 18:17:50.000000000","message":"Somewhere, maybe not here, but before shards are actually used, we need to be clear/document the ramifications of changing the shard value of an ironic node. It is important to know what the API consumer expects, and that expectation might be dependent on the consumer (eg, might assume that they are never changed after being set).\n\nI\u0027m a bit concerned about not having a tighter/clearer description of how the shards in ironic COULD be used, vs how the consumer intends to use them, because if there is a mismatch, there will most likely be issues. I suspect that we won\u0027t know this until we get the nova spec done and try to align both of them...\n\nI forgot -- I believe we warn if there are shard fields that are set and some other shard fields not set. Do we allow for this mix? eg, if we consider \u0027none\u0027 a shard value, then we/ironic doesn\u0027t need to do anything (except at the lower level to support this \u0027none\u0027 or whatever value) about it to differentiate it from a shard value that is not \u0027none\u0027..., it is just a shard named \u0027none\u0027 ?","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"2f7bd005_994e7b54","updated":"2022-12-09 16:37:03.000000000","message":"Thanks! I have a clearer idea now. Would be good to get more feedback from others, but I think this is pretty close.","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":20,"id":"dcca256d_edaa7558","updated":"2022-12-12 18:33:37.000000000","message":"Thanks! Just need clarification of the \u0027POST /v1/nodes/node/shard\u0027 API.","commit_id":"f3995643c7f8fcbddc998812eea22b5f3d6497a8"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"32653021814c53c2bbc11392f4102103ab181d46","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":20,"id":"5f8cfdf0_0555fa93","in_reply_to":"dcca256d_edaa7558","updated":"2022-12-12 18:40:56.000000000","message":"yeah, looking at the code, that is just not a thing.","commit_id":"f3995643c7f8fcbddc998812eea22b5f3d6497a8"},{"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":"117aafef3f8249ffe005cbf8ff7487736a43dbdd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"16d07b69_0203c3a4","updated":"2022-12-14 16:12:40.000000000","message":"Emailed Arne to see if he had further comments, he said he was OK to land it:\n\n\u003e  I think all is sufficiently clear on either side ... my hope is that Ruby is right and this is a first step to address the real issue :)","commit_id":"7051899ef032663b3fec71bb4e0394c88c46a82d"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2a0d0a55c0b78ab2e004dfda9d5b228a4c7c789b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":22,"id":"7c5d5abd_d3c68011","updated":"2022-12-12 18:43:55.000000000","message":"Thanks! This should provide the basic plumbing needed to connect with nova 😄","commit_id":"7051899ef032663b3fec71bb4e0394c88c46a82d"}],"specs/approved/shard-key.rst":[{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"0546c03cf19b1a9b5838d3732356b327f7c84ee1","unresolved":true,"context_lines":[{"line_number":8,"context_line":"Shard Key Introduction"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"After much discussion and attempts to remedy the scalability issues other"},{"line_number":12,"context_line":"services, the consensus ha ssemingly been reached to introduce a sharding"},{"line_number":13,"context_line":"model wich would allow API consumsers to map and lock on to specific sets"},{"line_number":14,"context_line":"of baremetal nodes, regardless of if the relationship is semi-permenant"}],"source_content_type":"text/x-rst","patch_set":2,"id":"76f9c813_b398962c","line":11,"range":{"start_line":11,"start_character":61,"end_line":11,"end_character":73},"updated":"2022-10-19 20:19:12.000000000","message":"issues with other ?","commit_id":"1ce48c109020b64e54852bd5189aff165e2fc7cc"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"078d85e43204a3dbda938a954c1a0bb21623caed","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Shard Key Introduction"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"After much discussion and attempts to remedy the scalability issues other"},{"line_number":12,"context_line":"services, the consensus ha ssemingly been reached to introduce a sharding"},{"line_number":13,"context_line":"model wich would allow API consumsers to map and lock on to specific sets"},{"line_number":14,"context_line":"of baremetal nodes, regardless of if the relationship is semi-permenant"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e44278a0_a12ce072","line":11,"range":{"start_line":11,"start_character":61,"end_line":11,"end_character":73},"in_reply_to":"76f9c813_b398962c","updated":"2022-10-19 21:55:56.000000000","message":"Incomplete thought, rewrote the first part of the paragraph.","commit_id":"1ce48c109020b64e54852bd5189aff165e2fc7cc"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"0546c03cf19b1a9b5838d3732356b327f7c84ee1","unresolved":true,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"After much discussion and attempts to remedy the scalability issues other"},{"line_number":12,"context_line":"services, the consensus ha ssemingly been reached to introduce a sharding"},{"line_number":13,"context_line":"model wich would allow API consumsers to map and lock on to specific sets"},{"line_number":14,"context_line":"of baremetal nodes, regardless of if the relationship is semi-permenant"},{"line_number":15,"context_line":"or entirely situational. Only the consumer of the information performing"}],"source_content_type":"text/x-rst","patch_set":2,"id":"cbd8c4b4_c296e1e1","line":12,"range":{"start_line":12,"start_character":24,"end_line":12,"end_character":36},"updated":"2022-10-19 20:19:12.000000000","message":"typo","commit_id":"1ce48c109020b64e54852bd5189aff165e2fc7cc"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"078d85e43204a3dbda938a954c1a0bb21623caed","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"After much discussion and attempts to remedy the scalability issues other"},{"line_number":12,"context_line":"services, the consensus ha ssemingly been reached to introduce a sharding"},{"line_number":13,"context_line":"model wich would allow API consumsers to map and lock on to specific sets"},{"line_number":14,"context_line":"of baremetal nodes, regardless of if the relationship is semi-permenant"},{"line_number":15,"context_line":"or entirely situational. Only the consumer of the information performing"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7eeff8b9_4f832da1","line":12,"range":{"start_line":12,"start_character":24,"end_line":12,"end_character":36},"in_reply_to":"cbd8c4b4_c296e1e1","updated":"2022-10-19 21:55:56.000000000","message":"Rewrote this.","commit_id":"1ce48c109020b64e54852bd5189aff165e2fc7cc"},{"author":{"_account_id":24245,"name":"Harald Jensås","email":"hjensas@redhat.com","username":"harald.jensas"},"change_message_id":"0546c03cf19b1a9b5838d3732356b327f7c84ee1","unresolved":true,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Returns a subset of nodes limited by shard key."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"GET /v1/ports?shard\u003dVALUE"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Returns a subset of ports, limited by the shard key."},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9581b7ad_48ab68e0","line":161,"range":{"start_line":161,"start_character":20,"end_line":161,"end_character":25},"updated":"2022-10-19 20:19:12.000000000","message":"It would be good for networking-baremetal agent if this could be a list. I envision using the existing tooz hashring to get N shard keys for each instance of the agent.","commit_id":"1ce48c109020b64e54852bd5189aff165e2fc7cc"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"856bb054e3ee64988b5acc8d6ce674209a88c24e","unresolved":true,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Returns a subset of nodes limited by shard key."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"GET /v1/ports?shard\u003dVALUE"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Returns a subset of ports, limited by the shard key."},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"b7f76d18_0fe12198","line":161,"range":{"start_line":161,"start_character":20,"end_line":161,"end_character":25},"in_reply_to":"9581b7ad_48ab68e0","updated":"2022-10-19 21:05:57.000000000","message":"Good point. In the backend it would be a selectin query, which is not horrible :)","commit_id":"1ce48c109020b64e54852bd5189aff165e2fc7cc"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"078d85e43204a3dbda938a954c1a0bb21623caed","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":"Returns a subset of nodes limited by shard key."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"GET /v1/ports?shard\u003dVALUE"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Returns a subset of ports, limited by the shard key."},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"24134e4b_47a7930a","line":161,"range":{"start_line":161,"start_character":20,"end_line":161,"end_character":25},"in_reply_to":"b7f76d18_0fe12198","updated":"2022-10-19 21:55:56.000000000","message":"Resolving next draft indicates a list can be used.","commit_id":"1ce48c109020b64e54852bd5189aff165e2fc7cc"},{"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":"22bc880a2eeb9c0eac8c29d2a27260090458482c","unresolved":true,"context_lines":[{"line_number":14,"context_line":"``nova-compute`` and it\u0027s connection to Ironic in large scale deployments,"},{"line_number":15,"context_line":"and upon newly discovered indicators of ``networking-baremetal`` haing a"},{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model wich would"},{"line_number":18,"context_line":"allow API consumsers to map and lock on to specific sets of baremetal nodes,"},{"line_number":19,"context_line":"regardless of if the relationship is semi-permenant or entirely situational."},{"line_number":20,"context_line":"Only the consumer of the information performing processing can make that"}],"source_content_type":"text/x-rst","patch_set":6,"id":"92a2bf4b_25fc6626","line":17,"updated":"2022-10-26 18:19:16.000000000","message":"nit: which","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f60122d97db477915ac4d9942190f39e4ca5168","unresolved":false,"context_lines":[{"line_number":14,"context_line":"``nova-compute`` and it\u0027s connection to Ironic in large scale deployments,"},{"line_number":15,"context_line":"and upon newly discovered indicators of ``networking-baremetal`` haing a"},{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model wich would"},{"line_number":18,"context_line":"allow API consumsers to map and lock on to specific sets of baremetal nodes,"},{"line_number":19,"context_line":"regardless of if the relationship is semi-permenant or entirely situational."},{"line_number":20,"context_line":"Only the consumer of the information performing processing can make that"}],"source_content_type":"text/x-rst","patch_set":6,"id":"731b467b_ca003e0c","line":17,"in_reply_to":"92a2bf4b_25fc6626","updated":"2022-11-03 17:02:37.000000000","message":"Done","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"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":"22bc880a2eeb9c0eac8c29d2a27260090458482c","unresolved":true,"context_lines":[{"line_number":15,"context_line":"and upon newly discovered indicators of ``networking-baremetal`` haing a"},{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model wich would"},{"line_number":18,"context_line":"allow API consumsers to map and lock on to specific sets of baremetal nodes,"},{"line_number":19,"context_line":"regardless of if the relationship is semi-permenant or entirely situational."},{"line_number":20,"context_line":"Only the consumer of the information performing processing can make that"},{"line_number":21,"context_line":"determination, and it is up to Ironic to try and provide the substrate"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1896cb74_1572dd0c","line":18,"updated":"2022-10-26 18:19:16.000000000","message":"nit: consumers","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f60122d97db477915ac4d9942190f39e4ca5168","unresolved":false,"context_lines":[{"line_number":15,"context_line":"and upon newly discovered indicators of ``networking-baremetal`` haing a"},{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model wich would"},{"line_number":18,"context_line":"allow API consumsers to map and lock on to specific sets of baremetal nodes,"},{"line_number":19,"context_line":"regardless of if the relationship is semi-permenant or entirely situational."},{"line_number":20,"context_line":"Only the consumer of the information performing processing can make that"},{"line_number":21,"context_line":"determination, and it is up to Ironic to try and provide the substrate"}],"source_content_type":"text/x-rst","patch_set":6,"id":"c7b87334_af28473c","line":18,"in_reply_to":"1896cb74_1572dd0c","updated":"2022-11-03 17:02:37.000000000","message":"Done","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"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":"22bc880a2eeb9c0eac8c29d2a27260090458482c","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The reality is Ironic can be used at some absurd scales, and while"},{"line_number":28,"context_line":"*most* operators of Ironic either run multiple smaller Ironic deployments,"},{"line_number":29,"context_line":"some operate at a scale where external operations polling ironic may"},{"line_number":30,"context_line":"not be scaled in ideal configurations. It is also easy for misconfigurations"},{"line_number":31,"context_line":"to be made where performance can become degraded, which is because the scaling"},{"line_number":32,"context_line":"model and limits are difficult to understand easily."}],"source_content_type":"text/x-rst","patch_set":6,"id":"1b384a8f_df837c39","line":29,"updated":"2022-10-26 18:19:16.000000000","message":"nit: Ironic","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f60122d97db477915ac4d9942190f39e4ca5168","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The reality is Ironic can be used at some absurd scales, and while"},{"line_number":28,"context_line":"*most* operators of Ironic either run multiple smaller Ironic deployments,"},{"line_number":29,"context_line":"some operate at a scale where external operations polling ironic may"},{"line_number":30,"context_line":"not be scaled in ideal configurations. It is also easy for misconfigurations"},{"line_number":31,"context_line":"to be made where performance can become degraded, which is because the scaling"},{"line_number":32,"context_line":"model and limits are difficult to understand easily."}],"source_content_type":"text/x-rst","patch_set":6,"id":"d2fdd1e1_4a6f05a7","line":29,"in_reply_to":"1b384a8f_df837c39","updated":"2022-11-03 17:02:37.000000000","message":"Done","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"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":"22bc880a2eeb9c0eac8c29d2a27260090458482c","unresolved":true,"context_lines":[{"line_number":66,"context_line":"and only update the entries of they are considered \"stale\" by being longer"},{"line_number":67,"context_line":"than the periodic update window timer plus a skew of some sort."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Node creation logic would then be able to consult the shard\u0027s table"},{"line_number":70,"context_line":"and allocate a node to a random shard, or a less-utilized shard if not"},{"line_number":71,"context_line":"otherwise specified. This \"might\" need to be a tunable logic pattern,"},{"line_number":72,"context_line":"but most likely a 15% skew should be generally applicable."}],"source_content_type":"text/x-rst","patch_set":6,"id":"640172c8_15d95c60","line":69,"updated":"2022-10-26 18:19:16.000000000","message":"We should be careful with this; we probably want to err on the side of underprovisioning a shard; given the limitation from Nova we\u0027ll be dealing with starting out is that we can never move a node\u0027s shard.","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f60122d97db477915ac4d9942190f39e4ca5168","unresolved":true,"context_lines":[{"line_number":66,"context_line":"and only update the entries of they are considered \"stale\" by being longer"},{"line_number":67,"context_line":"than the periodic update window timer plus a skew of some sort."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Node creation logic would then be able to consult the shard\u0027s table"},{"line_number":70,"context_line":"and allocate a node to a random shard, or a less-utilized shard if not"},{"line_number":71,"context_line":"otherwise specified. This \"might\" need to be a tunable logic pattern,"},{"line_number":72,"context_line":"but most likely a 15% skew should be generally applicable."}],"source_content_type":"text/x-rst","patch_set":6,"id":"8497d6ea_db260ad2","line":69,"in_reply_to":"2bc375cb_ae9b09df","updated":"2022-11-03 17:02:37.000000000","message":"I think I\u0027ve clarified this sufficiently in the next revision.","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f3a88dccf62931f7d8a9ac3b29351b6adf838ed","unresolved":true,"context_lines":[{"line_number":66,"context_line":"and only update the entries of they are considered \"stale\" by being longer"},{"line_number":67,"context_line":"than the periodic update window timer plus a skew of some sort."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Node creation logic would then be able to consult the shard\u0027s table"},{"line_number":70,"context_line":"and allocate a node to a random shard, or a less-utilized shard if not"},{"line_number":71,"context_line":"otherwise specified. This \"might\" need to be a tunable logic pattern,"},{"line_number":72,"context_line":"but most likely a 15% skew should be generally applicable."}],"source_content_type":"text/x-rst","patch_set":6,"id":"2bc375cb_ae9b09df","line":69,"in_reply_to":"640172c8_15d95c60","updated":"2022-10-27 15:16:04.000000000","message":"Possibly, but it also is not horrible if we just round robin or fill and then round-robin until someone creates a new shard, and the shard key *can* change if it is done in concert with nova, hence the nova-manage command thought. Granted, we\u0027ll want that documented as \"use nova-manage\".","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51753beaed5803b3aaab0d4dad013e00c1a9bc5a","unresolved":false,"context_lines":[{"line_number":66,"context_line":"and only update the entries of they are considered \"stale\" by being longer"},{"line_number":67,"context_line":"than the periodic update window timer plus a skew of some sort."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Node creation logic would then be able to consult the shard\u0027s table"},{"line_number":70,"context_line":"and allocate a node to a random shard, or a less-utilized shard if not"},{"line_number":71,"context_line":"otherwise specified. This \"might\" need to be a tunable logic pattern,"},{"line_number":72,"context_line":"but most likely a 15% skew should be generally applicable."}],"source_content_type":"text/x-rst","patch_set":6,"id":"07148099_cd709349","line":69,"in_reply_to":"8497d6ea_db260ad2","updated":"2022-11-15 23:39:47.000000000","message":"Done","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"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":"eefd6527557f1bce316ec3378ff6bde038d0a1d0","unresolved":true,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Ultimately, each item should be discussed, and considered."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"One key apsect, which has been recognized thus far, is that existing"},{"line_number":122,"context_line":"mechanisms can be misused to achieve this. Example ``conductor_group``,"},{"line_number":123,"context_line":"``owner``, ``lessee`` all allow for filtering of the node result set."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"d9b6d57c_14f01bf9","line":121,"updated":"2022-11-08 20:48:37.000000000","message":"nit: aspect","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51753beaed5803b3aaab0d4dad013e00c1a9bc5a","unresolved":false,"context_lines":[{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Ultimately, each item should be discussed, and considered."},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"One key apsect, which has been recognized thus far, is that existing"},{"line_number":122,"context_line":"mechanisms can be misused to achieve this. Example ``conductor_group``,"},{"line_number":123,"context_line":"``owner``, ``lessee`` all allow for filtering of the node result set."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"bfb85c02_d4b548bb","line":121,"in_reply_to":"d9b6d57c_14f01bf9","updated":"2022-11-15 23:39:47.000000000","message":"Done","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"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":"22bc880a2eeb9c0eac8c29d2a27260090458482c","unresolved":true,"context_lines":[{"line_number":194,"context_line":"Data model impact"},{"line_number":195,"context_line":"-----------------"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Node: Addition of a ``shard_group`` column/value field, default None."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"A new table will be added, ``shards`` a simplified interface of two columns."},{"line_number":200,"context_line":"A shard key value and count value. It will not have a object table, it will"}],"source_content_type":"text/x-rst","patch_set":6,"id":"7834cd7f_fd13f206","line":197,"updated":"2022-10-26 18:19:16.000000000","message":"We should explicitly indicate this needs to be indexed imo","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f3a88dccf62931f7d8a9ac3b29351b6adf838ed","unresolved":true,"context_lines":[{"line_number":194,"context_line":"Data model impact"},{"line_number":195,"context_line":"-----------------"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Node: Addition of a ``shard_group`` column/value field, default None."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"A new table will be added, ``shards`` a simplified interface of two columns."},{"line_number":200,"context_line":"A shard key value and count value. It will not have a object table, it will"}],"source_content_type":"text/x-rst","patch_set":6,"id":"9795664e_83f1bc4e","line":197,"in_reply_to":"7834cd7f_fd13f206","updated":"2022-10-27 15:16:04.000000000","message":"++ Great point!","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f60122d97db477915ac4d9942190f39e4ca5168","unresolved":false,"context_lines":[{"line_number":194,"context_line":"Data model impact"},{"line_number":195,"context_line":"-----------------"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"Node: Addition of a ``shard_group`` column/value field, default None."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"A new table will be added, ``shards`` a simplified interface of two columns."},{"line_number":200,"context_line":"A shard key value and count value. It will not have a object table, it will"}],"source_content_type":"text/x-rst","patch_set":6,"id":"1030b4eb_32e5553e","line":197,"in_reply_to":"9795664e_83f1bc4e","updated":"2022-11-03 17:02:37.000000000","message":"Done","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"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":"22bc880a2eeb9c0eac8c29d2a27260090458482c","unresolved":true,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"GET /v1/nodes?shard\u003dVALUE"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"Returns a subset of nodes limited by shard key."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"26f25e59_ba36aa26","line":218,"updated":"2022-10-26 18:19:16.000000000","message":"Will we provide an API endpoint for \"all nodes with an empty/null shard\"?","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f3a88dccf62931f7d8a9ac3b29351b6adf838ed","unresolved":true,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"GET /v1/nodes?shard\u003dVALUE"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"Returns a subset of nodes limited by shard key."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"6cc98947_0e9e7014","line":218,"in_reply_to":"26f25e59_ba36aa26","updated":"2022-10-27 15:16:04.000000000","message":"The thought that coursed through my head was along the lines of: we \"could\" just treat \"null\" or \"none\" as a special key. None would be in-line with the way the text gets displayed from the python api clients for a null json field. The query API could be just smart enough to handle that.\n\nIf we do that, we would likely need to support unsetting the field via the api client so folks don\u0027t need to do db surgery if they mess up.\n\nLikely something we would need to figure out, and quite explicitly document.","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51753beaed5803b3aaab0d4dad013e00c1a9bc5a","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"GET /v1/nodes?shard\u003dVALUE"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"Returns a subset of nodes limited by shard key."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"1ceff964_ac06cebf","line":218,"in_reply_to":"56405901_40ef0181","updated":"2022-11-15 23:39:47.000000000","message":"Done","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f60122d97db477915ac4d9942190f39e4ca5168","unresolved":true,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"GET /v1/nodes?shard\u003dVALUE"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"Returns a subset of nodes limited by shard key."},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":221,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"56405901_40ef0181","line":218,"in_reply_to":"6cc98947_0e9e7014","updated":"2022-11-03 17:02:37.000000000","message":"Proposed an option which I\u0027ve floated to cover this, which also keeps the amount of API complexity to a minimum. It should also semi-align with the overall response object from the list.","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"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":"22bc880a2eeb9c0eac8c29d2a27260090458482c","unresolved":true,"context_lines":[{"line_number":255,"context_line":"A ``baremetal shard list`` command would be added."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"A ``--shard-group`` node level parameter for ``baremetal node set``"},{"line_number":258,"context_line":"woul also be added."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"\"openstacksdk\""},{"line_number":261,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":6,"id":"a332e7e5_f1acc0a1","line":258,"updated":"2022-10-26 18:19:16.000000000","message":"nit: would","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f60122d97db477915ac4d9942190f39e4ca5168","unresolved":false,"context_lines":[{"line_number":255,"context_line":"A ``baremetal shard list`` command would be added."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"A ``--shard-group`` node level parameter for ``baremetal node set``"},{"line_number":258,"context_line":"woul also be added."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"\"openstacksdk\""},{"line_number":261,"context_line":"~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":6,"id":"fd02ee0b_8a3c1e22","line":258,"in_reply_to":"a332e7e5_f1acc0a1","updated":"2022-11-03 17:02:37.000000000","message":"Done","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"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":"22bc880a2eeb9c0eac8c29d2a27260090458482c","unresolved":true,"context_lines":[{"line_number":385,"context_line":"---------------------"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"It *is* recognized that operators *may* wish to auto-assign or auto-shard"},{"line_number":388,"context_line":"the node set. It is presently anticipaed that we either should do this"},{"line_number":389,"context_line":"automatically where pertinant, *OR* require a manual command to be executed"},{"line_number":390,"context_line":"which handles node locking and shard key setting."},{"line_number":391,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"c1a2fe4b_fc1902fe","line":388,"updated":"2022-10-26 18:19:16.000000000","message":"nit: anticipated","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"9f60122d97db477915ac4d9942190f39e4ca5168","unresolved":false,"context_lines":[{"line_number":385,"context_line":"---------------------"},{"line_number":386,"context_line":""},{"line_number":387,"context_line":"It *is* recognized that operators *may* wish to auto-assign or auto-shard"},{"line_number":388,"context_line":"the node set. It is presently anticipaed that we either should do this"},{"line_number":389,"context_line":"automatically where pertinant, *OR* require a manual command to be executed"},{"line_number":390,"context_line":"which handles node locking and shard key setting."},{"line_number":391,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"d18a0441_35064fcb","line":388,"in_reply_to":"c1a2fe4b_fc1902fe","updated":"2022-11-03 17:02:37.000000000","message":"Done","commit_id":"16efaa10242881eb66ac33ac9eac3b94f92855e6"},{"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":"94452184ad2d321cf4bf1bd3ab42d740d9f94588","unresolved":true,"context_lines":[{"line_number":203,"context_line":"-----------------"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Node: Addition of a ``shard_group`` column/value field, indexed,"},{"line_number":206,"context_line":"      with a default value of None."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":209,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"be8e427e_f9523449","line":206,"updated":"2022-11-10 19:17:07.000000000","message":"Last-updated is in the API response, but missing from the data model.","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"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":"00e5b22b10bfd5a2114783bf42495f6334548484","unresolved":false,"context_lines":[{"line_number":203,"context_line":"-----------------"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Node: Addition of a ``shard_group`` column/value field, indexed,"},{"line_number":206,"context_line":"      with a default value of None."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":209,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"a4d1f1fc_86a6c0f0","line":206,"in_reply_to":"9628f245_35e71bf3","updated":"2022-11-15 23:45:22.000000000","message":"As I learned today :D","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51753beaed5803b3aaab0d4dad013e00c1a9bc5a","unresolved":true,"context_lines":[{"line_number":203,"context_line":"-----------------"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Node: Addition of a ``shard_group`` column/value field, indexed,"},{"line_number":206,"context_line":"      with a default value of None."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":209,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"9628f245_35e71bf3","line":206,"in_reply_to":"be8e427e_f9523449","updated":"2022-11-15 23:39:47.000000000","message":"Ahh, it is a get for free field.","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"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":"e340817f74695ea75a6fd1dab9beb7fdcbe82203","unresolved":true,"context_lines":[{"line_number":239,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":240,"context_line":"to the database to facilitate it."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"GET /v1/shards"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":245,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":10,"id":"d2fd34e0_728e9b28","line":242,"updated":"2022-11-10 23:43:21.000000000","message":"So; based on this, we are not going to have a separate idea of PUT /v1/shards as a prerequisite to creating a shard.\n\nSo this means the only way to create a shard is to add node[\u0027shard_key\u0027]. What do we do if a shard gets created (e.g. baremetal node update set shard_key\u003dbanana) and then later remove that shard_key from all nodes (e.g. baremetal node update set shard_key\u003dnull or similar). \n\nShould we keep:\nName: Banana\nCount: 0\nLast-Updated: $TIME\n\nin the DB, or should that row be deleted? \n\nIMO we should consider deleting the row to prevent this table growing unbounded; but I also feel like is an extreme edge case; so YAGNI?","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":239,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":240,"context_line":"to the database to facilitate it."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"GET /v1/shards"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":245,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":10,"id":"30a18284_06b08d4c","line":242,"in_reply_to":"0da08c02_f20e7da4","updated":"2022-12-09 16:37:03.000000000","message":"I reviewed this initially with the understanding that we would have a db table that included all the shard values. But we don\u0027t. So some of the discussion above is moot. The only way to create a shard value, is to actually set it in one or more ironic nodes. and that shard value disappears if no ironic node refers to it.\n\nWithout a definitive list of shard keys, this could lead to some problems, esp if humans modify/set the value. Even with some automated process, how would the automation know to add a new shard value vs using an existing shard value for a new ironic node? Might be worth adding something about what is outside the scope of this spec. Eg, are we trying to get the plumbing (support for a new \u0027shard\u0027 field in an ironic node) done. And defer any automated way of assigning shard values to ironic nodes to later/different spec?","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":239,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":240,"context_line":"to the database to facilitate it."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"GET /v1/shards"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":245,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":10,"id":"726749da_2bbffc5f","line":242,"in_reply_to":"2d25965d_0fcbe306","updated":"2022-12-08 16:28:48.000000000","message":"i\u0027m still reading but I feel like Jay and Julia have some knowledge that hasn\u0027t been written down yet in this spec. I haven\u0027t yet grokked the process/how folks will be setting the node\u0027s shard value etc. My naive thought would be that some admin decides, when creating a cluster, that they will be handling 1000 nodes and that eg each nova-compute can handle 100 ironic nodes. So they may want to populate the shard table with 10 shard keys, and then let whatever algorithm (I thought it was mentioned in this spec) randomly assign shard values when an ironic node is created... OR if not using the algorithm, that admin can let the humans that manually enter ironic nodes, to use shard-key-X because (I know, you don\u0027t want to hear this) they also decided that each shard key would mean more than a random thing...\n\nI\u0027m not really sure why we\u0027d remove a shard key that no ironic node is referring to...","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":true,"context_lines":[{"line_number":239,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":240,"context_line":"to the database to facilitate it."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"GET /v1/shards"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":245,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":10,"id":"afcb9ac6_06f93331","line":242,"in_reply_to":"30a18284_06b08d4c","updated":"2022-12-09 23:10:27.000000000","message":"I don\u0027t think we would ever create new shard keys automatically.\n\nNova wants it to be compute hostnames.... :\\\n\nAugmenting \"Other deployer impact\"","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":239,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":240,"context_line":"to the database to facilitate it."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"GET /v1/shards"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":245,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":10,"id":"0da08c02_f20e7da4","line":242,"in_reply_to":"726749da_2bbffc5f","updated":"2022-12-08 20:53:50.000000000","message":"So right now, the act of setting it seems like it would be manual, but once shards are created I think the next logical step is to allow nodes to be auto-allocated across shards so an operator doesn\u0027t have to do a thing and set it upfront. But that is beyond the initial functionality needed to make the interface for Nova.","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":239,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":240,"context_line":"to the database to facilitate it."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"GET /v1/shards"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":245,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":10,"id":"3ff274be_0906ca6d","line":242,"in_reply_to":"afcb9ac6_06f93331","updated":"2022-12-12 17:37:36.000000000","message":"Done","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"adedc55b74879b5a92a48b8106a711a9d825f884","unresolved":true,"context_lines":[{"line_number":239,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":240,"context_line":"to the database to facilitate it."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"GET /v1/shards"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":245,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":10,"id":"2d25965d_0fcbe306","line":242,"in_reply_to":"d2fd34e0_728e9b28","updated":"2022-11-16 16:30:50.000000000","message":"Correct, no PUT /v1/shards so we just keep the overall interaction light and user freeform.\n\nI think we only represent the state of the database which means the old shard key should disappear imho from the GET /v1/shards/ IF we don\u0027t, we have to do row level manipulation. It would make the counting/updating a bit more complicated and there would be no way to delete the orphaned shard out from the list.. and then clients would need to be aware of that and account for it.","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"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":"c850c3469386ff3a1c1cafb25c98dbeeeea2f13e","unresolved":true,"context_lines":[{"line_number":239,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":240,"context_line":"to the database to facilitate it."},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"GET /v1/shards"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":245,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":10,"id":"0ec9a0e2_2c3329c2","line":242,"in_reply_to":"d2fd34e0_728e9b28","updated":"2022-11-15 23:49:29.000000000","message":"Julia and I talked about this in IRC; we decided it\u0027s best for this entire table to be updated atomically -- which means keys with a count of 0 would disappear.","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"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":"94452184ad2d321cf4bf1bd3ab42d740d9f94588","unresolved":true,"context_lines":[{"line_number":401,"context_line":"automatically where pertinant, *OR* require a manual command to be executed"},{"line_number":402,"context_line":"which handles node locking and shard key setting."},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"This may require a new configuration option, to determine the desirable"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"Developer impact"},{"line_number":407,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"aba36eea_8eefed76","line":404,"updated":"2022-11-10 19:17:07.000000000","message":"this trails off to nothing","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51753beaed5803b3aaab0d4dad013e00c1a9bc5a","unresolved":false,"context_lines":[{"line_number":401,"context_line":"automatically where pertinant, *OR* require a manual command to be executed"},{"line_number":402,"context_line":"which handles node locking and shard key setting."},{"line_number":403,"context_line":""},{"line_number":404,"context_line":"This may require a new configuration option, to determine the desirable"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"Developer impact"},{"line_number":407,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"bf1564b3_843b856c","line":404,"in_reply_to":"aba36eea_8eefed76","updated":"2022-11-15 23:39:47.000000000","message":"Done","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"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":"eefd6527557f1bce316ec3378ff6bde038d0a1d0","unresolved":true,"context_lines":[{"line_number":415,"context_line":"-----------"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"Primary assignee:"},{"line_number":418,"context_line":"  TBD"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"Other contributors:"},{"line_number":421,"context_line":"  TBD"}],"source_content_type":"text/x-rst","patch_set":10,"id":"7ea9c266_34f3960e","line":418,"updated":"2022-11-08 20:48:37.000000000","message":"At least me? + potentially others?","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"51753beaed5803b3aaab0d4dad013e00c1a9bc5a","unresolved":false,"context_lines":[{"line_number":415,"context_line":"-----------"},{"line_number":416,"context_line":""},{"line_number":417,"context_line":"Primary assignee:"},{"line_number":418,"context_line":"  TBD"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"Other contributors:"},{"line_number":421,"context_line":"  TBD"}],"source_content_type":"text/x-rst","patch_set":10,"id":"1cc6b0f0_49fbb4a6","line":418,"in_reply_to":"7ea9c266_34f3960e","updated":"2022-11-15 23:39:47.000000000","message":"Done","commit_id":"c66b0d58b60b2bc46ec8c216e3931658eed74589"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":11,"context_line":"https://storyboard.openstack.org/#!/story/2010378"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"After much discussion and attempts to remedy the scalability issues with"},{"line_number":14,"context_line":"``nova-compute`` and it\u0027s connection to Ironic in large scale deployments,"},{"line_number":15,"context_line":"and upon newly discovered indicators of ``networking-baremetal`` haing a"},{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model which would"}],"source_content_type":"text/x-rst","patch_set":14,"id":"066cbec1_098b1adf","line":14,"range":{"start_line":14,"start_character":21,"end_line":14,"end_character":25},"updated":"2022-11-17 20:38:33.000000000","message":"nit: its","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"https://storyboard.openstack.org/#!/story/2010378"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"After much discussion and attempts to remedy the scalability issues with"},{"line_number":14,"context_line":"``nova-compute`` and it\u0027s connection to Ironic in large scale deployments,"},{"line_number":15,"context_line":"and upon newly discovered indicators of ``networking-baremetal`` haing a"},{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model which would"}],"source_content_type":"text/x-rst","patch_set":14,"id":"f3c02ab9_4182e670","line":14,"range":{"start_line":14,"start_character":21,"end_line":14,"end_character":25},"in_reply_to":"066cbec1_098b1adf","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"After much discussion and attempts to remedy the scalability issues with"},{"line_number":14,"context_line":"``nova-compute`` and it\u0027s connection to Ironic in large scale deployments,"},{"line_number":15,"context_line":"and upon newly discovered indicators of ``networking-baremetal`` haing a"},{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model which would"},{"line_number":18,"context_line":"allow API consumers to map and lock on to specific sets of baremetal nodes,"}],"source_content_type":"text/x-rst","patch_set":14,"id":"d0e28c8f_70de001a","line":15,"range":{"start_line":15,"start_character":65,"end_line":15,"end_character":70},"updated":"2022-11-17 20:38:33.000000000","message":"nit: having","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"After much discussion and attempts to remedy the scalability issues with"},{"line_number":14,"context_line":"``nova-compute`` and it\u0027s connection to Ironic in large scale deployments,"},{"line_number":15,"context_line":"and upon newly discovered indicators of ``networking-baremetal`` haing a"},{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model which would"},{"line_number":18,"context_line":"allow API consumers to map and lock on to specific sets of baremetal nodes,"}],"source_content_type":"text/x-rst","patch_set":14,"id":"c465d092_20551317","line":15,"range":{"start_line":15,"start_character":65,"end_line":15,"end_character":70},"in_reply_to":"d0e28c8f_70de001a","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model which would"},{"line_number":18,"context_line":"allow API consumers to map and lock on to specific sets of baremetal nodes,"},{"line_number":19,"context_line":"regardless of if the relationship is semi-permenant or entirely situational."},{"line_number":20,"context_line":"Only the consumer of the information performing processing can make that"},{"line_number":21,"context_line":"determination, and it is up to Ironic to try and provide the substrate"},{"line_number":22,"context_line":"capabilities to efficiently operate against it\u0027s API."}],"source_content_type":"text/x-rst","patch_set":14,"id":"88949b6c_0a048153","line":19,"range":{"start_line":19,"start_character":42,"end_line":19,"end_character":51},"updated":"2022-11-17 20:38:33.000000000","message":"nit: permanent","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":16,"context_line":"similar scaling issue, the community has started to reach an agreement on"},{"line_number":17,"context_line":"a path forward. Specifically, to introduce a sharding model which would"},{"line_number":18,"context_line":"allow API consumers to map and lock on to specific sets of baremetal nodes,"},{"line_number":19,"context_line":"regardless of if the relationship is semi-permenant or entirely situational."},{"line_number":20,"context_line":"Only the consumer of the information performing processing can make that"},{"line_number":21,"context_line":"determination, and it is up to Ironic to try and provide the substrate"},{"line_number":22,"context_line":"capabilities to efficiently operate against it\u0027s API."}],"source_content_type":"text/x-rst","patch_set":14,"id":"adf9edea_bf95320c","line":19,"range":{"start_line":19,"start_character":42,"end_line":19,"end_character":51},"in_reply_to":"88949b6c_0a048153","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":19,"context_line":"regardless of if the relationship is semi-permenant or entirely situational."},{"line_number":20,"context_line":"Only the consumer of the information performing processing can make that"},{"line_number":21,"context_line":"determination, and it is up to Ironic to try and provide the substrate"},{"line_number":22,"context_line":"capabilities to efficiently operate against it\u0027s API."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Problem description"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"095438e9_3df3078e","line":22,"range":{"start_line":22,"start_character":44,"end_line":22,"end_character":48},"updated":"2022-11-17 20:38:33.000000000","message":"nit: its","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"regardless of if the relationship is semi-permenant or entirely situational."},{"line_number":20,"context_line":"Only the consumer of the information performing processing can make that"},{"line_number":21,"context_line":"determination, and it is up to Ironic to try and provide the substrate"},{"line_number":22,"context_line":"capabilities to efficiently operate against it\u0027s API."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Problem description"},{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7126b8dd_c48d8b8b","line":22,"range":{"start_line":22,"start_character":44,"end_line":22,"end_character":48},"in_reply_to":"095438e9_3df3078e","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":29,"context_line":"some operate at a scale where external operations polling Ironic may"},{"line_number":30,"context_line":"not be scaled in ideal configurations. It is also easy for misconfigurations"},{"line_number":31,"context_line":"to be made where performance can become degraded, which is because the scaling"},{"line_number":32,"context_line":"model and limits are difficult to understand easily."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"This is observable with the operation of Nova\u0027s Compute process when running"},{"line_number":35,"context_line":"the ``nova.virt.ironic`` driver. It is operationally easy to get into"}],"source_content_type":"text/x-rst","patch_set":14,"id":"6fbccce0_0c93dd39","line":32,"range":{"start_line":32,"start_character":44,"end_line":32,"end_character":51},"updated":"2022-11-17 20:38:33.000000000","message":"suggestion: \"difficult to understand easily\" --\u003e \"difficult to understand\"","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":29,"context_line":"some operate at a scale where external operations polling Ironic may"},{"line_number":30,"context_line":"not be scaled in ideal configurations. It is also easy for misconfigurations"},{"line_number":31,"context_line":"to be made where performance can become degraded, which is because the scaling"},{"line_number":32,"context_line":"model and limits are difficult to understand easily."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"This is observable with the operation of Nova\u0027s Compute process when running"},{"line_number":35,"context_line":"the ``nova.virt.ironic`` driver. It is operationally easy to get into"}],"source_content_type":"text/x-rst","patch_set":14,"id":"672dd747_060cdd90","line":32,"range":{"start_line":32,"start_character":44,"end_line":32,"end_character":51},"in_reply_to":"6fbccce0_0c93dd39","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"And then introduce a database table which is updated via a periodic task,"},{"line_number":63,"context_line":"to allow API consumers to discover the available shard keys from a periodic"},{"line_number":64,"context_line":"programattic survey of the keys. This table update periodic would be executed"},{"line_number":65,"context_line":"on all conductors, although be modeled to also skip upon a deadlock state,"},{"line_number":66,"context_line":"and only update the entries of they are considered \"stale\" by being longer"},{"line_number":67,"context_line":"than the periodic update window timer plus a skew of some sort."}],"source_content_type":"text/x-rst","patch_set":14,"id":"fd331b55_ca6d6426","line":64,"range":{"start_line":64,"start_character":1,"end_line":64,"end_character":12},"updated":"2022-11-17 20:38:33.000000000","message":"nit: programmatic","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"And then introduce a database table which is updated via a periodic task,"},{"line_number":63,"context_line":"to allow API consumers to discover the available shard keys from a periodic"},{"line_number":64,"context_line":"programattic survey of the keys. This table update periodic would be executed"},{"line_number":65,"context_line":"on all conductors, although be modeled to also skip upon a deadlock state,"},{"line_number":66,"context_line":"and only update the entries of they are considered \"stale\" by being longer"},{"line_number":67,"context_line":"than the periodic update window timer plus a skew of some sort."}],"source_content_type":"text/x-rst","patch_set":14,"id":"58a56698_37368c05","line":64,"range":{"start_line":64,"start_character":1,"end_line":64,"end_character":12},"in_reply_to":"fd331b55_ca6d6426","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":63,"context_line":"to allow API consumers to discover the available shard keys from a periodic"},{"line_number":64,"context_line":"programattic survey of the keys. This table update periodic would be executed"},{"line_number":65,"context_line":"on all conductors, although be modeled to also skip upon a deadlock state,"},{"line_number":66,"context_line":"and only update the entries of they are considered \"stale\" by being longer"},{"line_number":67,"context_line":"than the periodic update window timer plus a skew of some sort."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Node creation logic would then be able to consult the shard table"}],"source_content_type":"text/x-rst","patch_set":14,"id":"f5a0811f_6dbbd369","line":66,"range":{"start_line":66,"start_character":28,"end_line":66,"end_character":30},"updated":"2022-11-17 20:38:33.000000000","message":"nit: if","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":63,"context_line":"to allow API consumers to discover the available shard keys from a periodic"},{"line_number":64,"context_line":"programattic survey of the keys. This table update periodic would be executed"},{"line_number":65,"context_line":"on all conductors, although be modeled to also skip upon a deadlock state,"},{"line_number":66,"context_line":"and only update the entries of they are considered \"stale\" by being longer"},{"line_number":67,"context_line":"than the periodic update window timer plus a skew of some sort."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Node creation logic would then be able to consult the shard table"}],"source_content_type":"text/x-rst","patch_set":14,"id":"0eb61d76_ede02294","line":66,"range":{"start_line":66,"start_character":28,"end_line":66,"end_character":30},"in_reply_to":"f5a0811f_6dbbd369","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Example 1:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* Shard-10, Shard-11, and Shard-13 exists, and all nodes are assigned"},{"line_number":78,"context_line":"  to these shards. In this case, substantial numbers which would"},{"line_number":79,"context_line":"  imply an imbalance."},{"line_number":80,"context_line":"* Operator creates a node with a ``shard_group`` of \"Shard-14\""}],"source_content_type":"text/x-rst","patch_set":14,"id":"448da12e_d6a2bbed","line":77,"range":{"start_line":77,"start_character":35,"end_line":77,"end_character":41},"updated":"2022-11-17 20:38:33.000000000","message":"nit: exist","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Example 1:"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"* Shard-10, Shard-11, and Shard-13 exists, and all nodes are assigned"},{"line_number":78,"context_line":"  to these shards. In this case, substantial numbers which would"},{"line_number":79,"context_line":"  imply an imbalance."},{"line_number":80,"context_line":"* Operator creates a node with a ``shard_group`` of \"Shard-14\""}],"source_content_type":"text/x-rst","patch_set":14,"id":"b2d9db2a_f857c67c","line":77,"range":{"start_line":77,"start_character":35,"end_line":77,"end_character":41},"in_reply_to":"448da12e_d6a2bbed","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how ot reduce the workset. For example, ``networking-baremetal``"},{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."},{"line_number":100,"context_line":"Whereas, ``nova-compute`` needs the field to remain static, that is unless"},{"line_number":101,"context_line":"``nova-compute`` or some other API consumer were to request the"}],"source_content_type":"text/x-rst","patch_set":14,"id":"17128b5b_3f34efd5","line":98,"range":{"start_line":98,"start_character":14,"end_line":98,"end_character":16},"updated":"2022-11-17 20:38:33.000000000","message":"nit: to","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how ot reduce the workset. For example, ``networking-baremetal``"},{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."},{"line_number":100,"context_line":"Whereas, ``nova-compute`` needs the field to remain static, that is unless"},{"line_number":101,"context_line":"``nova-compute`` or some other API consumer were to request the"}],"source_content_type":"text/x-rst","patch_set":14,"id":"8e722281_03187419","line":98,"range":{"start_line":98,"start_character":14,"end_line":98,"end_character":16},"in_reply_to":"17128b5b_3f34efd5","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":128,"context_line":"allow clients to self delineate *without* first downloading the *entire* node"},{"line_number":129,"context_line":"list first. Which in itself, is a known scaling challenge."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"}],"source_content_type":"text/x-rst","patch_set":14,"id":"065a39d9_0756a04f","line":131,"range":{"start_line":131,"start_character":0,"end_line":131,"end_character":24},"updated":"2022-11-17 20:38:33.000000000","message":"heh, this is *exactly* what I asked myself when coming to this point :-D","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":false,"context_lines":[{"line_number":128,"context_line":"allow clients to self delineate *without* first downloading the *entire* node"},{"line_number":129,"context_line":"list first. Which in itself, is a known scaling challenge."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"}],"source_content_type":"text/x-rst","patch_set":14,"id":"f32eb472_c4ead94c","line":131,"range":{"start_line":131,"start_character":0,"end_line":131,"end_character":24},"in_reply_to":"065a39d9_0756a04f","updated":"2022-12-09 23:10:27.000000000","message":"I think we\u0027ve explained this. :)","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7b27063f_cb89e5c8","line":136,"range":{"start_line":135,"start_character":38,"end_line":136,"end_character":58},"updated":"2022-11-17 20:38:33.000000000","message":"The fact it was meant for this initially does not mean it cannot be used for something else. We used it *only* for the scaling benefits.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":true,"context_lines":[{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"}],"source_content_type":"text/x-rst","patch_set":14,"id":"28c6b362_258cf807","line":136,"range":{"start_line":135,"start_character":38,"end_line":136,"end_character":58},"in_reply_to":"0fd15a4a_55946aa9","updated":"2022-12-09 23:10:27.000000000","message":"Ultimately, Arne\u0027s configuration doesn\u0027t need to change and he doesn\u0027t need to use this feature if he wants to keep his 1-1 Ironic Conductor/Nova-Compute pairs in place. He would eventually loose \"HA\" capabilities in nova-compute with the direction they are discussing, but I don\u0027t think they (Arne\u0027s configuration) uses multiple nova-computes for a single conductor_group of ironic nodes today.\n\nIn terms of a future API, I don\u0027t see why we would create a meta API to set/query both fields with one action when the fields have specific meanings, it is just a union of capability.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dff87e107db3ec3b21f1807cc8909bae0c30a702","unresolved":true,"context_lines":[{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"}],"source_content_type":"text/x-rst","patch_set":14,"id":"80b7ca5a_ccc481d3","line":136,"range":{"start_line":135,"start_character":38,"end_line":136,"end_character":58},"in_reply_to":"28c6b362_258cf807","updated":"2022-12-12 15:58:52.000000000","message":"At the time I commented, it wasn\u0027t yet clear what APIs were going to be available. Sorry -- I didn\u0027t mean for an API to implicitly set both. I meant an API like \u0027baremetal node set --shard foo --conductor-group foo ironic-node\u0027 which I believe we will have :)","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"}],"source_content_type":"text/x-rst","patch_set":14,"id":"0fd15a4a_55946aa9","line":136,"range":{"start_line":135,"start_character":38,"end_line":136,"end_character":58},"in_reply_to":"2c571ec5_ad901ba9","updated":"2022-12-09 16:37:03.000000000","message":"so if this spec (or future add ons) provide the API to do this, maybe that would satisfy Arne\u0027s questions/desire to use conductor groups?","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f4d443a527f287400d968d3ba6372f54a7d55101","unresolved":true,"context_lines":[{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ccd4013d_65d440d5","line":136,"range":{"start_line":135,"start_character":38,"end_line":136,"end_character":58},"in_reply_to":"7b27063f_cb89e5c8","updated":"2022-11-17 22:46:40.000000000","message":"Yeah, but in the PTG it was *very* clear the nova folks didn\u0027t want to commit to any nova-compute running more than a few hundred \"instances\" where as conductor group is an entirely different scaling model.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"}],"source_content_type":"text/x-rst","patch_set":14,"id":"2c571ec5_ad901ba9","line":136,"range":{"start_line":135,"start_character":38,"end_line":136,"end_character":58},"in_reply_to":"b88a016a_dd6da961","updated":"2022-12-08 20:53:50.000000000","message":"Yes, it would be entirely possible.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"}],"source_content_type":"text/x-rst","patch_set":14,"id":"b88a016a_dd6da961","line":136,"range":{"start_line":135,"start_character":38,"end_line":136,"end_character":58},"in_reply_to":"ccd4013d_65d440d5","updated":"2022-12-08 16:28:48.000000000","message":"I\u0027m still reading but wanted to mention before I forgot. I think, at the very least, that one could set the ironic-node.conductor_group and ironic-node.shard values to be the same... ?","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5107e61e_cead618a","line":142,"range":{"start_line":142,"start_character":0,"end_line":142,"end_character":10},"updated":"2022-11-17 20:38:33.000000000","message":"nit: recognized","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"}],"source_content_type":"text/x-rst","patch_set":14,"id":"130c485f_88759d21","line":142,"range":{"start_line":142,"start_character":0,"end_line":142,"end_character":10},"in_reply_to":"5107e61e_cead618a","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"}],"source_content_type":"text/x-rst","patch_set":14,"id":"4cc6f5c2_473b453a","line":152,"range":{"start_line":151,"start_character":38,"end_line":152,"end_character":22},"updated":"2022-11-17 20:38:33.000000000","message":"there is something wrong with this sentence :)","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"}],"source_content_type":"text/x-rst","patch_set":14,"id":"0747f6f3_2e8b279e","line":152,"range":{"start_line":151,"start_character":38,"end_line":152,"end_character":22},"in_reply_to":"2747aced_3084d1ef","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f4d443a527f287400d968d3ba6372f54a7d55101","unresolved":true,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"}],"source_content_type":"text/x-rst","patch_set":14,"id":"2747aced_3084d1ef","line":152,"range":{"start_line":151,"start_character":38,"end_line":152,"end_character":22},"in_reply_to":"4cc6f5c2_473b453a","updated":"2022-11-17 22:46:40.000000000","message":"Well, client as in nova-compute! 😂","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"583d8cbd_8085c47e","line":159,"range":{"start_line":159,"start_character":42,"end_line":159,"end_character":73},"updated":"2022-11-17 20:38:33.000000000","message":"that could change, no?","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"44b578ca_024a12d8","line":159,"range":{"start_line":159,"start_character":42,"end_line":159,"end_character":73},"in_reply_to":"46915e0a_a2ffa824","updated":"2022-12-12 17:37:36.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f4d443a527f287400d968d3ba6372f54a7d55101","unresolved":true,"context_lines":[{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"46915e0a_a2ffa824","line":159,"range":{"start_line":159,"start_character":42,"end_line":159,"end_character":73},"in_reply_to":"583d8cbd_8085c47e","updated":"2022-11-17 22:46:40.000000000","message":"Disjointed from this, I don\u0027t see why not.  Even with, I think the use would be mutually exclusive.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"},{"line_number":146,"context_line":"operators have also encountered issues with this use pattern as well that"},{"line_number":147,"context_line":"we hope to avoid with a shard key implementation."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"},{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Why not owner or lessee?"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":14,"id":"9d233f3d_fe1db552","line":161,"range":{"start_line":134,"start_character":0,"end_line":161,"end_character":61},"updated":"2022-11-17 20:38:33.000000000","message":"I\u0027m sorry, I don\u0027t get why conductor groups cannot be used for this:\n- add an API to get the groups (shard keys)\n- upon node creation, assign a node to a group (shard) as proposed by looking at the current distribution\n- allow to set the node\u0027s conductor group (shard), (already there)\n- use them for physical location and scaling: Europe_1, Europe_2, NY_1, NY_2, ...\n\nCan you give an example where conductor groups would not work maybe?\n\nI\u0027m really worried having two very similar mechanisms of which one (conductor groups) can address the purpose (scalability) of the other (shard keys) is not helpful for operators if we cannot make clear when to use which one and why we do have two in the first place.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"64874e77fc588d35279d7b92cb48b2252f2b92c5","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"},{"line_number":146,"context_line":"operators have also encountered issues with this use pattern as well that"},{"line_number":147,"context_line":"we hope to avoid with a shard key implementation."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"},{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Why not owner or lessee?"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":14,"id":"546d2f18_6d40b1f7","line":161,"range":{"start_line":134,"start_character":0,"end_line":161,"end_character":61},"in_reply_to":"14781e03_7fcb5514","updated":"2022-11-21 18:26:57.000000000","message":"\u003e This can be helped with the new DR and operating model Nova is discussing. They envision a deployment with 10000 nodes.\n\nWhat is DR?\n\n\u003e \n\u003e They envision more an operating model of no more than 500 \"instances\" assigned to a nova compute, generally ~250 nodes. This would translate to 40 shards needing to be configured, which means 40 distinct nova-compute processes could be executed to track the nodes and update status.\n\nWe have 10k nodes \u0026 25 nova-computes ... we can ofc add more resources and ~double them as well to reduce the discovery time (as they envision), but the *real* problem is the serial nature of the resource tracker and the way it stores data for the nodes (as pointed out many times). Are there plans to change this?\n\nMoving to shard keys will not make any difference here, will it?\n\n\n\u003e \n\u003e \u003e \n\u003e \u003e b) moving nodes between conductor groups (instantiated or not) creates havoc.\n\u003e \u003e \n\u003e \u003e Does the proposed sharding help with any of these or pave the way to a solution?\n\u003e \n\u003e Sort of yes. We\u0027ll have a tool, but it will require the source nova-compute process to be offline. The new logic will also have some guarding logic to *not* delete the compute node anymore if it thinks it has disappeared. Since we can ask ironic \"is this still at thing?\" and respond accordingly.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7c60feeded77fc577f0a06da49c8f8a42e4a9d56","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"},{"line_number":146,"context_line":"operators have also encountered issues with this use pattern as well that"},{"line_number":147,"context_line":"we hope to avoid with a shard key implementation."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"},{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Why not owner or lessee?"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":14,"id":"550a4149_b2c67a63","line":161,"range":{"start_line":134,"start_character":0,"end_line":161,"end_character":61},"in_reply_to":"48316836_c16834ff","updated":"2022-11-17 21:27:59.000000000","message":"Thanks, Jay! Maybe it is too late and I should just re-read, but how do we overcome nova\u0027s scaling issues by adding shards (i.e. by the option to retrieve subsets of nodes) which could not be done with conductor groups (and retrieving subsets)? Conductors scale already better, how does making them scale even more help with large nova deployments (which I think is the main use case)?\n\n(Apologies if I should really just re-read ... it is getting really late :))","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"642b5eb0ad79e241d4b8c9ed9ecbf0a1d8cbc255","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"},{"line_number":146,"context_line":"operators have also encountered issues with this use pattern as well that"},{"line_number":147,"context_line":"we hope to avoid with a shard key implementation."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"},{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Why not owner or lessee?"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7026a23a_2120ec32","line":161,"range":{"start_line":134,"start_character":0,"end_line":161,"end_character":61},"in_reply_to":"546d2f18_6d40b1f7","updated":"2022-11-21 20:05:30.000000000","message":"\u003e \u003e This can be helped with the new DR and operating model Nova is discussing. They envision a deployment with 10000 nodes.\n\u003e \n\u003e What is DR?\n\nDisaster Recovery model.\n\nBasically they want to get rid of the hash ring in the nova-compute code, so operators, for ensured uptime will need to handle failover/handling themselves to match the CONF.host value.\n\u003e \n\u003e \u003e \n\u003e \u003e They envision more an operating model of no more than 500 \"instances\" assigned to a nova compute, generally ~250 nodes. This would translate to 40 shards needing to be configured, which means 40 distinct nova-compute processes could be executed to track the nodes and update status.\n\u003e \n\u003e We have 10k nodes \u0026 25 nova-computes ... we can ofc add more resources and ~double them as well to reduce the discovery time (as they envision), but the *real* problem is the serial nature of the resource tracker and the way it stores data for the nodes (as pointed out many times). Are there plans to change this?\n\nThere are no plans to change this. 😭 Think of this as the compromise none of us wanted.\n\n\u003e \n\u003e Moving to shard keys will not make any difference here, will it?\n\u003e \n\u003e \n\nFor your deployment, not really. You\u0027ll just be able to disjoint conductor groups if you choose to migrate.\n\n\u003e \u003e \n\u003e \u003e \u003e \n\u003e \u003e \u003e b) moving nodes between conductor groups (instantiated or not) creates havoc.\n\u003e \u003e \u003e \n\u003e \u003e \u003e Does the proposed sharding help with any of these or pave the way to a solution?\n\u003e \u003e \n\u003e \u003e Sort of yes. We\u0027ll have a tool, but it will require the source nova-compute process to be offline. The new logic will also have some guarding logic to *not* delete the compute node anymore if it thinks it has disappeared. Since we can ask ironic \"is this still at thing?\" and respond accordingly.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"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":"aa60cc115253cfc5e17797dc4e34c921d1a59358","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"},{"line_number":146,"context_line":"operators have also encountered issues with this use pattern as well that"},{"line_number":147,"context_line":"we hope to avoid with a shard key implementation."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"},{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Why not owner or lessee?"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":14,"id":"84c03a0a_3dc80a71","line":161,"range":{"start_line":134,"start_character":0,"end_line":161,"end_character":61},"in_reply_to":"550a4149_b2c67a63","updated":"2022-11-17 21:38:56.000000000","message":"I think you read it backwards.\n\nLets talk about a 10k node cluster; and say that nova-computes can handle ~1k nodes per machine and conductors can handle ~2.5k nodes per machine. These are numbers that are made up, and only exist to demonstrate my understanding that a single conductor can (generally, depending on how quickly you cycle them) handle 2x+ the nodes a nova-compute can.\n\n--example--\n\n---with conductor groups---\n\nIn a world where I use conductor groups to scale:\n1k nodes (max a nova-compute can handle) in group1, group1 needs at least 2 conductors for HA so you have two conductors; you\u0027d also need 2 nova-computes for HA, so you\u0027d end up with 40 total management services after getting to group 10 (each group needs 2x conductor, 2x compute)\n\n---with shard key instead---\n\nIn a world where I use shard_keys to scale, separate from conductor group (assuming an install where conductor groups are generally not desired or needed):\n1k nodes in shard1 (2 nova-computes)\n...to shard10, giving me a total of 20 nova-compute services\n\nHowever; because now I can take the load of all 10k nodes and put them into a single conductor group, I can get away with only needing 5 or 6 conductor services running (4*2.5k + 1 or 2 extra for HA).\n\n--end example--\n\n\nThese scaling numbers are somewhat made up, but demonstrate the fact that nova-compute and ironic-conductors scale differently: generally speaking; you can handle a large number of managed nodes on a single ironic-conductor for use cases where nodes are not redeployed frequently. That lack of churn barely even impacts how well nova-compute can scale, which is generally limited by how quickly a nova-compute can download and access all nodes it\u0027s managing.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f4d443a527f287400d968d3ba6372f54a7d55101","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"},{"line_number":146,"context_line":"operators have also encountered issues with this use pattern as well that"},{"line_number":147,"context_line":"we hope to avoid with a shard key implementation."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"},{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Why not owner or lessee?"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bd2cb5c9_cf45f90a","line":161,"range":{"start_line":134,"start_character":0,"end_line":161,"end_character":61},"in_reply_to":"84c03a0a_3dc80a71","updated":"2022-11-17 22:46:40.000000000","message":"Well, not download, but cycle and update resource tracker/placement.\n\nI think Jay does demonstrate it really quite well. The other aspect is Nova wants to nuke the hash ring code out of Nova as it is viewed as the root of all user experience nightmares with ironic. To be truthful, it combined with our state changes make this difficult in the nova model where things are always static and in the nova spec which will use the shard keys, it at least should have the stability moving forward when lined up with the shard keys.\n\nThe plus side of all of this, the conductor_group query capability won\u0027t disappear from nova. And a command will get introduced to fix the records in nova...","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"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":"ad297c352b69f97eaa988837c31239779d8e487d","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"},{"line_number":146,"context_line":"operators have also encountered issues with this use pattern as well that"},{"line_number":147,"context_line":"we hope to avoid with a shard key implementation."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"},{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Why not owner or lessee?"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":14,"id":"48316836_c16834ff","line":161,"range":{"start_line":134,"start_character":0,"end_line":161,"end_character":61},"in_reply_to":"9d233f3d_fe1db552","updated":"2022-11-17 20:48:05.000000000","message":"Conductor groups require you to separate your conductor capacity. Conductors scale MUCH higher than nova-compute instances. These are two separate scaling curves, and beyond any sort of API-cleanliness argument (reusing conductor groups is ugly from this perspective IMO), we should not force users at scale to overprovision and maintain separate groups of conductors.\n\nI am extremely opposed to tying the maximum size of a conductor cluster to the maximum amount of nodes that a nova-compute can handle.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"79c5470a432a58d6fb6d49a541ade37094e4dd89","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"},{"line_number":146,"context_line":"operators have also encountered issues with this use pattern as well that"},{"line_number":147,"context_line":"we hope to avoid with a shard key implementation."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"},{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Why not owner or lessee?"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":14,"id":"ed266481_13c87b3b","line":161,"range":{"start_line":134,"start_character":0,"end_line":161,"end_character":61},"in_reply_to":"bd2cb5c9_cf45f90a","updated":"2022-11-18 07:18:11.000000000","message":"I run a deployment which is *very* close to the example. The issue is not to find a few VMs to run the Ironic control plan for 10k nodes (and I guess it is not for anyone at this scale). The scaling problems I have are:\n\na) it takes the combined system Nova+Ironic too long to find a node when it moves to available (b/c of the resource tracker), and\n\nb) moving nodes between conductor groups (instantiated or not) creates havoc.\n\nDoes the proposed sharding help with any of these or pave the way to a solution?","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"dc11f938e25ce572b43e107011f2cabd0a591bf2","unresolved":true,"context_lines":[{"line_number":131,"context_line":"Why not Conductor Group?"},{"line_number":132,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"It is important to stress similiarity wise, this *is* similar to conductor"},{"line_number":135,"context_line":"groups, however conductor groups were primarily purposed to model the physical"},{"line_number":136,"context_line":"constraints and structure of the baremetal infrastructure."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"For example, if you have a set of conductors in Europe, and a set of"},{"line_number":139,"context_line":"conductors in New York, you don\u0027t want to try and run a deploy for servers"},{"line_number":140,"context_line":"in New York, from Europe. Part of the attractiveness for this to be exposed"},{"line_number":141,"context_line":"or used in Nova, was *also* to align the physical structure. The immediately"},{"line_number":142,"context_line":"recongized bonus to operators was the list of nodes was limited to the running"},{"line_number":143,"context_line":"``nova-compute`` process, if so configured. It is known to the Ironic community"},{"line_number":144,"context_line":"that some infrastructure operators *have* utilized this setting and field to"},{"line_number":145,"context_line":"facilitate scaling of their ``nova-compute`` infrastructure, however these"},{"line_number":146,"context_line":"operators have also encountered issues with this use pattern as well that"},{"line_number":147,"context_line":"we hope to avoid with a shard key implementation."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Where the needs are different with this effort and the pre-existing"},{"line_number":150,"context_line":"conductor groups, is that conductor groups are part of the hash ring modeling"},{"line_number":151,"context_line":"behavior where as in the shards model, we need to be disjointed client centric"},{"line_number":152,"context_line":"sharding model because it is the consumers of the API can use to determine"},{"line_number":153,"context_line":"their work in logical chunks. Consumers *may* also care about the"},{"line_number":154,"context_line":"``conductor_group`` in addition to the shard because needing to geographically"},{"line_number":155,"context_line":"delineate is separate from needing smaller \"chunks\" of work, or in this"},{"line_number":156,"context_line":"case \"groups of baremetal nodes\" for which a running process is responsible"},{"line_number":157,"context_line":"for."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":160,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":161,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Why not owner or lessee?"},{"line_number":164,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":14,"id":"14781e03_7fcb5514","line":161,"range":{"start_line":134,"start_character":0,"end_line":161,"end_character":61},"in_reply_to":"ed266481_13c87b3b","updated":"2022-11-21 18:03:04.000000000","message":"\u003e I run a deployment which is *very* close to the example. The issue is not to find a few VMs to run the Ironic control plan for 10k nodes (and I guess it is not for anyone at this scale). The scaling problems I have are:\n\u003e \n\u003e a) it takes the combined system Nova+Ironic too long to find a node when it moves to available (b/c of the resource tracker), and\n\nThis can be helped with the new DR and operating model Nova is discussing. They envision a deployment with 10000 nodes.\n\nThey envision more an operating model of no more than 500 \"instances\" assigned to a nova compute, generally ~250 nodes. This would translate to 40 shards needing to be configured, which means 40 distinct nova-compute processes could be executed to track the nodes and update status.\n\n\u003e \n\u003e b) moving nodes between conductor groups (instantiated or not) creates havoc.\n\u003e \n\u003e Does the proposed sharding help with any of these or pave the way to a solution?\n\nSort of yes. We\u0027ll have a tool, but it will require the source nova-compute process to be offline. The new logic will also have some guarding logic to *not* delete the compute node anymore if it thinks it has disappeared. Since we can ask ironic \"is this still at thing?\" and respond accordingly.","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Nova\u0027s Compute service enumerates through every node, using a list generated"},{"line_number":189,"context_line":"upon one query, and it gets *most* of the data it needs to track/interact"},{"line_number":190,"context_line":"with a node, keeping the more costly single, single node requests to a"},{"line_number":191,"context_line":"minimal. If that client had to track things, it would still have to pull"},{"line_number":192,"context_line":"a full list, and then it would have to reconcile, track, and map individual"},{"line_number":193,"context_line":"nodes. We\u0027ve already seen this as not working using a Hashring."}],"source_content_type":"text/x-rst","patch_set":14,"id":"9c431284_8095f1e2","line":190,"range":{"start_line":190,"start_character":37,"end_line":190,"end_character":51},"updated":"2022-11-17 20:38:33.000000000","message":"nit: double single?","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Nova\u0027s Compute service enumerates through every node, using a list generated"},{"line_number":189,"context_line":"upon one query, and it gets *most* of the data it needs to track/interact"},{"line_number":190,"context_line":"with a node, keeping the more costly single, single node requests to a"},{"line_number":191,"context_line":"minimal. If that client had to track things, it would still have to pull"},{"line_number":192,"context_line":"a full list, and then it would have to reconcile, track, and map individual"},{"line_number":193,"context_line":"nodes. We\u0027ve already seen this as not working using a Hashring."}],"source_content_type":"text/x-rst","patch_set":14,"id":"51c8ae55_38f1db93","line":190,"range":{"start_line":190,"start_character":37,"end_line":190,"end_character":51},"in_reply_to":"9c431284_8095f1e2","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":192,"context_line":"a full list, and then it would have to reconcile, track, and map individual"},{"line_number":193,"context_line":"nodes. We\u0027ve already seen this as not working using a Hashring."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Similarlly, ``networking-baremetal`` lists all ports. That is all it needs,"},{"line_number":196,"context_line":"but it has no concept of smaller chunking, blocks, or even enough information"},{"line_number":197,"context_line":"*to* really make a hashring which would represent existing models. To just"},{"line_number":198,"context_line":"expect the client to \"figure it out\" and to \"deal with that complexity\","}],"source_content_type":"text/x-rst","patch_set":14,"id":"d3192304_b7a6c40b","line":195,"range":{"start_line":195,"start_character":0,"end_line":195,"end_character":11},"updated":"2022-11-17 20:38:33.000000000","message":"nit: Similarly","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"b285eb3dd554022fd158805d50f585a60231dc9b","unresolved":false,"context_lines":[{"line_number":192,"context_line":"a full list, and then it would have to reconcile, track, and map individual"},{"line_number":193,"context_line":"nodes. We\u0027ve already seen this as not working using a Hashring."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Similarlly, ``networking-baremetal`` lists all ports. That is all it needs,"},{"line_number":196,"context_line":"but it has no concept of smaller chunking, blocks, or even enough information"},{"line_number":197,"context_line":"*to* really make a hashring which would represent existing models. To just"},{"line_number":198,"context_line":"expect the client to \"figure it out\" and to \"deal with that complexity\","}],"source_content_type":"text/x-rst","patch_set":14,"id":"ec7a71d9_71e34ce4","line":195,"range":{"start_line":195,"start_character":0,"end_line":195,"end_character":11},"in_reply_to":"d3192304_b7a6c40b","updated":"2022-11-21 18:20:33.000000000","message":"Done","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"bf693a4b00219e0d2c28aed5721e8da4cfe3e38b","unresolved":true,"context_lines":[{"line_number":419,"context_line":"-----------"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Primary assignee:"},{"line_number":422,"context_line":"  Jay Faulknor (JayF)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"Other contributors:"},{"line_number":425,"context_line":"  Julia Kreger (TheJulia)"}],"source_content_type":"text/x-rst","patch_set":14,"id":"cf43cae9_368cc9b9","line":422,"range":{"start_line":422,"start_character":6,"end_line":422,"end_character":14},"updated":"2022-11-17 20:38:33.000000000","message":"Faulkner","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":419,"context_line":"-----------"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Primary assignee:"},{"line_number":422,"context_line":"  Jay Faulknor (JayF)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"Other contributors:"},{"line_number":425,"context_line":"  Julia Kreger (TheJulia)"}],"source_content_type":"text/x-rst","patch_set":14,"id":"09b91d1a_697bee9b","line":422,"range":{"start_line":422,"start_character":6,"end_line":422,"end_character":14},"in_reply_to":"5b4b3dd0_201642c0","updated":"2022-12-08 20:53:50.000000000","message":"Resolved","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"f4d443a527f287400d968d3ba6372f54a7d55101","unresolved":true,"context_lines":[{"line_number":419,"context_line":"-----------"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Primary assignee:"},{"line_number":422,"context_line":"  Jay Faulknor (JayF)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"Other contributors:"},{"line_number":425,"context_line":"  Julia Kreger (TheJulia)"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5b4b3dd0_201642c0","line":422,"range":{"start_line":422,"start_character":6,"end_line":422,"end_character":14},"in_reply_to":"7a839d86_a4427c6a","updated":"2022-11-17 22:46:40.000000000","message":"Oh wow, I feel bad now! Sorry Jay!","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"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":"ad297c352b69f97eaa988837c31239779d8e487d","unresolved":true,"context_lines":[{"line_number":419,"context_line":"-----------"},{"line_number":420,"context_line":""},{"line_number":421,"context_line":"Primary assignee:"},{"line_number":422,"context_line":"  Jay Faulknor (JayF)"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"Other contributors:"},{"line_number":425,"context_line":"  Julia Kreger (TheJulia)"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7a839d86_a4427c6a","line":422,"range":{"start_line":422,"start_character":6,"end_line":422,"end_character":14},"in_reply_to":"cf43cae9_368cc9b9","updated":"2022-11-17 20:48:05.000000000","message":"Haha, I missed this one :D","commit_id":"1c95507f4df7ebc88bba9141930d9b0cdf7988c0"},{"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":"ce8568569b493f25d707c91010298168abdc8274","unresolved":true,"context_lines":[{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"},{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."}],"source_content_type":"text/x-rst","patch_set":15,"id":"bf037a76_03f68ff6","line":96,"updated":"2022-11-22 22:12:40.000000000","message":"I implemented this as shard_key; I should fix it in that patch.","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"644a7d971c6afa210180efc5b5a5f0f9a119e0fe","unresolved":false,"context_lines":[{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"},{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."}],"source_content_type":"text/x-rst","patch_set":15,"id":"972f6c6f_9a0ebb8b","line":96,"in_reply_to":"bf037a76_03f68ff6","updated":"2022-11-29 19:20:31.000000000","message":"Done","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"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":"ce8568569b493f25d707c91010298168abdc8274","unresolved":true,"context_lines":[{"line_number":105,"context_line":"restrict changes such that the system itself or a appropriately scoped"},{"line_number":106,"context_line":"(i.e. administrative) user can change the field."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"In this model, conductors do not care about the shard key except"},{"line_number":109,"context_line":"for the purpose of keeping track of the ``shards`` table. Each"},{"line_number":110,"context_line":"conductor has a period task with a skew, which triggers, checks"},{"line_number":111,"context_line":"the table, and performs a table update if the table\u0027s contents"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a70a0c4_0f08a7cf","line":108,"updated":"2022-11-22 22:12:40.000000000","message":"So I did some testing:\n\nWith 100k nodes; running\nselect count(id), shard from nodes group by shard; took less than 3 hundredths of a second and and explain showed it used the index and worked quickly.\n\nI think we should punt, entirely, the idea of a shards table for caching and implement the /v1/shards endpoint dynamically.","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"644a7d971c6afa210180efc5b5a5f0f9a119e0fe","unresolved":false,"context_lines":[{"line_number":105,"context_line":"restrict changes such that the system itself or a appropriately scoped"},{"line_number":106,"context_line":"(i.e. administrative) user can change the field."},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"In this model, conductors do not care about the shard key except"},{"line_number":109,"context_line":"for the purpose of keeping track of the ``shards`` table. Each"},{"line_number":110,"context_line":"conductor has a period task with a skew, which triggers, checks"},{"line_number":111,"context_line":"the table, and performs a table update if the table\u0027s contents"}],"source_content_type":"text/x-rst","patch_set":15,"id":"0c7c52db_3aea5c9f","line":108,"in_reply_to":"1a70a0c4_0f08a7cf","updated":"2022-11-29 19:20:31.000000000","message":"Done","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"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":"ce8568569b493f25d707c91010298168abdc8274","unresolved":true,"context_lines":[{"line_number":203,"context_line":"Data model impact"},{"line_number":204,"context_line":"-----------------"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"Node: Addition of a ``shard_group`` column/value field, indexed,"},{"line_number":207,"context_line":"      with a default value of None."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7f1dd349_2c272759","line":206,"updated":"2022-11-22 22:12:40.000000000","message":"shard_group? or shard_key? Or shard?\n\nI\u0027m going to standardize on shard; but not going to be acting on that until next Monday so please say something in this spec if not :D","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"644a7d971c6afa210180efc5b5a5f0f9a119e0fe","unresolved":false,"context_lines":[{"line_number":203,"context_line":"Data model impact"},{"line_number":204,"context_line":"-----------------"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"Node: Addition of a ``shard_group`` column/value field, indexed,"},{"line_number":207,"context_line":"      with a default value of None."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"}],"source_content_type":"text/x-rst","patch_set":15,"id":"66bde155_09183c1e","line":206,"in_reply_to":"7f1dd349_2c272759","updated":"2022-11-29 19:20:31.000000000","message":"key, fixing.","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"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":"ce8568569b493f25d707c91010298168abdc8274","unresolved":true,"context_lines":[{"line_number":210,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"},{"line_number":211,"context_line":"          if needed."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"A new table will be added, ``shards`` a simplified interface of two columns."},{"line_number":214,"context_line":"A shard key value and count value. It will not have a object table, it will"},{"line_number":215,"context_line":"be intended to be an *as simplified and as performant* as possible processing"},{"line_number":216,"context_line":"of the result set. Also, only node will be chartered with keeping the data"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7cd4efdf_ad01bc47","line":213,"updated":"2022-11-22 22:12:40.000000000","message":"This should go away re: my above comment to KISS and pull the data live.","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"644a7d971c6afa210180efc5b5a5f0f9a119e0fe","unresolved":false,"context_lines":[{"line_number":210,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"},{"line_number":211,"context_line":"          if needed."},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"A new table will be added, ``shards`` a simplified interface of two columns."},{"line_number":214,"context_line":"A shard key value and count value. It will not have a object table, it will"},{"line_number":215,"context_line":"be intended to be an *as simplified and as performant* as possible processing"},{"line_number":216,"context_line":"of the result set. Also, only node will be chartered with keeping the data"}],"source_content_type":"text/x-rst","patch_set":15,"id":"2d62bdfe_c2bacba8","line":213,"in_reply_to":"7cd4efdf_ad01bc47","updated":"2022-11-29 19:20:31.000000000","message":"Done","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"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":"ce8568569b493f25d707c91010298168abdc8274","unresolved":true,"context_lines":[{"line_number":368,"context_line":"Security impact"},{"line_number":369,"context_line":"---------------"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"The ``shard_group`` key would be API user settable, as long as sufficient"},{"line_number":372,"context_line":"API access exists in the RBAC model."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"The ``/v/shards`` endpoint would also be restricted based upon the RBAC"}],"source_content_type":"text/x-rst","patch_set":15,"id":"8902353e_9fdcb61c","line":371,"updated":"2022-11-22 22:12:40.000000000","message":"shard? shard_group? shard_key?\n\nAgain, I\u0027m standardizing on node.shard next time I touch this patch unless we think strongly otherwise :).","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"644a7d971c6afa210180efc5b5a5f0f9a119e0fe","unresolved":false,"context_lines":[{"line_number":368,"context_line":"Security impact"},{"line_number":369,"context_line":"---------------"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"The ``shard_group`` key would be API user settable, as long as sufficient"},{"line_number":372,"context_line":"API access exists in the RBAC model."},{"line_number":373,"context_line":""},{"line_number":374,"context_line":"The ``/v/shards`` endpoint would also be restricted based upon the RBAC"}],"source_content_type":"text/x-rst","patch_set":15,"id":"cebc6847_0403409f","line":371,"in_reply_to":"8902353e_9fdcb61c","updated":"2022-11-29 19:20:31.000000000","message":"Done","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"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":"ce8568569b493f25d707c91010298168abdc8274","unresolved":true,"context_lines":[{"line_number":436,"context_line":"* Create database schema/upgrades/models."},{"line_number":437,"context_line":"* Update Object layer for the ``Node`` and ``Port`` objects."},{"line_number":438,"context_line":"* Add query by shard capability to the Nodes and Ports database tables."},{"line_number":439,"context_line":"* Add logic to count and identify the ``shard_group`` values stored on"},{"line_number":440,"context_line":"  Nodes on a periodic task."},{"line_number":441,"context_line":"* Add logic for node creation to handle auto-assignment to a"},{"line_number":442,"context_line":"  ``shard_group`` when relevent, and option to both enable/disable"}],"source_content_type":"text/x-rst","patch_set":15,"id":"38b8ed59_8d7575cb","line":439,"updated":"2022-11-22 22:12:40.000000000","message":"this should probably go away if we pull it live","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"644a7d971c6afa210180efc5b5a5f0f9a119e0fe","unresolved":false,"context_lines":[{"line_number":436,"context_line":"* Create database schema/upgrades/models."},{"line_number":437,"context_line":"* Update Object layer for the ``Node`` and ``Port`` objects."},{"line_number":438,"context_line":"* Add query by shard capability to the Nodes and Ports database tables."},{"line_number":439,"context_line":"* Add logic to count and identify the ``shard_group`` values stored on"},{"line_number":440,"context_line":"  Nodes on a periodic task."},{"line_number":441,"context_line":"* Add logic for node creation to handle auto-assignment to a"},{"line_number":442,"context_line":"  ``shard_group`` when relevent, and option to both enable/disable"}],"source_content_type":"text/x-rst","patch_set":15,"id":"519ae799_14ae901d","line":439,"in_reply_to":"38b8ed59_8d7575cb","updated":"2022-11-29 19:20:31.000000000","message":"Done","commit_id":"e6640daf660f357425961bbd9eec691f31828a9b"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The reality is Ironic can be used at some absurd scales, and while"},{"line_number":28,"context_line":"*most* operators of Ironic either run multiple smaller Ironic deployments,"},{"line_number":29,"context_line":"some operate at a scale where external operations polling Ironic may"},{"line_number":30,"context_line":"not be scaled in ideal configurations. It is also easy for misconfigurations"},{"line_number":31,"context_line":"to be made where performance can become degraded, which is because the scaling"}],"source_content_type":"text/x-rst","patch_set":17,"id":"e343f9b2_3ffba794","line":28,"updated":"2022-12-08 16:28:48.000000000","message":"Some numbers would be helpful to get an idea of what \u0027smaller\u0027 and \u0027absurd scales\u0027 might mean.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":25,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"The reality is Ironic can be used at some absurd scales, and while"},{"line_number":28,"context_line":"*most* operators of Ironic either run multiple smaller Ironic deployments,"},{"line_number":29,"context_line":"some operate at a scale where external operations polling Ironic may"},{"line_number":30,"context_line":"not be scaled in ideal configurations. It is also easy for misconfigurations"},{"line_number":31,"context_line":"to be made where performance can become degraded, which is because the scaling"}],"source_content_type":"text/x-rst","patch_set":17,"id":"12fb7bf3_f70498af","line":28,"in_reply_to":"e343f9b2_3ffba794","updated":"2022-12-08 20:53:50.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The root issue is the software consuming Ironic\u0027s data needs to be able to"},{"line_number":46,"context_line":"self-delineate the overall node set and determine the local separation points"},{"line_number":47,"context_line":"for sharding the nodes."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The challenge, from what has been done previously, is the previous model"},{"line_number":50,"context_line":"required downloading the entire data set to build a hash ring from."}],"source_content_type":"text/x-rst","patch_set":17,"id":"4243a393_b718390b","line":47,"updated":"2022-12-08 16:28:48.000000000","message":"isn\u0027t the issue that it takes \"too long\" for ironic to return the list of information being requested, when there are thousands of ironic nodes or whatever? And that this spec is proposing to use shards to address it?\n\nOr is it the case that \u0027the software consuming\u0027 (nova-compute?) needs to self-delineate... ? (I\u0027m having a hard time parsing / grokking this.)","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The root issue is the software consuming Ironic\u0027s data needs to be able to"},{"line_number":46,"context_line":"self-delineate the overall node set and determine the local separation points"},{"line_number":47,"context_line":"for sharding the nodes."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The challenge, from what has been done previously, is the previous model"},{"line_number":50,"context_line":"required downloading the entire data set to build a hash ring from."}],"source_content_type":"text/x-rst","patch_set":17,"id":"60b2f6a0_e5465d2a","line":47,"in_reply_to":"4243a393_b718390b","updated":"2022-12-08 20:53:50.000000000","message":"It is a bit of both.\n\nIronic returns the list relatively quickly. Even faster now.\n\nSomething like 70% of the time CERN calculated with the performance modeling they did was spent looping through the nova compute service\u0027s internals as it sequentially iterates through the entire list it gets, and performs actions from there synchronizing data and tracking resources.\n\nSo, the idea is that they need to be able to split/delineate the work into smaller chunks. Some services, like networking-baremetal which does the exact same thing, but with port data.\n\nIn nova\u0027s case, they want a human to make an explicit decision and lock it into place. They also want to get rid of the buggy HA model in that they always delete/recreate things as opposed to update the host field, which creates a lot of database churn leading to a number of issues which have no fix at present which nova will approve.\n\nIn the networking-baremetal, we can allow the service to self delineate fairly easily. Nova will require configuration to leverage this, but it should be easier, and less risk prone/problematic.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The root issue is the software consuming Ironic\u0027s data needs to be able to"},{"line_number":46,"context_line":"self-delineate the overall node set and determine the local separation points"},{"line_number":47,"context_line":"for sharding the nodes."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The challenge, from what has been done previously, is the previous model"},{"line_number":50,"context_line":"required downloading the entire data set to build a hash ring from."}],"source_content_type":"text/x-rst","patch_set":17,"id":"8d0111b0_524595b1","line":47,"in_reply_to":"60b2f6a0_e5465d2a","updated":"2022-12-09 16:37:03.000000000","message":"Ah. I think this is very useful information. It clarifies what \"polling\" entails, cuz it isn\u0027t just polling, it is what the caller/consumer (nova) does with the information which slows down nova, not ironic. Worth adding this to the problem description!","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The root issue is the software consuming Ironic\u0027s data needs to be able to"},{"line_number":46,"context_line":"self-delineate the overall node set and determine the local separation points"},{"line_number":47,"context_line":"for sharding the nodes."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The challenge, from what has been done previously, is the previous model"},{"line_number":50,"context_line":"required downloading the entire data set to build a hash ring from."}],"source_content_type":"text/x-rst","patch_set":17,"id":"9c57d01f_7739c2aa","line":47,"in_reply_to":"8d0111b0_524595b1","updated":"2022-12-09 23:10:27.000000000","message":"Augmenting the problem description a little more. As such, closing this out.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":47,"context_line":"for sharding the nodes."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The challenge, from what has been done previously, is the previous model"},{"line_number":50,"context_line":"required downloading the entire data set to build a hash ring from."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Where things are also complicated, is Ironic has an operational model of"},{"line_number":53,"context_line":"a ``conductor_group``, which is intended to help model a physical grouping"}],"source_content_type":"text/x-rst","patch_set":17,"id":"4f1d551c_4f8d3eb7","line":50,"updated":"2022-12-08 16:28:48.000000000","message":"is this the problem for both the nova-compute and networking-baremetal situations? I admit, I\u0027m not familiar with the situations but I didn\u0027t think neutron did anything about any hash rings.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":47,"context_line":"for sharding the nodes."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The challenge, from what has been done previously, is the previous model"},{"line_number":50,"context_line":"required downloading the entire data set to build a hash ring from."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Where things are also complicated, is Ironic has an operational model of"},{"line_number":53,"context_line":"a ``conductor_group``, which is intended to help model a physical grouping"}],"source_content_type":"text/x-rst","patch_set":17,"id":"b434315e_3a7b104b","line":50,"in_reply_to":"4f1d551c_4f8d3eb7","updated":"2022-12-08 20:53:50.000000000","message":"Yes, they both download everything at present and divide the work amongst the nodes. Turns out the hash ring was good when your close to the DB, not so much other wise.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":false,"context_lines":[{"line_number":47,"context_line":"for sharding the nodes."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"The challenge, from what has been done previously, is the previous model"},{"line_number":50,"context_line":"required downloading the entire data set to build a hash ring from."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Where things are also complicated, is Ironic has an operational model of"},{"line_number":53,"context_line":"a ``conductor_group``, which is intended to help model a physical grouping"}],"source_content_type":"text/x-rst","patch_set":17,"id":"795c851d_7404bff5","line":50,"in_reply_to":"b434315e_3a7b104b","updated":"2022-12-09 23:10:27.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":52,"context_line":"Where things are also complicated, is Ironic has an operational model of"},{"line_number":53,"context_line":"a ``conductor_group``, which is intended to help model a physical grouping"},{"line_number":54,"context_line":"or operational constraint. The challenge here is that conductor groups are"},{"line_number":55,"context_line":"not automatic in any way, shape, or form."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Proposed change"},{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":17,"id":"a44e2474_b0772c05","line":55,"updated":"2022-12-08 16:28:48.000000000","message":"based on the discussion with Arne, using conductor groups won\u0027t help...","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":52,"context_line":"Where things are also complicated, is Ironic has an operational model of"},{"line_number":53,"context_line":"a ``conductor_group``, which is intended to help model a physical grouping"},{"line_number":54,"context_line":"or operational constraint. The challenge here is that conductor groups are"},{"line_number":55,"context_line":"not automatic in any way, shape, or form."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Proposed change"},{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":17,"id":"ed686551_8405a514","line":55,"in_reply_to":"a44e2474_b0772c05","updated":"2022-12-08 20:53:50.000000000","message":"Augmented.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":52,"context_line":"Where things are also complicated, is Ironic has an operational model of"},{"line_number":53,"context_line":"a ``conductor_group``, which is intended to help model a physical grouping"},{"line_number":54,"context_line":"or operational constraint. The challenge here is that conductor groups are"},{"line_number":55,"context_line":"not automatic in any way, shape, or form."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Proposed change"},{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":17,"id":"895503a3_a809c9e7","line":55,"in_reply_to":"ed686551_8405a514","updated":"2022-12-12 18:33:37.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":90,"context_line":"  randomly assigned across the three shards."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"}],"source_content_type":"text/x-rst","patch_set":17,"id":"c031ddc6_02b10a86","line":93,"updated":"2022-12-08 16:28:48.000000000","message":"the \u0027user\u0027 is the \u0027API consumer\u0027 mentioned above at L63?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":90,"context_line":"  randomly assigned across the three shards."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"}],"source_content_type":"text/x-rst","patch_set":17,"id":"6a44caed_3f5d96b9","line":93,"in_reply_to":"c031ddc6_02b10a86","updated":"2022-12-08 20:53:50.000000000","message":"yes, changed.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":92,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"}],"source_content_type":"text/x-rst","patch_set":17,"id":"2026c989_65da1846","line":95,"updated":"2022-12-08 16:28:48.000000000","message":"so not just GET, but POST too.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":92,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"}],"source_content_type":"text/x-rst","patch_set":17,"id":"f94d33aa_ea8a4aca","line":95,"in_reply_to":"2026c989_65da1846","updated":"2022-12-08 20:53:50.000000000","message":"I\u0027m not sure I understand this comment.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":92,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"}],"source_content_type":"text/x-rst","patch_set":17,"id":"f9c715c3_e85d72a5","line":95,"in_reply_to":"46f15334_67836b4d","updated":"2022-12-09 16:37:03.000000000","message":"Yes, or add/change. The entire sentence seems to imply GET only so I was wondering if that was the case. eg, \u0027accept a shard parameter in their query to allow for API consumers to automatically scope limit their data set...\u0027 is a GET. So I think I got a bit confused as to what exactly was going to be changed, cuz it also wasn\u0027t clear to me what operations were going to be allowed...","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":92,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"}],"source_content_type":"text/x-rst","patch_set":17,"id":"6d081c78_785a4055","line":95,"in_reply_to":"b3bbf492_4f73eb61","updated":"2022-12-12 17:37:36.000000000","message":"Marking resolved as I think we\u0027ve resolved this thread and the related text is being updated.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"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":"cc31024fffbec4ec8b62ec8efcaa1d07fe11b8fd","unresolved":true,"context_lines":[{"line_number":92,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"}],"source_content_type":"text/x-rst","patch_set":17,"id":"46f15334_67836b4d","line":95,"in_reply_to":"f94d33aa_ea8a4aca","updated":"2022-12-08 21:55:07.000000000","message":"In my draft patches for this...\nGET /v1/nodes was updated to show the node.shard parameter\nPOST /v1/nodes was updated to take a node.shard parameter (on creates)\nPATCH /v1/nodes was updated to take a node.shard parameter \n\nGET /v1/shards was created to show shards.\n\nIs what you want is for these items/API changes to be explicitly enumerated?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":true,"context_lines":[{"line_number":92,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":93,"context_line":"still optional for Ironic, and the shard *exists* for the user."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":96,"context_line":"be updated to accept a ``shard`` parameter in the query to allow"},{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"}],"source_content_type":"text/x-rst","patch_set":17,"id":"b3bbf492_4f73eb61","line":95,"in_reply_to":"f9c715c3_e85d72a5","updated":"2022-12-09 23:10:27.000000000","message":"So I think your expecting REST API impact items here as well as below. This was specifically about queries against existing fields. Adding post to rest API impact.\n\nEdit-ability actions on a field on the node object seem otherwise implied, given CRUD is expected on fields on a node object unless we state/document otherwise.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"},{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."},{"line_number":100,"context_line":"Whereas, ``nova-compute`` needs the field to remain static, that is unless"},{"line_number":101,"context_line":"``nova-compute`` or some other API consumer were to request the"},{"line_number":102,"context_line":"``shard`` to be updated on a node."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"8802a29f_8bfba2c1","line":100,"updated":"2022-12-08 16:28:48.000000000","message":"what \u0027field\u0027 is this? the ironic node\u0027s \u0027shard\u0027 field?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":97,"context_line":"for API consumers to automatically scope limit their data set and self"},{"line_number":98,"context_line":"determine how to reduce the workset. For example, ``networking-baremetal``"},{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."},{"line_number":100,"context_line":"Whereas, ``nova-compute`` needs the field to remain static, that is unless"},{"line_number":101,"context_line":"``nova-compute`` or some other API consumer were to request the"},{"line_number":102,"context_line":"``shard`` to be updated on a node."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"291bdd0c_77eaa465","line":100,"in_reply_to":"8802a29f_8bfba2c1","updated":"2022-12-08 20:53:50.000000000","message":"yes, the shard field, revising to be more specific.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."},{"line_number":100,"context_line":"Whereas, ``nova-compute`` needs the field to remain static, that is unless"},{"line_number":101,"context_line":"``nova-compute`` or some other API consumer were to request the"},{"line_number":102,"context_line":"``shard`` to be updated on a node."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In terms of access controls, we would also add a new RBAC policy to"},{"line_number":105,"context_line":"restrict changes such that the system itself or a appropriately scoped"}],"source_content_type":"text/x-rst","patch_set":17,"id":"1549889c_3a9d5766","line":102,"updated":"2022-12-08 16:28:48.000000000","message":"it would be useful to describe in more detail, the issues we see with networking-baremetal and nova-compute. Otherwise, it is hard for me to know whether this proposal addresses them. Are there bugs that describe what people see?\n\nIf someone has a cluster that exhibits both the networking-baremetal and nova-compute issues -- will this one shard key/values address both at the same time, or would the sharding of the ironic nodes need to be different depending on the use case of the consumer?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."},{"line_number":100,"context_line":"Whereas, ``nova-compute`` needs the field to remain static, that is unless"},{"line_number":101,"context_line":"``nova-compute`` or some other API consumer were to request the"},{"line_number":102,"context_line":"``shard`` to be updated on a node."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In terms of access controls, we would also add a new RBAC policy to"},{"line_number":105,"context_line":"restrict changes such that the system itself or a appropriately scoped"}],"source_content_type":"text/x-rst","patch_set":17,"id":"966439ef_f25bd4ea","line":102,"in_reply_to":"1549889c_3a9d5766","updated":"2022-12-08 20:53:50.000000000","message":"so, it is so many different issues, that I could link to the bug, but it is going to be difficult to really understand why without fully grasping nova internals. similarly for networking-baremetal. I\u0027ll try to elaborate more here.\n\nThe same key would work for both consumers at the same time, their implementation can be up to the consumers in what best fits within the process model.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."},{"line_number":100,"context_line":"Whereas, ``nova-compute`` needs the field to remain static, that is unless"},{"line_number":101,"context_line":"``nova-compute`` or some other API consumer were to request the"},{"line_number":102,"context_line":"``shard`` to be updated on a node."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In terms of access controls, we would also add a new RBAC policy to"},{"line_number":105,"context_line":"restrict changes such that the system itself or a appropriately scoped"}],"source_content_type":"text/x-rst","patch_set":17,"id":"dbf64985_f9d9fbd5","line":102,"in_reply_to":"966439ef_f25bd4ea","updated":"2022-12-09 16:37:03.000000000","message":"i suggest linking to any/all bugs that this will address, so folks can get an idea of what would happen if this isn\u0027t addressed.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":false,"context_lines":[{"line_number":99,"context_line":"may not care about assignment, it just needs to reduce the localized workset."},{"line_number":100,"context_line":"Whereas, ``nova-compute`` needs the field to remain static, that is unless"},{"line_number":101,"context_line":"``nova-compute`` or some other API consumer were to request the"},{"line_number":102,"context_line":"``shard`` to be updated on a node."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In terms of access controls, we would also add a new RBAC policy to"},{"line_number":105,"context_line":"restrict changes such that the system itself or a appropriately scoped"}],"source_content_type":"text/x-rst","patch_set":17,"id":"b9750318_4e1b2422","line":102,"in_reply_to":"dbf64985_f9d9fbd5","updated":"2022-12-09 23:10:27.000000000","message":"Adding bugs to references.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"In this model, conductors do not care about the shard key. Lookups for"},{"line_number":109,"context_line":"contents of the overall shard composition/layout is to be performed"},{"line_number":110,"context_line":"directly against the nodes table using a SQL query."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Alternatives"},{"line_number":113,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"f5a88411_6d761611","line":110,"updated":"2022-12-08 16:28:48.000000000","message":"so \u0027all\u0027 the sharding stuff will be done by nova-api? Or is this part referring to \u0027get\u0027 operations related to the shard key/database table?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"In this model, conductors do not care about the shard key. Lookups for"},{"line_number":109,"context_line":"contents of the overall shard composition/layout is to be performed"},{"line_number":110,"context_line":"directly against the nodes table using a SQL query."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Alternatives"},{"line_number":113,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"e9b2be60_f90b2d83","line":110,"in_reply_to":"364f801a_2f3e62ec","updated":"2022-12-09 23:10:27.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"In this model, conductors do not care about the shard key. Lookups for"},{"line_number":109,"context_line":"contents of the overall shard composition/layout is to be performed"},{"line_number":110,"context_line":"directly against the nodes table using a SQL query."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"Alternatives"},{"line_number":113,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"364f801a_2f3e62ec","line":110,"in_reply_to":"f5a88411_6d761611","updated":"2022-12-08 20:53:50.000000000","message":"No, we have the sharding key on the node, this talks about how to return shard content information so a consumer like networking-baremetal can leverage the API to work smarter, not harder.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":124,"context_line":"Consensus seems to be that usage of the fields, while in part may be useful"},{"line_number":125,"context_line":"and advisable in some cases, it doesn\u0027t solve the general need to be able to"},{"line_number":126,"context_line":"allow clients to self delineate *without* first downloading the *entire* node"},{"line_number":127,"context_line":"list first. Which in itself, is a known scaling challenge."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Why not Conductor Group?"},{"line_number":130,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":17,"id":"04615be5_26fabe22","line":127,"updated":"2022-12-08 16:28:48.000000000","message":"I don\u0027t understand this. How does sharding allow clients to self delineate w/o blah blah, but using eg the \"owner\" field (with some support) doesn\u0027t allow clients to self delineate w/o blah blah?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":124,"context_line":"Consensus seems to be that usage of the fields, while in part may be useful"},{"line_number":125,"context_line":"and advisable in some cases, it doesn\u0027t solve the general need to be able to"},{"line_number":126,"context_line":"allow clients to self delineate *without* first downloading the *entire* node"},{"line_number":127,"context_line":"list first. Which in itself, is a known scaling challenge."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Why not Conductor Group?"},{"line_number":130,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":17,"id":"8e2f439f_c37a4a40","line":127,"in_reply_to":"04615be5_26fabe22","updated":"2022-12-08 20:53:50.000000000","message":"Owner/lessee are access control mechanism fields with RBAC implications. They may not be relatable and we internally have logic which uses them. Also, an owner can change a lessee\u0027s access/view, but even then, I\u0027m not sure a lessee would be allowed to deploy a node, so we\u0027re into the territory of also needing to modify the RBAC policies to \"misuse\" the owner/lessee fields.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":124,"context_line":"Consensus seems to be that usage of the fields, while in part may be useful"},{"line_number":125,"context_line":"and advisable in some cases, it doesn\u0027t solve the general need to be able to"},{"line_number":126,"context_line":"allow clients to self delineate *without* first downloading the *entire* node"},{"line_number":127,"context_line":"list first. Which in itself, is a known scaling challenge."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Why not Conductor Group?"},{"line_number":130,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":17,"id":"e85f0a5d_29753437","line":127,"in_reply_to":"8e2f439f_c37a4a40","updated":"2022-12-09 16:37:03.000000000","message":"So as mentioned above, that would be a \u0027misuse\u0027 of the owner/lessee concepts, but if we provide a \u0027get list of owners\u0027 and \u0027get listof lessees\u0027 and \u0027get nodes owned by ownerA or lessee B\u0027 (I don\u0027t know if we do but we could), then that provides a means of delineation for the client ie, I don\u0027t see that the \u0027without first downloading the entire node list first\u0027 would necessarily be true).\n\nThe \u0027key\u0027 is more that it is a \u0027misuse\u0027, not that it isn\u0027t do-able. And that this spec provides a generic \u0027shard\u0027 concept specifically for this purpose.\n\nI don\u0027t want to digress, but I am not convinced this allows clients to self-delineate (or maybe I don\u0027t grok what that means), since the shards are being added by ironic without any say from the client. Isn\u0027t ironic doing/creating the delineations for the client?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":124,"context_line":"Consensus seems to be that usage of the fields, while in part may be useful"},{"line_number":125,"context_line":"and advisable in some cases, it doesn\u0027t solve the general need to be able to"},{"line_number":126,"context_line":"allow clients to self delineate *without* first downloading the *entire* node"},{"line_number":127,"context_line":"list first. Which in itself, is a known scaling challenge."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Why not Conductor Group?"},{"line_number":130,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":17,"id":"b0907fcd_3759fa00","line":127,"in_reply_to":"c51821bd_ad99a2ff","updated":"2022-12-12 18:33:37.000000000","message":"Ack","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":true,"context_lines":[{"line_number":124,"context_line":"Consensus seems to be that usage of the fields, while in part may be useful"},{"line_number":125,"context_line":"and advisable in some cases, it doesn\u0027t solve the general need to be able to"},{"line_number":126,"context_line":"allow clients to self delineate *without* first downloading the *entire* node"},{"line_number":127,"context_line":"list first. Which in itself, is a known scaling challenge."},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"Why not Conductor Group?"},{"line_number":130,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":17,"id":"c51821bd_ad99a2ff","line":127,"in_reply_to":"e85f0a5d_29753437","updated":"2022-12-09 23:10:27.000000000","message":"So, I think my mistake here was not explaining the means by which those fields can be used for filtering, and then assumptions being made as a result.\n\nThe misuse of a feature, or the creation of an overly complex/too burdensome workflow is also a detractor to the ability to adopt as well. I\u0027m revising the text, I hope that helps it make sense. If not I would be happy to discuss.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":158,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":159,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":160,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Why not owner or lessee?"},{"line_number":163,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"eafba291_7bbb1f46","line":161,"updated":"2022-12-08 16:28:48.000000000","message":"it might be good (I know, how much time do we want to spend on this spec) to add the example Jay gave above, when Arne asked about \u0027why not conductor groups\u0027. Maybe this already describes a similar scenario, but worded differently?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":158,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":159,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":160,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Why not owner or lessee?"},{"line_number":163,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"726ed2f3_92c3a0dd","line":161,"in_reply_to":"2b7ababa_0fb0b22c","updated":"2022-12-12 18:33:37.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":158,"context_line":"In this specific case, ``conductor_group`` is entirely a manually managed"},{"line_number":159,"context_line":"aspect, which nova has a separate name for name perception reasons,"},{"line_number":160,"context_line":"and our hope here is something that is both simple and smart."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Why not owner or lessee?"},{"line_number":163,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":164,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"2b7ababa_0fb0b22c","line":161,"in_reply_to":"eafba291_7bbb1f46","updated":"2022-12-08 20:53:50.000000000","message":"I\u0027m hoping I\u0027ve elaborated on this a little more and try to convey the difference in scale as it relates to why.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"It might be \"feasible\" to do the same for scaling ``networking-baremetal``"},{"line_number":171,"context_line":"interactions with Ironic\u0027s API, but the overhead and self management of"},{"line_number":172,"context_line":"node groupins seems onerous and error prone."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Also, if this was a path taken, it would also be impossible for nova-computes"},{"line_number":175,"context_line":"nodes, and they would be locked to the manual settings."}],"source_content_type":"text/x-rst","patch_set":17,"id":"d7db5aa6_20882d60","line":172,"updated":"2022-12-08 16:28:48.000000000","message":"nit s/groupins/groupings/","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":169,"context_line":""},{"line_number":170,"context_line":"It might be \"feasible\" to do the same for scaling ``networking-baremetal``"},{"line_number":171,"context_line":"interactions with Ironic\u0027s API, but the overhead and self management of"},{"line_number":172,"context_line":"node groupins seems onerous and error prone."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Also, if this was a path taken, it would also be impossible for nova-computes"},{"line_number":175,"context_line":"nodes, and they would be locked to the manual settings."}],"source_content_type":"text/x-rst","patch_set":17,"id":"d3902c70_0515bdb4","line":172,"in_reply_to":"d7db5aa6_20882d60","updated":"2022-12-08 20:53:50.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":189,"context_line":"with a node, keeping the more costly single node requests to a"},{"line_number":190,"context_line":"minimum. If that client had to track things, it would still have to pull"},{"line_number":191,"context_line":"a full list, and then it would have to reconcile, track, and map individual"},{"line_number":192,"context_line":"nodes. We\u0027ve already seen this as not working using a Hashring."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Similarly, ``networking-baremetal`` lists all ports. That is all it needs,"},{"line_number":195,"context_line":"but it has no concept of smaller chunking, blocks, or even enough information"}],"source_content_type":"text/x-rst","patch_set":17,"id":"7ac51a8b_7372459d","line":192,"updated":"2022-12-08 16:28:48.000000000","message":"It might be good to have this description higher up, since this describes the problem? My impression was that it took too long for nova to get all that information \u0027at once\u0027?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":189,"context_line":"with a node, keeping the more costly single node requests to a"},{"line_number":190,"context_line":"minimum. If that client had to track things, it would still have to pull"},{"line_number":191,"context_line":"a full list, and then it would have to reconcile, track, and map individual"},{"line_number":192,"context_line":"nodes. We\u0027ve already seen this as not working using a Hashring."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Similarly, ``networking-baremetal`` lists all ports. That is all it needs,"},{"line_number":195,"context_line":"but it has no concept of smaller chunking, blocks, or even enough information"}],"source_content_type":"text/x-rst","patch_set":17,"id":"b11b3ee1_0c03b9e3","line":192,"in_reply_to":"7ac51a8b_7372459d","updated":"2022-12-08 20:53:50.000000000","message":"I\u0027ve put some more detail up there, and I think this still holds true for here. If  absolutely necessary, we can rework the body of the text but I hope the important details are conveyed so it makes sense.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":false,"context_lines":[{"line_number":189,"context_line":"with a node, keeping the more costly single node requests to a"},{"line_number":190,"context_line":"minimum. If that client had to track things, it would still have to pull"},{"line_number":191,"context_line":"a full list, and then it would have to reconcile, track, and map individual"},{"line_number":192,"context_line":"nodes. We\u0027ve already seen this as not working using a Hashring."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Similarly, ``networking-baremetal`` lists all ports. That is all it needs,"},{"line_number":195,"context_line":"but it has no concept of smaller chunking, blocks, or even enough information"}],"source_content_type":"text/x-rst","patch_set":17,"id":"edd3ea27_bb16483e","line":192,"in_reply_to":"b11b3ee1_0c03b9e3","updated":"2022-12-09 16:37:03.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":196,"context_line":"*to* really make a hashring which would represent existing models. To just"},{"line_number":197,"context_line":"expect the client to \"figure it out\" and to \"deal with that complexity\","},{"line_number":198,"context_line":"also means logic far away from a database. And for performance, the closer"},{"line_number":199,"context_line":"we can keep logic and decisions to an indexed column, the better."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Data model impact"},{"line_number":202,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"44068277_3e58edc3","line":199,"updated":"2022-12-08 16:28:48.000000000","message":"For nova-computes, it mentions that hashrings didn\u0027t work, so wondering why we mention here about \u0027even enough information to really make a hashring\u0027 -- would a hashring work in this case?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":196,"context_line":"*to* really make a hashring which would represent existing models. To just"},{"line_number":197,"context_line":"expect the client to \"figure it out\" and to \"deal with that complexity\","},{"line_number":198,"context_line":"also means logic far away from a database. And for performance, the closer"},{"line_number":199,"context_line":"we can keep logic and decisions to an indexed column, the better."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Data model impact"},{"line_number":202,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"73bcad59_c6e7b6ba","line":199,"in_reply_to":"44068277_3e58edc3","updated":"2022-12-08 20:53:50.000000000","message":"potentially, yes. It would introduce a lot of complexity though and require it to continue to pull down/maintain a full list in ram to generate the hash ring.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":196,"context_line":"*to* really make a hashring which would represent existing models. To just"},{"line_number":197,"context_line":"expect the client to \"figure it out\" and to \"deal with that complexity\","},{"line_number":198,"context_line":"also means logic far away from a database. And for performance, the closer"},{"line_number":199,"context_line":"we can keep logic and decisions to an indexed column, the better."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Data model impact"},{"line_number":202,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":17,"id":"5973ce8e_e93c3c9c","line":199,"in_reply_to":"73bcad59_c6e7b6ba","updated":"2022-12-12 18:33:37.000000000","message":"Ack","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":197,"context_line":"expect the client to \"figure it out\" and to \"deal with that complexity\","},{"line_number":198,"context_line":"also means logic far away from a database. And for performance, the closer"},{"line_number":199,"context_line":"we can keep logic and decisions to an indexed column, the better."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Data model impact"},{"line_number":202,"context_line":"-----------------"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"964c0dc8_0907440a","line":200,"updated":"2022-12-08 16:28:48.000000000","message":"as mentioned above, this new \u0027shard\u0027 field is for consumers -- which means that the consumers will need to change to take advantage of this \u0027shard\u0027 field. the ironic team owns the networking-baremetal\u0027 stuff?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":false,"context_lines":[{"line_number":197,"context_line":"expect the client to \"figure it out\" and to \"deal with that complexity\","},{"line_number":198,"context_line":"also means logic far away from a database. And for performance, the closer"},{"line_number":199,"context_line":"we can keep logic and decisions to an indexed column, the better."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Data model impact"},{"line_number":202,"context_line":"-----------------"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"b0a727d2_07bf5052","line":200,"in_reply_to":"64ce6bb3_20b0e8e0","updated":"2022-12-09 16:37:03.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":197,"context_line":"expect the client to \"figure it out\" and to \"deal with that complexity\","},{"line_number":198,"context_line":"also means logic far away from a database. And for performance, the closer"},{"line_number":199,"context_line":"we can keep logic and decisions to an indexed column, the better."},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"Data model impact"},{"line_number":202,"context_line":"-----------------"},{"line_number":203,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"64ce6bb3_20b0e8e0","line":200,"in_reply_to":"964c0dc8_0907440a","updated":"2022-12-08 20:53:50.000000000","message":"API consumers, so services. And yes, change would need to be required.\n\nAnd yes, we do own networking-baremetal.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":202,"context_line":"-----------------"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Node: Addition of a ``shard`` column/value field, indexed,"},{"line_number":205,"context_line":"      with a default value of None."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":208,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"}],"source_content_type":"text/x-rst","patch_set":17,"id":"8f343988_0afbcdfe","line":205,"updated":"2022-12-08 16:28:48.000000000","message":"what is the type? A string? case-insensitive? no blank space or whatever?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":202,"context_line":"-----------------"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"Node: Addition of a ``shard`` column/value field, indexed,"},{"line_number":205,"context_line":"      with a default value of None."},{"line_number":206,"context_line":""},{"line_number":207,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":208,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"}],"source_content_type":"text/x-rst","patch_set":17,"id":"b4756e9b_9a00ae17","line":205,"in_reply_to":"8f343988_0afbcdfe","updated":"2022-12-08 20:53:50.000000000","message":"revised.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":208,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"},{"line_number":209,"context_line":"          if needed."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."}],"source_content_type":"text/x-rst","patch_set":17,"id":"442a3307_ebf61082","line":209,"updated":"2022-12-08 16:28:48.000000000","message":"remind me, what is a \u0027compound index\u0027 ?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":208,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"},{"line_number":209,"context_line":"          if needed."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."}],"source_content_type":"text/x-rst","patch_set":17,"id":"ac194733_c11ad8c8","line":209,"in_reply_to":"442a3307_ebf61082","updated":"2022-12-08 20:53:50.000000000","message":"Normally an index is the (primary_key, indexed_field).\n\nA compound index is (primary_key, field_1_index, field_2_index)\n\nWhich is much more performant in larger databases if you do \"give me all the nodes with field1\u003d\"foo\", field2\u003d\"foo\". A compound index would be used first, instead of a partial index hit, or possibly even a database table scan where the DB engine walks the columns looking for matching values.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":208,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"},{"line_number":209,"context_line":"          if needed."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."}],"source_content_type":"text/x-rst","patch_set":17,"id":"b4cf344c_58db88a5","line":209,"in_reply_to":"46a869fa_e34fc276","updated":"2022-12-12 16:36:02.000000000","message":"Ack","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":208,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"},{"line_number":209,"context_line":"          if needed."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."}],"source_content_type":"text/x-rst","patch_set":17,"id":"e4510e40_28584f2b","line":209,"in_reply_to":"ac194733_c11ad8c8","updated":"2022-12-09 16:37:03.000000000","message":"So.. the \u0027compound index\u0027 is on the ironic side and this basically says that we may end up creating one or more compound indexes in ironic to make certain db queries more performant. Which could be follow up work ;)","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":true,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":".. NOTE:: We will need to confer with the Nova team and the nova.virt.ironic"},{"line_number":208,"context_line":"          driver query pattern, to ensure we cover any compound indexes,"},{"line_number":209,"context_line":"          if needed."},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."}],"source_content_type":"text/x-rst","patch_set":17,"id":"46a869fa_e34fc276","line":209,"in_reply_to":"e4510e40_28584f2b","updated":"2022-12-09 23:10:27.000000000","message":"Well, it is a database idea, but we have to create the index :)\n\nIt might be work we never do, we might find it good enough, I think it comes down to needing real world operational query patterns.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"State Machine Impact"},{"line_number":215,"context_line":"--------------------"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"97050c77_3bb37851","line":213,"updated":"2022-12-08 16:28:48.000000000","message":"Isn\u0027t there a new database table too?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"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":"cc31024fffbec4ec8b62ec8efcaa1d07fe11b8fd","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"State Machine Impact"},{"line_number":215,"context_line":"--------------------"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"dc5d6024_b7545903","line":213,"in_reply_to":"87737053_edd014c5","updated":"2022-12-08 21:55:07.000000000","message":"It was 100k nodes with 50 shards, and the query took 0.03 seconds :D","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"State Machine Impact"},{"line_number":215,"context_line":"--------------------"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"87737053_edd014c5","line":213,"in_reply_to":"97050c77_3bb37851","updated":"2022-12-08 20:53:50.000000000","message":"No, /v1/shards is dynamically generated upon the state of the shards field contents in the nodes table. JayF benchmarked it the test query with like 10k nodes was returning in .02 seconds with ?50? shards, so we deemed it as reasonable to not keep a cache.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"State Machine Impact"},{"line_number":215,"context_line":"--------------------"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"d6556e2d_c05086a1","line":213,"in_reply_to":"c93c809e_69b39500","updated":"2022-12-09 23:10:27.000000000","message":"Agreed, I honestly thought it would be more overhead to get the count out of the DB but it turned out to be nice and fast once indexed. Marking resolved.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"To facilitate this, database migrations, and data model sanity checking"},{"line_number":212,"context_line":"will need to be added to ``ironic-status`` as part of the upgrade checks."},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"State Machine Impact"},{"line_number":215,"context_line":"--------------------"},{"line_number":216,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"c93c809e_69b39500","line":213,"in_reply_to":"dc5d6024_b7545903","updated":"2022-12-09 16:37:03.000000000","message":"Thanks Jay! I wonder if that is fast enough. Seems like we could always cache the result and eg update it whenever there is a change to the ironic nodes (add, delete, shard change). Future if needed.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"REST API impact"},{"line_number":220,"context_line":"---------------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"GET /v1/nodes?shard\u003dVALUE"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Returns a subset of nodes limited by shard key. In this specific case"}],"source_content_type":"text/x-rst","patch_set":17,"id":"b5ee2667_2be81bc9","line":221,"updated":"2022-12-08 16:28:48.000000000","message":"Do we need a change to PUT or PATCH /v1/nodes/\u003cnode\u003e/ to set or modify the shard value?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"REST API impact"},{"line_number":220,"context_line":"---------------"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"GET /v1/nodes?shard\u003dVALUE"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Returns a subset of nodes limited by shard key. In this specific case"}],"source_content_type":"text/x-rst","patch_set":17,"id":"2972a92e_4985a9cc","line":221,"in_reply_to":"b5ee2667_2be81bc9","updated":"2022-12-08 20:53:50.000000000","message":"it would be like any other fiend under the nodes controller which once it exists can be set/unset via the API. Which is why I didn\u0027t list it explicitly.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":224,"context_line":"Returns a subset of nodes limited by shard key. In this specific case"},{"line_number":225,"context_line":"we will also allow a string value of \"none\", \"None\" or \"null\" to"},{"line_number":226,"context_line":"be utilized to retrieve a list of nodes which do *not* have a shard"},{"line_number":227,"context_line":"key set. Logic to handle that would be in the DB API layer."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"32a6606c_b490e2b7","line":227,"updated":"2022-12-08 16:28:48.000000000","message":"sorry, outside the scope but I like the ability to specify \u0027none\u0027. Do we support that for other optional fields like eg \u0027conductor_group\u0027 ?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":224,"context_line":"Returns a subset of nodes limited by shard key. In this specific case"},{"line_number":225,"context_line":"we will also allow a string value of \"none\", \"None\" or \"null\" to"},{"line_number":226,"context_line":"be utilized to retrieve a list of nodes which do *not* have a shard"},{"line_number":227,"context_line":"key set. Logic to handle that would be in the DB API layer."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"dfc57a59_28b08482","line":227,"in_reply_to":"32a6606c_b490e2b7","updated":"2022-12-08 20:53:50.000000000","message":"No, we haven\u0027t afaik. It is a good idea!","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":false,"context_lines":[{"line_number":224,"context_line":"Returns a subset of nodes limited by shard key. In this specific case"},{"line_number":225,"context_line":"we will also allow a string value of \"none\", \"None\" or \"null\" to"},{"line_number":226,"context_line":"be utilized to retrieve a list of nodes which do *not* have a shard"},{"line_number":227,"context_line":"key set. Logic to handle that would be in the DB API layer."},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":230,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"f3bebfb8_d616eb3c","line":227,"in_reply_to":"dfc57a59_28b08482","updated":"2022-12-12 16:36:02.000000000","message":"Ack","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Returns a subset of ports, limited by the shard key, or list of keys"},{"line_number":232,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":233,"context_line":"to the database to facilitate it."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"GET /v1/shards"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"c038344e_e661c0eb","line":233,"updated":"2022-12-08 16:28:48.000000000","message":"If we allow shard to be a list of values here, why not allow that also for GET /v1/nodes?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Returns a subset of ports, limited by the shard key, or list of keys"},{"line_number":232,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":233,"context_line":"to the database to facilitate it."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"GET /v1/shards"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"8c9230a7_1fa31794","line":233,"in_reply_to":"0c5e01b5_a263d997","updated":"2022-12-09 16:37:03.000000000","message":"I mean GET /v1/nodes?shard\u003dVALUE1,VALUE2,VALUE3 which returns a list of nodes that have one of those shard values.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":false,"context_lines":[{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Returns a subset of ports, limited by the shard key, or list of keys"},{"line_number":232,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":233,"context_line":"to the database to facilitate it."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"GET /v1/shards"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"adf1455b_91b9000b","line":233,"in_reply_to":"8c9230a7_1fa31794","updated":"2022-12-09 23:10:27.000000000","message":"Oh, that makes a lot of sense!","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":230,"context_line":""},{"line_number":231,"context_line":"Returns a subset of ports, limited by the shard key, or list of keys"},{"line_number":232,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":233,"context_line":"to the database to facilitate it."},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"GET /v1/shards"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"0c5e01b5_a263d997","line":233,"in_reply_to":"c038344e_e661c0eb","updated":"2022-12-08 20:53:50.000000000","message":"You mean /v1/nodes/shard and get a list of nodes in that shard?\n\nIf so, that would be a ton of API controller complexity that we really don\u0027t want/need. The subcontrollers are already painful under the node controller.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":247,"context_line":"``system-reader``, ``project-admin``, and future ``service`` roles"},{"line_number":248,"context_line":"by default. A specific RBAC policy would be added for access to"},{"line_number":249,"context_line":"this endpoint."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":".. NOTE::"},{"line_number":252,"context_line":"   The /v1/shards endpoint will be read only."},{"line_number":253,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"29414f89_cb019888","line":250,"updated":"2022-12-08 16:28:48.000000000","message":"maybe not useful, but I was wondering, what about a GET /v1/shards/\u003cshard\u003e ? eg GET /v1/shards/Shard-10 returns {\"Name\": \"Shard-10\", \"Count\": 352, \"Last-Updated\u0027, \u0027$TIME1\u0027} ?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":247,"context_line":"``system-reader``, ``project-admin``, and future ``service`` roles"},{"line_number":248,"context_line":"by default. A specific RBAC policy would be added for access to"},{"line_number":249,"context_line":"this endpoint."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":".. NOTE::"},{"line_number":252,"context_line":"   The /v1/shards endpoint will be read only."},{"line_number":253,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"e6f67c42_d771ad6a","line":250,"in_reply_to":"29414f89_cb019888","updated":"2022-12-08 20:53:50.000000000","message":"Oh, need to drop the last-updated field!\n\nAnyhow, Jay hit this 2 days ago, we agreed in IRC that a 404 was the most appropriate thing to respond with since the data set is so minimal.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":false,"context_lines":[{"line_number":247,"context_line":"``system-reader``, ``project-admin``, and future ``service`` roles"},{"line_number":248,"context_line":"by default. A specific RBAC policy would be added for access to"},{"line_number":249,"context_line":"this endpoint."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":".. NOTE::"},{"line_number":252,"context_line":"   The /v1/shards endpoint will be read only."},{"line_number":253,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"793c3575_cc2bd3fc","line":250,"in_reply_to":"a7a6f1a5_3b06ce80","updated":"2022-12-09 23:10:27.000000000","message":"Its an indexed column, so... truthfully it *should* just be an index look, but mysql doesn\u0027t peer into the internals of the index where as postgres you could if I\u0027m remembering correctly.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":247,"context_line":"``system-reader``, ``project-admin``, and future ``service`` roles"},{"line_number":248,"context_line":"by default. A specific RBAC policy would be added for access to"},{"line_number":249,"context_line":"this endpoint."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":".. NOTE::"},{"line_number":252,"context_line":"   The /v1/shards endpoint will be read only."},{"line_number":253,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"a7a6f1a5_3b06ce80","line":250,"in_reply_to":"e6f67c42_d771ad6a","updated":"2022-12-09 16:37:03.000000000","message":"ok. I thought the DB request to get the count for one shard, would be faster than getting them all. Could always add this later if there is a need :)","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"A ``baremetal shard list`` command would be added."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"A ``--shard-group`` node level parameter for ``baremetal node set``"},{"line_number":267,"context_line":"would also be added."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"\"openstacksdk\""}],"source_content_type":"text/x-rst","patch_set":17,"id":"8795e2b0_fc579026","line":266,"updated":"2022-12-08 16:28:48.000000000","message":"i find it a bit confusing to see \u0027shard-group\u0027 here, but have ironic-node.shard field. Should we rename it to ironic-node.shard-group ?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"A ``baremetal shard list`` command would be added."},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"A ``--shard-group`` node level parameter for ``baremetal node set``"},{"line_number":267,"context_line":"would also be added."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"\"openstacksdk\""}],"source_content_type":"text/x-rst","patch_set":17,"id":"f61588db_d139dbb6","line":266,"in_reply_to":"8795e2b0_fc579026","updated":"2022-12-08 20:53:50.000000000","message":"fixed, it should have been shard. Shard-group was an earlier name.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"A ``--shard-group`` node level parameter for ``baremetal node set``"},{"line_number":267,"context_line":"would also be added."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"\"openstacksdk\""},{"line_number":270,"context_line":"~~~~~~~~~~~~~~"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"24d341c8_0ea4e17e","line":268,"updated":"2022-12-08 16:28:48.000000000","message":"I thought that the \u0027baremetal node list\u0027 would have some sort of --shard-group \u003cshard\u003e to filter on? and similarly for \u0027baremetal port list\u0027","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":265,"context_line":""},{"line_number":266,"context_line":"A ``--shard-group`` node level parameter for ``baremetal node set``"},{"line_number":267,"context_line":"would also be added."},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"\"openstacksdk\""},{"line_number":270,"context_line":"~~~~~~~~~~~~~~"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-rst","patch_set":17,"id":"54b47f73_1be03013","line":268,"in_reply_to":"24d341c8_0ea4e17e","updated":"2022-12-08 20:53:50.000000000","message":"Yeah, that makes too much sense 😂","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":285,"context_line":"Nova driver impact"},{"line_number":286,"context_line":"------------------"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"A separate specificaiton document is being proposed for the Nova"},{"line_number":289,"context_line":"project to help identify *and* navigate the overall change."},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"That being said, no direct negative impact is anticipated."}],"source_content_type":"text/x-rst","patch_set":17,"id":"96e16283_a23fc885","line":288,"updated":"2022-12-08 16:28:48.000000000","message":"nit s/specificaiton/specification/","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":285,"context_line":"Nova driver impact"},{"line_number":286,"context_line":"------------------"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"A separate specificaiton document is being proposed for the Nova"},{"line_number":289,"context_line":"project to help identify *and* navigate the overall change."},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"That being said, no direct negative impact is anticipated."}],"source_content_type":"text/x-rst","patch_set":17,"id":"028f68e5_8037dcae","line":288,"in_reply_to":"96e16283_a23fc885","updated":"2022-12-08 20:53:50.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":295,"context_line":"which may not be realistically needed by the operators."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":".. NOTE:: An overall migration path is envisioned, but what is"},{"line_number":298,"context_line":"          noted here is only a suggestion and how we percieve the"},{"line_number":299,"context_line":"          overall process."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":".. TODO:: Potental idea, nova could *evacuate* into a new shard key."}],"source_content_type":"text/x-rst","patch_set":17,"id":"e96d62f5_473adeff","line":298,"updated":"2022-12-08 16:28:48.000000000","message":"nit s/percieve/perceive/","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":false,"context_lines":[{"line_number":295,"context_line":"which may not be realistically needed by the operators."},{"line_number":296,"context_line":""},{"line_number":297,"context_line":".. NOTE:: An overall migration path is envisioned, but what is"},{"line_number":298,"context_line":"          noted here is only a suggestion and how we percieve the"},{"line_number":299,"context_line":"          overall process."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":".. TODO:: Potental idea, nova could *evacuate* into a new shard key."}],"source_content_type":"text/x-rst","patch_set":17,"id":"4c54cd44_7261bdcb","line":298,"in_reply_to":"e96d62f5_473adeff","updated":"2022-12-09 23:10:27.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":298,"context_line":"          noted here is only a suggestion and how we percieve the"},{"line_number":299,"context_line":"          overall process."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":".. TODO:: Potental idea, nova could *evacuate* into a new shard key."},{"line_number":302,"context_line":"          And migrate scematics could be supported possibly. The key would"},{"line_number":303,"context_line":"          be to handle the initial upgrade for the nova-compute process,"},{"line_number":304,"context_line":"          as the very last thing we would want performance wise is the"}],"source_content_type":"text/x-rst","patch_set":17,"id":"47f0a392_ef6c9403","line":301,"updated":"2022-12-08 16:28:48.000000000","message":"nit s/potental/potential/","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":298,"context_line":"          noted here is only a suggestion and how we percieve the"},{"line_number":299,"context_line":"          overall process."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":".. TODO:: Potental idea, nova could *evacuate* into a new shard key."},{"line_number":302,"context_line":"          And migrate scematics could be supported possibly. The key would"},{"line_number":303,"context_line":"          be to handle the initial upgrade for the nova-compute process,"},{"line_number":304,"context_line":"          as the very last thing we would want performance wise is the"}],"source_content_type":"text/x-rst","patch_set":17,"id":"a566294c_2f3618fb","line":301,"in_reply_to":"47f0a392_ef6c9403","updated":"2022-12-12 18:33:37.000000000","message":"Done","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":388,"context_line":"------------------"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"A periodic task would be added to execute on all conductors to maintain the"},{"line_number":391,"context_line":"state of a ``shards`` table."},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"Additionally, there will be an additional database query performed when"},{"line_number":394,"context_line":"creating new nodes, to consult the contents of the shards table to determine"}],"source_content_type":"text/x-rst","patch_set":17,"id":"b2fcedd9_c4c9368b","line":391,"updated":"2022-12-08 16:28:48.000000000","message":"is that periodic task configurable? wrt how often it is done? each conductor will... go through their ironic nodes, get the shard keys and counts, and then try to update the shard table?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":false,"context_lines":[{"line_number":388,"context_line":"------------------"},{"line_number":389,"context_line":""},{"line_number":390,"context_line":"A periodic task would be added to execute on all conductors to maintain the"},{"line_number":391,"context_line":"state of a ``shards`` table."},{"line_number":392,"context_line":""},{"line_number":393,"context_line":"Additionally, there will be an additional database query performed when"},{"line_number":394,"context_line":"creating new nodes, to consult the contents of the shards table to determine"}],"source_content_type":"text/x-rst","patch_set":17,"id":"18643d25_b30f97f7","line":391,"in_reply_to":"b2fcedd9_c4c9368b","updated":"2022-12-08 20:53:50.000000000","message":"uhh, yeah, removing this. It is outdated from an earlier version.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"e0212e13f129ff24ed3fdde1f27bd5b3a519301b","unresolved":true,"context_lines":[{"line_number":436,"context_line":"* Add query by shard capability to the Nodes and Ports database tables."},{"line_number":437,"context_line":"* Add logic for node creation to handle auto-assignment to a"},{"line_number":438,"context_line":"  ``shard`` when relevent, and option to both enable/disable"},{"line_number":439,"context_line":"  an automatic setting of ``shard`` upon node create."},{"line_number":440,"context_line":"* Expose ``shard`` on the node API, with an incremented microversion"},{"line_number":441,"context_line":"  *and* implement a new RBAC policy which restricts the ability to change"},{"line_number":442,"context_line":"  the ``shard`` value"}],"source_content_type":"text/x-rst","patch_set":17,"id":"d463daf1_4a52ed49","line":439,"updated":"2022-12-08 16:28:48.000000000","message":"I think we ought to mention this (outside of work items). I\u0027m guessing there will be one or more new config options? what are the default values? what does it mean when someone is upgrading to this new ironic -- will the shard field exist but not be set, or ... ?? \n\nhow does the auto assignment work? (to be decided later?) IF this is for the consumer, will we add some option to indicate eg the max # of nodes that can be in one shard?","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":436,"context_line":"* Add query by shard capability to the Nodes and Ports database tables."},{"line_number":437,"context_line":"* Add logic for node creation to handle auto-assignment to a"},{"line_number":438,"context_line":"  ``shard`` when relevent, and option to both enable/disable"},{"line_number":439,"context_line":"  an automatic setting of ``shard`` upon node create."},{"line_number":440,"context_line":"* Expose ``shard`` on the node API, with an incremented microversion"},{"line_number":441,"context_line":"  *and* implement a new RBAC policy which restricts the ability to change"},{"line_number":442,"context_line":"  the ``shard`` value"}],"source_content_type":"text/x-rst","patch_set":17,"id":"d2490345_e35f7c16","line":439,"in_reply_to":"92a569ba_bf9c089a","updated":"2022-12-12 18:33:37.000000000","message":"we\u0027ve punted this.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"97f68e4a90a21ab070bc4f75a0e85f73d41de3af","unresolved":true,"context_lines":[{"line_number":436,"context_line":"* Add query by shard capability to the Nodes and Ports database tables."},{"line_number":437,"context_line":"* Add logic for node creation to handle auto-assignment to a"},{"line_number":438,"context_line":"  ``shard`` when relevent, and option to both enable/disable"},{"line_number":439,"context_line":"  an automatic setting of ``shard`` upon node create."},{"line_number":440,"context_line":"* Expose ``shard`` on the node API, with an incremented microversion"},{"line_number":441,"context_line":"  *and* implement a new RBAC policy which restricts the ability to change"},{"line_number":442,"context_line":"  the ``shard`` value"}],"source_content_type":"text/x-rst","patch_set":17,"id":"92a569ba_bf9c089a","line":439,"in_reply_to":"d463daf1_4a52ed49","updated":"2022-12-08 20:53:50.000000000","message":"I think we\u0027re in the area where that is going to have to organically come about, and becomes a logical minor improvement. I think if we specify too far past the MVP, we\u0027re over designing because code review may end up being different.\n\nAt the same time, this was viewed as more valuable but it is definitely beyond MVP.","commit_id":"59132e2337e744b0da2e860b745c88394e2bfbdd"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":251,"context_line":"In order to set a shard value, a user will need to patch the field."},{"line_number":252,"context_line":"This is canned functionality of the existing nodes controller, and will"},{"line_number":253,"context_line":"be API version and RBAC policy guarded in order to prevent inappropriate"},{"line_number":254,"context_line":"changes to the field once set. Like all other fields, this operation"},{"line_number":255,"context_line":"takes the shape of a JSON Patch."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"GET /v1/nodes?shard\u003dVALUE"}],"source_content_type":"text/x-rst","patch_set":18,"id":"3a65b87e_50bcd067","line":254,"updated":"2022-12-09 16:37:03.000000000","message":"if an older microversion, shards won\u0027t be available, right? (I\u0027ve forgotten if we show new fields with no value, or we don\u0027t even show new fields if an older microversion.)","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":false,"context_lines":[{"line_number":251,"context_line":"In order to set a shard value, a user will need to patch the field."},{"line_number":252,"context_line":"This is canned functionality of the existing nodes controller, and will"},{"line_number":253,"context_line":"be API version and RBAC policy guarded in order to prevent inappropriate"},{"line_number":254,"context_line":"changes to the field once set. Like all other fields, this operation"},{"line_number":255,"context_line":"takes the shape of a JSON Patch."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"GET /v1/nodes?shard\u003dVALUE"}],"source_content_type":"text/x-rst","patch_set":18,"id":"faffc384_764a6036","line":254,"in_reply_to":"18633831_342b7a15","updated":"2022-12-12 16:36:02.000000000","message":"Ack","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":true,"context_lines":[{"line_number":251,"context_line":"In order to set a shard value, a user will need to patch the field."},{"line_number":252,"context_line":"This is canned functionality of the existing nodes controller, and will"},{"line_number":253,"context_line":"be API version and RBAC policy guarded in order to prevent inappropriate"},{"line_number":254,"context_line":"changes to the field once set. Like all other fields, this operation"},{"line_number":255,"context_line":"takes the shape of a JSON Patch."},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"GET /v1/nodes?shard\u003dVALUE"}],"source_content_type":"text/x-rst","patch_set":18,"id":"18633831_342b7a15","line":254,"in_reply_to":"3a65b87e_50bcd067","updated":"2022-12-09 23:10:27.000000000","message":"The API code filters out crud operations against fields if it is below the specified version. Dmitry codified that a long while back.","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":259,"context_line":"Returns a subset of nodes limited by shard key. In this specific case"},{"line_number":260,"context_line":"we will also allow a string value of \"none\", \"None\" or \"null\" to"},{"line_number":261,"context_line":"be utilized to retrieve a list of nodes which do *not* have a shard"},{"line_number":262,"context_line":"key set. Logic to handle that would be in the DB API layer."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"7b510ea8_f049e73a","line":262,"updated":"2022-12-09 16:37:03.000000000","message":"We\u0027ll allow eg GET /v1/nodes?shard\u003dSHARDFoo\u0026provision_state\u003dactive","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":259,"context_line":"Returns a subset of nodes limited by shard key. In this specific case"},{"line_number":260,"context_line":"we will also allow a string value of \"none\", \"None\" or \"null\" to"},{"line_number":261,"context_line":"be utilized to retrieve a list of nodes which do *not* have a shard"},{"line_number":262,"context_line":"key set. Logic to handle that would be in the DB API layer."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"d3f72127_510d03ea","line":262,"in_reply_to":"527d6247_8bc1ab21","updated":"2022-12-12 18:33:37.000000000","message":"thx for confirming!","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":true,"context_lines":[{"line_number":259,"context_line":"Returns a subset of nodes limited by shard key. In this specific case"},{"line_number":260,"context_line":"we will also allow a string value of \"none\", \"None\" or \"null\" to"},{"line_number":261,"context_line":"be utilized to retrieve a list of nodes which do *not* have a shard"},{"line_number":262,"context_line":"key set. Logic to handle that would be in the DB API layer."},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"GET /v1/ports?shard\u003dVALUE,VALUE2,VALUEZ"},{"line_number":265,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"527d6247_8bc1ab21","line":262,"in_reply_to":"7b510ea8_f049e73a","updated":"2022-12-12 17:37:36.000000000","message":"... This is how the DB layer is written... afaik filters are cumulative, and this would just be another filter in the list.","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"A ``--shard`` node level parameter for ``baremetal node set``"},{"line_number":305,"context_line":"would also be added."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"\"openstacksdk\""},{"line_number":308,"context_line":"~~~~~~~~~~~~~~"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"31d55f1b_fc7dd440","line":306,"updated":"2022-12-09 16:37:03.000000000","message":"just remembered. also \u0027baremetal port list --shard SHARD1 --shard SHARD2\u0027 ? (I forgot the syntax, is it \u0027--shard x --shard y\u0027 or \u0027--shard x,y\u0027?","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":true,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"A ``--shard`` node level parameter for ``baremetal node set``"},{"line_number":305,"context_line":"would also be added."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"\"openstacksdk\""},{"line_number":308,"context_line":"~~~~~~~~~~~~~~"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"7ea826c1_070b94a8","line":306,"in_reply_to":"31d55f1b_fc7dd440","updated":"2022-12-09 23:10:27.000000000","message":"This is a... really good question. I\u0027m not sure it is a hard requirement to really offer, as the list is more about programatic consumption. Dunno. Maybe this is one of those \"implementer\u0027s prerogative\" things.","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dff87e107db3ec3b21f1807cc8909bae0c30a702","unresolved":true,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"A ``--shard`` node level parameter for ``baremetal node set``"},{"line_number":305,"context_line":"would also be added."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"\"openstacksdk\""},{"line_number":308,"context_line":"~~~~~~~~~~~~~~"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"9ccd6821_86bc4695","line":306,"in_reply_to":"7ea826c1_070b94a8","updated":"2022-12-12 15:58:52.000000000","message":"I think we \u0027just\u0027 need to be consistent with existing specification of lists of things (like eg specifying fields, columns, whatever). I don\u0027t recall off the top of my head what that syntax might be. We shouldn\u0027t do something that is inconsistent :)","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"A ``--shard`` node level parameter for ``baremetal node set``"},{"line_number":305,"context_line":"would also be added."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"\"openstacksdk\""},{"line_number":308,"context_line":"~~~~~~~~~~~~~~"},{"line_number":309,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"0b534784_93ab7387","line":306,"in_reply_to":"9ccd6821_86bc4695","updated":"2022-12-12 18:33:37.000000000","message":"Ack","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":476,"context_line":"  not consistently populated. i.e. ``shard`` is not populated on"},{"line_number":477,"context_line":"  all nodes."},{"line_number":478,"context_line":"* Add logic to the online-data-migrations to enable an online data"},{"line_number":479,"context_line":"  migration to include setting of ``shard``."},{"line_number":480,"context_line":"* Update OpenStack SDK and python-ironicclient"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Stretch:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"637d34a8_bd37312f","line":479,"updated":"2022-12-09 16:37:03.000000000","message":"This will be interesting, curious to know what we end up doing here :)","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":true,"context_lines":[{"line_number":476,"context_line":"  not consistently populated. i.e. ``shard`` is not populated on"},{"line_number":477,"context_line":"  all nodes."},{"line_number":478,"context_line":"* Add logic to the online-data-migrations to enable an online data"},{"line_number":479,"context_line":"  migration to include setting of ``shard``."},{"line_number":480,"context_line":"* Update OpenStack SDK and python-ironicclient"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Stretch:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"e1536983_2df1428f","line":479,"in_reply_to":"637d34a8_bd37312f","updated":"2022-12-09 23:10:27.000000000","message":"With the way discussions are going, I\u0027m starting to think this is optional. Moving into stretch.","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":476,"context_line":"  not consistently populated. i.e. ``shard`` is not populated on"},{"line_number":477,"context_line":"  all nodes."},{"line_number":478,"context_line":"* Add logic to the online-data-migrations to enable an online data"},{"line_number":479,"context_line":"  migration to include setting of ``shard``."},{"line_number":480,"context_line":"* Update OpenStack SDK and python-ironicclient"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Stretch:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"8ee9a897_e3f65119","line":479,"in_reply_to":"9b92a2f8_c797da14","updated":"2022-12-12 17:37:36.000000000","message":"I\u0027ll do the one on 502 if JayF does not. deployments in inconsistent states need to be identified and warned upon.","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dff87e107db3ec3b21f1807cc8909bae0c30a702","unresolved":true,"context_lines":[{"line_number":476,"context_line":"  not consistently populated. i.e. ``shard`` is not populated on"},{"line_number":477,"context_line":"  all nodes."},{"line_number":478,"context_line":"* Add logic to the online-data-migrations to enable an online data"},{"line_number":479,"context_line":"  migration to include setting of ``shard``."},{"line_number":480,"context_line":"* Update OpenStack SDK and python-ironicclient"},{"line_number":481,"context_line":""},{"line_number":482,"context_line":"Stretch:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"9b92a2f8_c797da14","line":479,"in_reply_to":"e1536983_2df1428f","updated":"2022-12-12 15:58:52.000000000","message":"don\u0027t forget to remove the above 2 lines :)","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"aa1b038a50c52bf4c2b991a0eb1589d91d6707ef","unresolved":true,"context_lines":[{"line_number":486,"context_line":""},{"line_number":487,"context_line":"* Add logic for node creation to handle auto-assignment to a"},{"line_number":488,"context_line":"  ``shard`` when relevent, and option to both enable/disable"},{"line_number":489,"context_line":"  an automatic setting of ``shard`` upon node create."},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"Bonus items:"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"30e1f7f1_fc536b35","line":489,"updated":"2022-12-09 16:37:03.000000000","message":"hmm. I\u0027d defer this to another spec... Or, at least, I don\u0027t think I could approve this \u0027auto-assignment\u0027 without more details...","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":486,"context_line":""},{"line_number":487,"context_line":"* Add logic for node creation to handle auto-assignment to a"},{"line_number":488,"context_line":"  ``shard`` when relevent, and option to both enable/disable"},{"line_number":489,"context_line":"  an automatic setting of ``shard`` upon node create."},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"Bonus items:"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"1e5093da_9e66b9de","line":489,"in_reply_to":"1300b03a_c368bf7a","updated":"2022-12-12 17:37:36.000000000","message":"Removing.","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"859dbc822896418a334d57592ef17ada185a3500","unresolved":true,"context_lines":[{"line_number":486,"context_line":""},{"line_number":487,"context_line":"* Add logic for node creation to handle auto-assignment to a"},{"line_number":488,"context_line":"  ``shard`` when relevent, and option to both enable/disable"},{"line_number":489,"context_line":"  an automatic setting of ``shard`` upon node create."},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"Bonus items:"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"3c00ac26_4d41d9a4","line":489,"in_reply_to":"30e1f7f1_fc536b35","updated":"2022-12-09 23:10:27.000000000","message":"Proposed Change has the high level details. it comes down to finding the least populated shard and having an explicit control. I\u0027d be surprised if this is more than 100 lines of code and tests.","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dff87e107db3ec3b21f1807cc8909bae0c30a702","unresolved":true,"context_lines":[{"line_number":486,"context_line":""},{"line_number":487,"context_line":"* Add logic for node creation to handle auto-assignment to a"},{"line_number":488,"context_line":"  ``shard`` when relevent, and option to both enable/disable"},{"line_number":489,"context_line":"  an automatic setting of ``shard`` upon node create."},{"line_number":490,"context_line":""},{"line_number":491,"context_line":"Bonus items:"},{"line_number":492,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"1300b03a_c368bf7a","line":489,"in_reply_to":"3c00ac26_4d41d9a4","updated":"2022-12-12 15:58:52.000000000","message":"I feel like it is too high level. This might require new config options, change to REST API -- stuff that the spec was intended to capture :-(\n\neg, elsewhere it sez \u0027we would not automatically create *new* shards.\u0027 I don\u0027t know how that could co-exist with this logic, without more details.","commit_id":"363b622fecff11abeefcaf7d969dbe77e11a2009"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Proposed change"},{"line_number":67,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Overall the idea, is to introduce a ``shard`` field on the node object."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Node creation logic would then be able to consult the shard state"}],"source_content_type":"text/x-rst","patch_set":19,"id":"15dbd0f6_a4ada633","line":68,"updated":"2022-12-12 16:36:02.000000000","message":"This section describes MORE than basic \u0027shard\u0027 support. There is value to describing the overall vision/goal. Maybe this section can be renamed and a new \u0027Proposed change\u0027 just adds the ironic node shard field, and rest API for getting, setting...","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Proposed change"},{"line_number":67,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Overall the idea, is to introduce a ``shard`` field on the node object."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"Node creation logic would then be able to consult the shard state"}],"source_content_type":"text/x-rst","patch_set":19,"id":"d9ef77ba_86b87593","line":68,"in_reply_to":"15dbd0f6_a4ada633","updated":"2022-12-12 17:37:36.000000000","message":"Stripped automatic stuffs out to just keep it minimal.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":true,"context_lines":[{"line_number":94,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":95,"context_line":"still optional for Ironic, and the shard *exists* for the API"},{"line_number":96,"context_line":"consumer."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":99,"context_line":"be updated to accept a ``shard`` parameter (i.e. GET /v1/nodes?shard\u003dfoo,"},{"line_number":100,"context_line":"GET /v1/ports?shard\u003dfoo, GET /v1/portgroups?shard\u003dfoo) in the query to allow"}],"source_content_type":"text/x-rst","patch_set":19,"id":"e6708fd7_3cbf8f34","line":97,"updated":"2022-12-12 16:36:02.000000000","message":"I would say that the stuff below is more in line with Proposed Change and the stuff above is the possible vision?","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":94,"context_line":"We *can* provide a means to pre-set the shard, but ultimately it is"},{"line_number":95,"context_line":"still optional for Ironic, and the shard *exists* for the API"},{"line_number":96,"context_line":"consumer."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"In order to facilitate the usage ``/v1/nodes`` and ``/v1/ports`` would"},{"line_number":99,"context_line":"be updated to accept a ``shard`` parameter (i.e. GET /v1/nodes?shard\u003dfoo,"},{"line_number":100,"context_line":"GET /v1/ports?shard\u003dfoo, GET /v1/portgroups?shard\u003dfoo) in the query to allow"}],"source_content_type":"text/x-rst","patch_set":19,"id":"18fb2598_f972899b","line":97,"in_reply_to":"e6708fd7_3cbf8f34","updated":"2022-12-12 17:37:36.000000000","message":"Revised as such.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dff87e107db3ec3b21f1807cc8909bae0c30a702","unresolved":true,"context_lines":[{"line_number":134,"context_line":"One key aspect, which has been recognized thus far, is that existing"},{"line_number":135,"context_line":"mechanisms can be inefficiently leveraged to achieve this. An example"},{"line_number":136,"context_line":"of this is that ``conductor_group``, ``owner``, ``lessee`` all allow for"},{"line_number":137,"context_line":"filtering of the node result set. A ``conductor_group`` being an explict"},{"line_number":138,"context_line":"aspect an API client can request, where as ``owner`` and ``lessee`` are"},{"line_number":139,"context_line":"access control based filters tied to the API client\u0027s submitted Project"},{"line_number":140,"context_line":"ID used for Authentication. More information on why ``conductor_group``"}],"source_content_type":"text/x-rst","patch_set":19,"id":"915f3627_d12900e6","line":137,"updated":"2022-12-12 15:58:52.000000000","message":"nit s/explict/explicit/","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":134,"context_line":"One key aspect, which has been recognized thus far, is that existing"},{"line_number":135,"context_line":"mechanisms can be inefficiently leveraged to achieve this. An example"},{"line_number":136,"context_line":"of this is that ``conductor_group``, ``owner``, ``lessee`` all allow for"},{"line_number":137,"context_line":"filtering of the node result set. A ``conductor_group`` being an explict"},{"line_number":138,"context_line":"aspect an API client can request, where as ``owner`` and ``lessee`` are"},{"line_number":139,"context_line":"access control based filters tied to the API client\u0027s submitted Project"},{"line_number":140,"context_line":"ID used for Authentication. More information on why ``conductor_group``"}],"source_content_type":"text/x-rst","patch_set":19,"id":"feb0fed2_5b411c29","line":137,"in_reply_to":"915f3627_d12900e6","updated":"2022-12-12 17:37:36.000000000","message":"Done","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dff87e107db3ec3b21f1807cc8909bae0c30a702","unresolved":true,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"In the ``conductor_group`` case, there is no way to discover the"},{"line_number":152,"context_line":"conductor groups. Where as for ``owner`` and ``lessee``, these are"},{"line_number":153,"context_line":"specific project ID value fields."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Why not Conductor Group?"},{"line_number":156,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":19,"id":"258c0daf_93ca678c","line":153,"updated":"2022-12-12 15:58:52.000000000","message":"I want to point out that instead of support for shards, one could decide to eg enhance support for conductor groups so that there IS a way to discover the conductor groups and get a count of ironnic nodes in each conductor group 😊\n\nI think, though, that the idea of a generic \u0027shard\u0027 (separate from existing functionality) makes sense.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"In the ``conductor_group`` case, there is no way to discover the"},{"line_number":152,"context_line":"conductor groups. Where as for ``owner`` and ``lessee``, these are"},{"line_number":153,"context_line":"specific project ID value fields."},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"Why not Conductor Group?"},{"line_number":156,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":19,"id":"e5016cc3_6f38cefe","line":153,"in_reply_to":"258c0daf_93ca678c","updated":"2022-12-12 17:37:36.000000000","message":"Okay, modifying the text a little. :)","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dff87e107db3ec3b21f1807cc8909bae0c30a702","unresolved":true,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"POST /v1/nodes/\u003cnode\u003e/shard"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"In order to set a shard parameter on a node."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"PATCH /v1/nodes/\u003cnode\u003e"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"3317ffdd_11fbd8e7","line":266,"updated":"2022-12-12 15:58:52.000000000","message":"What is a \u0027shard parameter\u0027 vs a \u0027shard value\u0027? Ie, what is the difference between POST /v1/nodes/\u003cnode/shard and PATCH /v1/nodes/\u003cnode\u003e ?","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":true,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"POST /v1/nodes/\u003cnode\u003e/shard"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"In order to set a shard parameter on a node."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"PATCH /v1/nodes/\u003cnode\u003e"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"866ee7ac_52cbfb78","line":266,"in_reply_to":"3317ffdd_11fbd8e7","updated":"2022-12-12 17:37:36.000000000","message":"Patch requires a jsonpatch to be used AFAIK. Just going on what you guys have told me to write.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2a0d0a55c0b78ab2e004dfda9d5b228a4c7c789b","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"POST /v1/nodes/\u003cnode\u003e/shard"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"In order to set a shard parameter on a node."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"PATCH /v1/nodes/\u003cnode\u003e"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"7eeb2da2_ccd612e3","line":266,"in_reply_to":"7743b92f_c93d4a86","updated":"2022-12-12 18:43:55.000000000","message":"Done","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":true,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"POST /v1/nodes/\u003cnode\u003e/shard"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"In order to set a shard parameter on a node."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"PATCH /v1/nodes/\u003cnode\u003e"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"7743b92f_c93d4a86","line":266,"in_reply_to":"866ee7ac_52cbfb78","updated":"2022-12-12 18:33:37.000000000","message":"oops. if I asked for this, I was mistaken. the PATCH /v1/nodes/\u003cnode\u003e is sufficient.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":true,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"          So evacuate makes sense to move an \"instance\" to another"},{"line_number":372,"context_line":"          nova-compute service. It would just need to know we\u0027re actually"},{"line_number":373,"context_line":"          talking about already deployed baremetal. Need a nova expert."},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"Anticipated initial migration steps:"},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"aff55fdd_522fe0dc","line":373,"updated":"2022-12-12 16:36:02.000000000","message":"The above stuff is potential future stuff, so could mention that explicitly, outside the scope of this spec, future, blah blah.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":370,"context_line":""},{"line_number":371,"context_line":"          So evacuate makes sense to move an \"instance\" to another"},{"line_number":372,"context_line":"          nova-compute service. It would just need to know we\u0027re actually"},{"line_number":373,"context_line":"          talking about already deployed baremetal. Need a nova expert."},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"Anticipated initial migration steps:"},{"line_number":376,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"00be8766_4659b24c","line":373,"in_reply_to":"aff55fdd_522fe0dc","updated":"2022-12-12 17:37:36.000000000","message":"Done","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":true,"context_lines":[{"line_number":372,"context_line":"          nova-compute service. It would just need to know we\u0027re actually"},{"line_number":373,"context_line":"          talking about already deployed baremetal. Need a nova expert."},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"Anticipated initial migration steps:"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"Initial Step:"},{"line_number":378,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"a4f36f9a_c475544e","line":375,"updated":"2022-12-12 16:36:02.000000000","message":"we\u0027re not going to do any migration right now? Just provide basic support for the new shard field?","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":372,"context_line":"          nova-compute service. It would just need to know we\u0027re actually"},{"line_number":373,"context_line":"          talking about already deployed baremetal. Need a nova expert."},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"Anticipated initial migration steps:"},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"Initial Step:"},{"line_number":378,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"2bb709fe_b4e27071","line":375,"in_reply_to":"a4f36f9a_c475544e","updated":"2022-12-12 17:37:36.000000000","message":"Clarifying.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"dff87e107db3ec3b21f1807cc8909bae0c30a702","unresolved":true,"context_lines":[{"line_number":462,"context_line":"automatically where pertinant, *OR* require a manual command to be executed"},{"line_number":463,"context_line":"which handles node locking and shard key setting. While not yet entirely clear"},{"line_number":464,"context_line":"the agreed upon limitation is that we would not automatically create"},{"line_number":465,"context_line":"*new* shards."},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"This may require a new configuration option to control this logic, but"},{"line_number":468,"context_line":"the logic overall is not viewed as a blocking aspect to the more critical"}],"source_content_type":"text/x-rst","patch_set":19,"id":"d3b1ca2a_d43ba5f4","line":465,"updated":"2022-12-12 15:58:52.000000000","message":"\u0027agreed upon\u0027 by whom?\n\nif we don\u0027t automatically create new shards -- we are saying that the only way new shards are added are via the REST API to set the shard value of an ironic node, right?","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":true,"context_lines":[{"line_number":462,"context_line":"automatically where pertinant, *OR* require a manual command to be executed"},{"line_number":463,"context_line":"which handles node locking and shard key setting. While not yet entirely clear"},{"line_number":464,"context_line":"the agreed upon limitation is that we would not automatically create"},{"line_number":465,"context_line":"*new* shards."},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"This may require a new configuration option to control this logic, but"},{"line_number":468,"context_line":"the logic overall is not viewed as a blocking aspect to the more critical"}],"source_content_type":"text/x-rst","patch_set":19,"id":"f8a50934_2507f458","line":465,"in_reply_to":"d3b1ca2a_d43ba5f4","updated":"2022-12-12 17:37:36.000000000","message":"ironic cores engaged in the discussion thus far. Revising.\n\nNo, programmatic creation of shards in migration/upgrade.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":462,"context_line":"automatically where pertinant, *OR* require a manual command to be executed"},{"line_number":463,"context_line":"which handles node locking and shard key setting. While not yet entirely clear"},{"line_number":464,"context_line":"the agreed upon limitation is that we would not automatically create"},{"line_number":465,"context_line":"*new* shards."},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"This may require a new configuration option to control this logic, but"},{"line_number":468,"context_line":"the logic overall is not viewed as a blocking aspect to the more critical"}],"source_content_type":"text/x-rst","patch_set":19,"id":"66fa83cc_4ce303cf","line":465,"in_reply_to":"f8a50934_2507f458","updated":"2022-12-12 18:33:37.000000000","message":"Ack","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":true,"context_lines":[{"line_number":507,"context_line":"* Update OpenStack SDK and python-ironicclient"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"Stretch:"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"While not entirely defined, a stretch goal for this work"},{"line_number":512,"context_line":"beyond MVP is to:"},{"line_number":513,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"ff9e37d6_d00b6a30","line":510,"updated":"2022-12-12 16:36:02.000000000","message":"Please no stretch. I think we should do this as a new spec after the plumbing is in.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":507,"context_line":"* Update OpenStack SDK and python-ironicclient"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":"Stretch:"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"While not entirely defined, a stretch goal for this work"},{"line_number":512,"context_line":"beyond MVP is to:"},{"line_number":513,"context_line":""}],"source_content_type":"text/x-rst","patch_set":19,"id":"026b8c2c_ff08ed70","line":510,"in_reply_to":"ff9e37d6_d00b6a30","updated":"2022-12-12 17:37:36.000000000","message":"Done","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":true,"context_lines":[{"line_number":526,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"This specification is loosely dependent upon Nova accepting"},{"line_number":529,"context_line":"a plan for use of the sharding model of data."},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"Testing"},{"line_number":532,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":19,"id":"3d034ab4_4ea50a92","line":529,"updated":"2022-12-12 16:36:02.000000000","message":"if we keep this spec to the plumbing, there is no dependency?","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":true,"context_lines":[{"line_number":526,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"This specification is loosely dependent upon Nova accepting"},{"line_number":529,"context_line":"a plan for use of the sharding model of data."},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"Testing"},{"line_number":532,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":19,"id":"eb53ffd7_a314bbc6","line":529,"in_reply_to":"3d034ab4_4ea50a92","updated":"2022-12-12 17:37:36.000000000","message":"Cross dependency is weird, I\u0027ll clarify what I was meaning here.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":false,"context_lines":[{"line_number":526,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"This specification is loosely dependent upon Nova accepting"},{"line_number":529,"context_line":"a plan for use of the sharding model of data."},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"Testing"},{"line_number":532,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":19,"id":"4fb65351_bdbd25fc","line":529,"in_reply_to":"eb53ffd7_a314bbc6","updated":"2022-12-12 18:33:37.000000000","message":"Ack","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"cb1b66d997a1ffe4629e930eb53c1f645b595f62","unresolved":true,"context_lines":[{"line_number":539,"context_line":""},{"line_number":540,"context_line":"We largely expect this will leveraged as the future default mode of operation"},{"line_number":541,"context_line":"with Nova, and as such it is likely going to become a key aspect of integrated"},{"line_number":542,"context_line":"interaction of existing scenario tests."},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":545,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":19,"id":"844087ab_113b61de","line":542,"updated":"2022-12-12 16:36:02.000000000","message":"this would be part of \u0027future\u0027. We probably don\u0027t want anything in this spec that mentions any \u0027mode\u0027..., cuz otherwise, we\u0027d need some config to set that mode or whatever...","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8058e424f0790f6ff3190a5e3f799aaf824a2285","unresolved":false,"context_lines":[{"line_number":539,"context_line":""},{"line_number":540,"context_line":"We largely expect this will leveraged as the future default mode of operation"},{"line_number":541,"context_line":"with Nova, and as such it is likely going to become a key aspect of integrated"},{"line_number":542,"context_line":"interaction of existing scenario tests."},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"Upgrades and Backwards Compatibility"},{"line_number":545,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":19,"id":"4c302bba_b4265634","line":542,"in_reply_to":"844087ab_113b61de","updated":"2022-12-12 17:37:36.000000000","message":"They will, but okay.","commit_id":"4603e81ca978e4e089cb79b941ca0947ea420d99"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":true,"context_lines":[{"line_number":269,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":270,"context_line":"to the database to facilitate it."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"GET /v1/shards"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":275,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":20,"id":"430b2dee_a10e34f0","line":272,"updated":"2022-12-12 18:33:37.000000000","message":"I\u0027m staring at this and wondering about eg \u0027GET /v1/nodes/shards\u0027, since shards only relate to nodes. Anyway, just musing about it. Moving on...","commit_id":"f3995643c7f8fcbddc998812eea22b5f3d6497a8"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"91c42d875a5d40977b4a5763e7a1f05b5329b423","unresolved":true,"context_lines":[{"line_number":269,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":270,"context_line":"to the database to facilitate it."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"GET /v1/shards"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":275,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":20,"id":"d71679d0_c843709a","line":272,"in_reply_to":"430b2dee_a10e34f0","updated":"2022-12-12 18:38:48.000000000","message":".... I thought I noted it would be a 404. for now... hmm... *shrugs*","commit_id":"f3995643c7f8fcbddc998812eea22b5f3d6497a8"},{"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":"7cfe88cbfa910fb24c5e2532f3419bd20c49e678","unresolved":true,"context_lines":[{"line_number":269,"context_line":"provided by the caller. Specifically would utilize a joined query"},{"line_number":270,"context_line":"to the database to facilitate it."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"GET /v1/shards"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"Returns a JSON representing the shard keys and counts of nodes"},{"line_number":275,"context_line":"utilizing the shard."}],"source_content_type":"text/x-rst","patch_set":20,"id":"58bbcd49_c63ac3c9","line":272,"in_reply_to":"d71679d0_c843709a","updated":"2022-12-12 19:36:03.000000000","message":"We have other values that have a top level and a node attribute. I think it\u0027d be confusing to home this anywhere but /v1/shards","commit_id":"f3995643c7f8fcbddc998812eea22b5f3d6497a8"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"70a5a51ad5a6601bdbab931d496296951268bb05","unresolved":true,"context_lines":[{"line_number":350,"context_line":"*we, Ironic* anticipate as the migration steps overall to move towards this"},{"line_number":351,"context_line":"model."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"Initial Step:"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"1) Complete the Ironic migration. Upon completion, executing the database"},{"line_number":356,"context_line":"   status check (i.e. ``ironic-status upgrade check``) should detect and warn"}],"source_content_type":"text/x-rst","patch_set":20,"id":"d12643a4_c76f2cbb","line":353,"updated":"2022-12-12 18:33:37.000000000","message":"All this is part of the above \u0027Anticipated initial Nova migration steps? If so, maybe get rid of this line.","commit_id":"f3995643c7f8fcbddc998812eea22b5f3d6497a8"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"2a0d0a55c0b78ab2e004dfda9d5b228a4c7c789b","unresolved":false,"context_lines":[{"line_number":350,"context_line":"*we, Ironic* anticipate as the migration steps overall to move towards this"},{"line_number":351,"context_line":"model."},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"Initial Step:"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"1) Complete the Ironic migration. Upon completion, executing the database"},{"line_number":356,"context_line":"   status check (i.e. ``ironic-status upgrade check``) should detect and warn"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1945dba4_b02ec585","line":353,"in_reply_to":"d12643a4_c76f2cbb","updated":"2022-12-12 18:43:55.000000000","message":"Done","commit_id":"f3995643c7f8fcbddc998812eea22b5f3d6497a8"}]}
