Yeah i see your point. 

I was looking at this again, and am running into some weird issues when pickling and unpickling data from the RemoteDevice and Machine objects, like getting recursive getattr calls when trying to unpickle a RemoteDevice object. 

Can we do a call and look over the code together, perhaps you might be able to provide some ideas as to how to solve the issue i am having. 

On Wed, Sep 23, 2020 at 7:41 AM Ondrej Lichtner <olichtne@redhat.com> wrote:
On Wed, Sep 23, 2020 at 10:21:47AM +0200, Jan Tluka wrote:
> Mon, Sep 21, 2020 at 08:49:49PM CEST, pgagne@redhat.com wrote:
> >From: Perry Gagne <pgagne@redhat.com>
> >
> >Had to exclude args since they might contain Device objects (ex. when creating a team device)
> >
> >I have a couple ideas for a more thorough approch here, but whated to commit this right away to unblock
> >testing since it might cause beaker jobs to fail.
> >
> >Signed-off-by: Perry Gagne <pgagne@redhat.com>
> >---
> > lnst/Controller/RecipeResults.py | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> >diff --git a/lnst/Controller/RecipeResults.py b/lnst/Controller/RecipeResults.py
> >index 941ea8d..c2e2c3e 100644
> >--- a/lnst/Controller/RecipeResults.py
> >+++ b/lnst/Controller/RecipeResults.py
> >@@ -183,6 +183,11 @@ class DeviceMethodCallResult(DeviceConfigResult):
> >             ),
> >         )
> >
> >+    def __getstate__(self):
> >+        state = super(DeviceMethodCallResult, self).__getstate__()
> >+        # Remove things that can't be pickled
> >+        state['_args'] = None # Could be device object (ex. port of team device).
> >+        return state
> >
> > class DeviceAttrSetResult(DeviceConfigResult):
> >     def __init__(self, success, device, attr_name, value, old_value):
> >--
> >2.26.2
> >_______________________________________________
> >LNST-developers mailing list -- lnst-developers@lists.fedorahosted.org
> >To unsubscribe send an email to lnst-developers-leave@lists.fedorahosted.org
> >Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> >List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> >List Archives: https://lists.fedorahosted.org/archives/list/lnst-developers@lists.fedorahosted.org
>
> Hi Perry, have you tested this in a Beaker run? Does it resolve the issue in your runs?
>
> -Jan
> _______________________________________________
> LNST-developers mailing list -- lnst-developers@lists.fedorahosted.org
> To unsubscribe send an email to lnst-developers-leave@lists.fedorahosted.org
> Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives: https://lists.fedorahosted.org/archives/list/lnst-developers@lists.fedorahosted.org

Yeah, I'm a little worried about just simply blinding out the value of
an entire list of arguments due to a single item being unpicklable.

At the same time I think this could also appear in DeviceAttrSetResult.

Wouldn't it be better to just make the RemoteDevice class picklable
itself and leave it included?

-Ondrej