Hi,

 

We have a problem here needs your help, as it’s critical to us, could you give some suggestion? Thanks in advance.

 

You know, we submit a MR here about reset shell: https://git.lavasoftware.org/lava/lava/-/merge_requests/1023

 

It’s nearly compatible from 2018.11 to 2020.04 release when we patch it in local, the only changes I remember is once upon a time you changed all “internal_pipeline” to “pipeline”, so we had to follow the new name.

 

But in yesterday’s 2020.05 release, I saw this commit: https://git.lavasoftware.org/lava/lava/-/commit/eefeef1864cc055c48215169b616e6ed7b0b0715

 

In this commit, the test action no longer been added as before like next:

 

def __init__(self, parent, parameters):

        super().__init__(parent)

        self.action = TestShellRetry()

        self.action.job = self.job

        self.action.section = self.action_type

        parent.add_action(self.action, parameters)

 

It becomes next:

 

    @classmethod

    def action(cls, parameters):

        return TestShellRetry()

 

Correspondingly, in parse.py, it becomes from next:

 

action(pipeline, parameters)

 

to next:

 

action = cls.action(parameters)

 

That means “parent pipeline” no longer been passed to next level pipeline, parse.py will responsible for low level action inject into pipeline.

 

Above change is the key issue we encountered as in our “ResetTestShell” we need to reuse the parameters of “Boot” in same namespace, we need it to operate UBoot & Login again after device reset, like next:

 

def __init__(self, parent, parameters):

        super().__init__(parent)

 

        boot_action_para = None

        for per_action in parent.actions:

            if per_action.parameters["namespace"] == parameters["namespace"]:

                if per_action.__class__.__base__.__name__ == "BootAction":

                    boot_action_para = per_action.parameters

 

        self.action = TestShellLoop(boot_action_para)

        self.action.job = self.job

        self.action.section = self.action_type

        parent.add_action(self.action, parameters)

 

You see we could get the “Boot” action from its parent action, thus we could get the boot action’s parameters defined in job.yaml, then reconstruct the boot action, inject it as a internal action to our own test action.

 

But now, we can’t do it as parent action no longer be passed to low level action…

 

Could you give me some suggestion on it, if any other way I could get the parameters of boot action when I’m in test action?

 

Thanks again.

 

Regards,

Larry