Tuesday, 2025-08-05

TheJuliaugh, looks like indirection and remotable stuffs are horribly broken00:14
TheJuliaa fresh mind tomororw00:14
opendevreviewAdam McArthur proposed openstack/ironic master: api: Add schema for inspection rules API (versioning)  https://review.opendev.org/c/openstack/ironic/+/95403803:22
opendevreviewAdam McArthur proposed openstack/ironic master: api: Add schema for inspection rules API (requests)  https://review.opendev.org/c/openstack/ironic/+/95403903:22
adamcarthur5stephenfin I have tried to move all your openapi changes forward in ironic. I'll also hopefully find time to do more myself this month. Cheers!03:23
adamcarthur5TheJulia (+ cc JayF) I have written another change to the spec, but I made the mistake of not writing down more notes during our meeting. I know we talked about thinking about things through the conductor, but I cannot remember how we were thinking about the database table layout. I have attempted to remember as best I can on these things but lets03:26
adamcarthur5see what you think. I am sure I will have a few other things wrong so I apologies for that. 03:26
adamcarthur5On a high-level, I have re-worked it to talk about instance_name and a location field together being the base for how to talk to this API. I think potentially starting with instance_name since that feature is written already. Potentially we need another spec to make some sort of location field a top-level thing? 03:27
opendevreviewAdam McArthur proposed openstack/ironic-specs master: Add emergency bulk operations  https://review.opendev.org/c/openstack/ironic-specs/+/95253303:27
opendevreviewTatiana Kholkina proposed openstack/ironic master: Fix logging for verification steps  https://review.opendev.org/c/openstack/ironic/+/95653105:26
rpittaugood morning ironic! o/06:33
queensly[m]Good morning o/07:13
abongalegood morning ironic!07:43
opendevreviewVerification of a change to openstack/ironic master failed: Populate switch_info with lldp system name  https://review.opendev.org/c/openstack/ironic/+/95647108:30
dtantsurJayF: ugh, I actually tried to put some logic there to catch your IPv6 case, but apparently it was not enough..09:06
opendevreviewJohannes Kulik proposed openstack/python-ironicclient master: Fix parallel initial version negotiation  https://review.opendev.org/c/openstack/python-ironicclient/+/95654209:15
jhorstmannHi, I need some help with this: The ironic state machine diagram shows nodes moving to available after successful cleaning (https://docs.openstack.org/ironic/2024.2/_images/states.svg). I am testing burnin with 2024.2 and the node moves back to manageable afterwards. What is the actual expected behaviour in this case?12:29
dtantsurjhorstmann: there is a duality in the cleaning process. Read on about manual vs automated cleaning, they end in different states.12:30
dtantsurManual cleaning is what you're using, and indeed it ends back in manageable12:30
dtantsurand yeah, an arrow is missing in the diagram :(12:31
jhorstmannalright, thanks for clarifying. I was not aware that there are different kinds of cleaning12:32
dtantsurjhorstmann: https://docs.openstack.org/ironic/latest/admin/cleaning.html12:32
dtantsurit's pretty brief but there is a short overview12:32
opendevreviewVerification of a change to openstack/ironic master failed: Populate switch_info with lldp system name  https://review.opendev.org/c/openstack/ironic/+/95647112:33
jhorstmanndtantsur: thanks for the link, it makes sense now12:38
rpittauTheJulia: just playing around with ironic-website, we should merge this https://github.com/OpenStackweb/ironic-website/pull/72 to fix the CI12:45
TheJuliarpittau: the foundation's website contractor was supposed to look at it this week12:59
TheJuliaAlso, good morning12:59
rpittaugood morning! :)12:59
jandersTheJulia : I have servicing/hold question: I am trying to establish a process of recovering from failed firmware updates with Ironic (and downstream operators using Ironic, but that's probably a separate topic). Based on our past discussions I came up with a method using a hold step on the node in "servicing failed" state:13:05
jandershttps://paste.openstack.org/show/bDQFJGZRPBkRjQfsg5dN/13:05
jandersmy question is: is this working as expected? Just from the sound of it holding may suggest that we will be putting the node in a hold state as opposed to going back to ACTIVE - but for me it does exactly that, bringing the node back to ACTIVE with no further steps needed. 13:06
TheJuliajanders: *blink* *blink*13:07
TheJuliahold shouldn't move the node to active13:07
TheJuliawut?!13:07
jandersIs the "hold" step essentially a "noop" step in this context? Is this intended behaviour and use of it (as opposed to me finding a way how to use it for something it wasn't designed for)?13:08
jandersit's been a while but I think I came up with this after discussing it with you and Jay after realising I can't run servicing with empty steps13:08
TheJuliahold should kick the node to a hold state, not active. something is very wrong13:09
jandersoops it sounds like the "using it for something it is not designed for" case13:09
jandersI will try to find that conversation13:09
jandersmay be useful reference to find out what were we trying to do back then13:10
cardoegood morning ironic13:11
cardoedtantsur: would really like to land https://review.opendev.org/c/openstack/ironic/+/955536 which is just a fix for the bad mocks for something that landed this cycle. The tests pass but not cause they're actually testing anything. This makes the mocks return the right data and checks for the right things. It fixes up a couple of other series that I've got running.13:14
cardoeHonestly anyone can review that. It just makes the mock of sushy's ethernet data behave how sushy behaves. It also returns the same data from the two different ways we can call it in sushy.13:15
cardoebtw metal3-integration test is timing out for a number of patches.13:16
dtantsurcardoe: oh, property mocks, the dark side of mocking in Python..13:18
cardoeNothing is actually failing. it's just hitting the max runtime.13:18
cardoeUnfortunately it's a property in sushy. So we should have the same behavior.13:18
TheJuliadtantsur: by dark side, do we mean cookies dark side, or holocrons and red light sabers ?13:19
cardoeI've got another series that gets rid of using the summary entirely.13:20
dtantsurcardoe: yeah, I know. I'd rather use something that cleans up the mock after the test though. Your version, IIUC, leaves the mock in place forever.13:20
dtantsur(getting rid of summary is probably not a bad idea)13:20
cardoeThat function is the function that creates the entirely mocked system13:21
cardoeIt gets passed a mock for `get_system()` and then populates it.13:21
cardoeSo that's why it leaves it13:21
dtantsurYou're changing type(system_mock.ethernet_interfaces), which is what? mock.Mock?13:22
cardoeYep13:22
dtantsurSo you're changing a global class, the one coming from Python even13:22
cardoehrm I see what you mean now13:22
TheJuliajanders: now that I'm waking up and becoming less cranky, hold is modeled out to be an entire state, a holding state, which is why I'm going "wut?!?", your starting in service fail which means overall it appears that the hold request is getting ignored or just not being honored by the conductor13:23
dtantsur>>> type(mock.Mock()) is mock.Mock13:24
dtantsurFalse13:24
dtantsurPython, you're so frustrating sometimes....13:24
cardoe    @mock.patch.object(redfish_utils, 'get_system', autospec=True) is where system_mock comes from13:26
dtantsurInteresting, Gemini claims that each Mock object has its own private subclass13:26
dtantsurin which case, what you're doing is acceptable13:27
cardoeyay13:28
dtantsursigh https://github.com/python/cpython/blob/main/Lib/unittest/mock.py#L450-L45913:28
dtantsurI've +2'ed your patch; fix the mock situation if you feel like13:28
cardoeSo I honestly just wanna commit a JSON file to ironic which is a fake system and just use sushy to return data based on that JSON file13:30
cardoeand not try to mock out sushy.13:30
dtantsurI'd accept such a change, especially since this is how sushy itself does its unit tests13:31
cardoeyep sushy ships that helper function for that too13:31
* TheJulia is still curious: cookies or light saber...13:37
TheJuliaadamcarthur5: I'll try to look today, but likely won't be until later this week. I envisioned it as a single table with a master operation of short and each conductor which is running. 13:43
TheJuliaadamcarthur5: I think adding location is easy, its just another field to add which is relatively easy and can be included unless your thinking more logic around it. At the end of the day, I was thinking of it as something free form which could just be a string we could then enable matching to so operators can mentally and quickly map nodes to physical structure because if you know the PDU on row 3 needs to go down, its 13:46
TheJuliastarts to become very easy to say "shutdown row 3"13:46
adamcarthur5TheJulia a okay, so just something that is set by operators, a bit like the shard API in layout?13:47
dtantsurTheJulia: cookie saber! how is this for a turn?13:48
TheJuliadtantsur: om nom nom13:49
TheJuliaadamcarthur5: exactly, just much  more informational for the operator until there is something disasterous :)13:49
TheJuliaHumans like to model things in any number of different ways, so... yeah :)13:50
adamcarthur5Great thanks. Sorry, I'm going to ask a few more questions about the Conductor thing, because I remember I was at a point where I understood it 😅13:50
TheJuliaadamcarthur5: no worries, just be warned I'm going to go make more coffeeeeee13:51
adamcarthur5I.e. we use this table, one row per conductor, to track emergency state, and then we use the current tables to track all other state (i.e. special emergency node-states)? I remember we were worried about performance at one point, so I want to check that13:51
adamcarthur5Ack about coffee :))13:52
TheJuliaadamcarthur5: I'd think of it as a schema where the UUID is not unique on it's own, but its UUID + conductor, for the original request there is just no conductor assigned, but each conductor would then pickup work and add it's own row as it is running.13:53
TheJuliabut to be fair, we didn't get into the nitty gritty of that13:54
adamcarthur5Ah! Yes. I think we went down this path because there's no batching operation, this was our solution to that 13:55
adamcarthur5Thank you :) I'll roughly write this up in the spec today so that we can discuss in future 13:56
TheJuliayeah, a periodic could eventually go "hey, this looks done" and maybe do a reconcile count or something. It was always thought of as semi-best-effort but then how do you report/identify/track that is ????13:57
TheJulia*and* opinionated based upon what end users really need13:57
TheJuliaadamcarthur5: another thought, and likely not as efficient, is we could bypass sync power state or use it to the overall advantage within each conductor. Leveraging it is likely best but it will also mean you'll have a higher swarm of db updates, but hey, maybe that is for the best.14:06
adamcarthur5Okay, thanks for this :) 14:09
JayFAisle note that our customer for this feature downstream specifically requested a button that they can push14:13
JayFWhile automatic resolution is a very nice feature and a good thing to do, I think it's culturally very difficult to get people to just stay hands off for 20 minutes for things to fix itself14:14
JayFAisle -> I'll (thanks voice to text)14:15
opendevreviewMerged openstack/ironic master: Fix logging for verification steps  https://review.opendev.org/c/openstack/ironic/+/95653114:26
cardoedtantsur: btw https://review.opendev.org/c/openstack/ironic/+/933066 works and I believe addresses your review comments through the series as well. that finishes off that release goal for 2025.1 https://specs.openstack.org/openstack/ironic-specs/priorities/2025-1-workitems.html which is unfortunately a release late.14:36
TheJuliayeah, they need to quickly see that something is happening, which is sort of critical14:38
TheJuliathe exact pattern under the hood TBD14:39
* dtantsur bookmarks the change15:10
JayFdtantsur: fwiw my machine was weirdly broken. v6 connectivity on the public interface; no v6 on loopback.15:11
JayFdtantsur: so I wouldn't take it as a valid test of any fallback code15:11
dtantsurright15:11
TheJuliaIs there an award for stupid code tricks? :)15:26
opendevreviewVerification of a change to openstack/ironic master failed: Populate switch_info with lldp system name  https://review.opendev.org/c/openstack/ironic/+/95647115:26
queensly[m]JayF: Hi, and welcome back.15:34
queensly[m]I saw your comment in the chat on this https://github.com/openstack/ironic/commit/94948bb1945c83b54a178d4e7e5ea54eb1af6f3e 15:34
queensly[m]A release note was added before it got merged.  I just wanted to know if you're referring to something else. 15:34
JayFqueensly[m]: I clearly just missed the file, a problem that occurs more easily when spending all day reading code. My apologies!15:34
queensly[m]No problem :)15:36
fricklerTheJulia: you mean like https://www.ioccc.org/ ? ;)15:46
TheJuliafrickler: lol, no. :)15:57
TheJuliamuahahahaha I've gotten remotable code to work through jsonrpc17:41
opendevreviewMerged openstack/ironic master: Populate switch_info with lldp system name  https://review.opendev.org/c/openstack/ironic/+/95647118:09
opendevreviewMerged openstack/ironic-python-agent-builder master: set a maximum systemd journal size  https://review.opendev.org/c/openstack/ironic-python-agent-builder/+/95452718:16
opendevreviewJulia Kreger proposed openstack/ironic master: WIP: Remove direct mapping from API -> DB  https://review.opendev.org/c/openstack/ironic/+/95651219:30
opendevreviewJulia Kreger proposed openstack/ironic master: WIP: Optional indirection API use  https://review.opendev.org/c/openstack/ironic/+/95650419:30
JayFTheJulia: you mentioned something yesterday about a catchup sync?19:36
TheJuliasure, but I'm on calls for the next 2 hours19:38
JayF3p our time?19:45
TheJuliasure19:52
TheJuliathat should give me enough time to try and redirect a customer :)19:52
cardoeI love Julia's optimism there.20:03
TheJuliaworst comes to worst, I'll use dd20:03
* TheJulia goes back to team retro20:05
JayFhardwaremanager.initialize() is pretty neat20:11
opendevreviewAdam McArthur proposed openstack/ironic-specs master: Add emergency bulk operations  https://review.opendev.org/c/openstack/ironic-specs/+/95253321:01
TheJuliaJayF: https://meet.google.com/ido-hsik-fdt?authuser=0 22:01
jandersTheJulia JayF let me know if/when you have some bandwidth for my service/hold thing, ready to join any time22:27
TheJuliajanders: come on over!22:32
TheJuliaokay, where did my brain go23:17
opendevreviewIvan Anfimov proposed openstack/ironic-ui master: Fix small mistake in text  https://review.opendev.org/c/openstack/ironic-ui/+/95661423:44
opendevreviewIvan Anfimov proposed openstack/ironic-ui master: Fix small mistake in text  https://review.opendev.org/c/openstack/ironic-ui/+/95661423:46

Generated by irclog2html.py 4.0.0 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!