-
Notifications
You must be signed in to change notification settings - Fork 155
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
types: add missing enumerations values for TaskStatus #1980
base: main
Are you sure you want to change the base?
Conversation
In a bug report, Subiquity failed during a refresh because it received an unexpected status. File "subiquity/common/api/server.py", line 164, in handler result = await implementation(**args) File "subiquity/server/controllers/refresh.py", line 240, in progress_GET return await self.get_progress(change_id) File "subiquity/server/controllers/refresh.py", line 224, in get_progress change = await self.app.snapdapi.v2.changes[change_id].GET() [...] File "subiquity/common/serialize.py", line 252, in _deserialize_attr args[field.name] = self._deserialize( File "subiquity/common/serialize.py", line 277, in _deserialize return self._deserialize_enum(annotation, context) File "subiquity/common/serialize.py", line 261, in _deserialize_enum return annotation(context.cur) File "/usr/lib/python3.10/enum.py", line 385, in __call__ return cls.__new__(cls, value) File "usr/lib/python3.10/enum.py", line 710, in __new__ raise ve_exc ValueError: 'Undone' is not a valid TaskStatus According to snapd's upstream repository, "Undone" existed before "Undoing", so I'm not sure why we didn't have the former but had the latter. Maybe we just overlooked it because the name is similar. As for more recently, the "Wait" status was also introduced. Fixed by adding the two missing values (i.e., "Wait" and "Undone"). Signed-off-by: Olivier Gayot <[email protected]>
This is one of the pain points of using the style of serialization for enums subiquity uses for an API we do not 100% control. Maybe there should be a way to say that a field can be an enum but if the value seen does not match one of the values of the enum type, just include it as a string or something? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That said, this is clearly ok
That said again... what should subiquity do in the case that it sees an Undone change? That's probably a terminal status, right? |
Good question, I have to check what the Undoing / Undone logic means in the snap refresh context.. |
@@ -819,9 +819,11 @@ class TaskStatus(enum.Enum): | |||
DO = "Do" | |||
DOING = "Doing" | |||
DONE = "Done" | |||
WAIT = "Wait" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Might as well also add Default
.
In a bug report, Subiquity failed during a refresh because it received an unexpected status.
According to snapd's upstream repository, "Undone" existed before "Undoing", so I'm not sure why we didn't have the former but had the latter. Maybe we just overlooked it because the name is similar.
As for more recently, the "Wait" status was also introduced [1]
Fixed by adding the two missing values (i.e., "Wait" and "Undone").
[1] canonical/snapd@7734ffd
This relates to LP:#2076233