On Wed, Sep 30, 2020 at 10:43:15AM -0400, Perry Gagne wrote:
>
> Please write an actual commit description of what/why this commit/patch
> does.
>
Good point, how does this sound:
yes, that's much better :).
-Ondrej
[PATCH] RecipeResults.py: Stop excluding RemoteDevices from export
Previously we were excluding RemoteDevice from export due to a number of
its attributes containing references to low level PYCapsule and socket
stuff.
I took another look at his to be more precise about what is excluded.
Also, with Ondrej help I was able to find the cause of an issue I a ran
into previously where an infinite loop of calls to RemoteDevice.__setattr__
would occur when trying to unpickle a exported run.
On Tue, Sep 29, 2020 at 4:23 AM Ondrej Lichtner <olichtne(a)redhat.com> wrote:
> On Mon, Sep 28, 2020 at 10:45:31AM -0400, pgagne(a)redhat.com wrote:
> > From: Perry Gagne <pgagne(a)redhat.com>
> >
> > Was able to figure out the issues with exporting Devices, so we don't
> need to exclude them anymore.
>
> Please write an actual commit description of what/why this commit/patch
> does.
>
> Saying "i figured it out" is not helpful when looking into git log
> history a couple of months later trying to debug something...
>
> >
> > Signed-off-by: Perry Gagne <pgagne(a)redhat.com>
> > ---
> > lnst/Common/ConnectionHandler.py | 7 +++++++
> > lnst/Controller/Machine.py | 8 ++++++++
> > lnst/Controller/RecipeResults.py | 5 -----
> > lnst/Devices/RemoteDevice.py | 2 ++
> > 4 files changed, 17 insertions(+), 5 deletions(-)
> >
> > diff --git a/lnst/Common/ConnectionHandler.py
> b/lnst/Common/ConnectionHandler.py
> > index a74d4a8..04bf7be 100644
> > --- a/lnst/Common/ConnectionHandler.py
> > +++ b/lnst/Common/ConnectionHandler.py
> > @@ -133,3 +133,10 @@ class ConnectionHandler(object):
> > def clear_connections(self):
> > self._connections = []
> > self._connection_mapping = {}
> > +
> > + def __getstate__(self):
> > + state = self.__dict__.copy()
> > + # Remove things that can't be pickled
> > + state['_connections'] = []
> > + state['_connection_mapping'] = {}
> > + return state
>
> Is this required if you're removing the message dispatcher from the
> Machine object anyway?
>
> > \ No newline at end of file
> > diff --git a/lnst/Controller/Machine.py b/lnst/Controller/Machine.py
> > index 4b9afcb..5920d69 100644
> > --- a/lnst/Controller/Machine.py
> > +++ b/lnst/Controller/Machine.py
> > @@ -589,3 +589,11 @@ class Machine(object):
> >
> > def get_security(self):
> > return self._security
> > +
> > + def __getstate__(self):
> > + state = self.__dict__.copy()
> > + # Remove things that can't be pickled
> > + state['_msg_dispatcher'] = None
> > + if self.get_libvirt_domain():
> > + state['_domain_ctl'] = None
> > + return state
> > \ No newline at end of file
> > diff --git a/lnst/Controller/RecipeResults.py
> b/lnst/Controller/RecipeResults.py
> > index 941ea8d..38a4170 100644
> > --- a/lnst/Controller/RecipeResults.py
> > +++ b/lnst/Controller/RecipeResults.py
> > @@ -118,11 +118,6 @@ class DeviceConfigResult(BaseResult):
> > def device(self):
> > return self._device
> >
> > - def __getstate__(self):
> > - state = self.__dict__.copy()
> > - # Remove things that can't be pickled
> > - state['_device'] = None
> > - return state
> >
> > class DeviceCreateResult(DeviceConfigResult):
> > @property
> > diff --git a/lnst/Devices/RemoteDevice.py b/lnst/Devices/RemoteDevice.py
> > index f11fa65..7891514 100644
> > --- a/lnst/Devices/RemoteDevice.py
> > +++ b/lnst/Devices/RemoteDevice.py
> > @@ -108,6 +108,8 @@ class RemoteDevice(object):
> > def __getattr__(self, name):
> > if name == "_inited":
> > return False
> > + if not self._inited:
> > + return super(RemoteDevice, self).__getattr__(name)
> >
> > attr = getattr(self._dev_cls, name)
> >
> > --
> > 2.26.2
> > _______________________________________________
> > LNST-developers mailing list -- lnst-developers(a)lists.fedorahosted.org
> > To unsubscribe send an email to
> lnst-developers-leave(a)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.fedora...
>
>