Multinode action ordering needs to be retained

Bug #1213944 reported by Neil Williams on 2013-08-19
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
LAVA Scheduler (deprecated)
Fix Released
Critical
Senthil Kumaran S

Bug Description

When parsing a MultiNode JSON file, the various actions need to be assigned to the devices according to the role. This is working, unfortunately, the ordering of the actions is not being retained.

Boards are failing because the lava_test_shell action *precedes* the deploy_linaro_image action.

The original ordering of deploy_ , boot_ (if used), lava_test & submit_results needs to be imposed on the JSON being sent to each of the dispatchers when a MultiNode job is parsed.

Related branches

Neil Williams (codehelp) on 2013-08-19
Changed in lava-scheduler:
assignee: nobody → Senthil Kumaran S (stylesen)
Changed in lava-scheduler:
importance: Undecided → Critical
status: New → In Progress
Neil Williams (codehelp) wrote :

Probably why this wasn't found was that if the deploy_ clause does have a role, the ordering is correct. Only if the deploy_* clause has no role (and therefore needs to be copied to each device) does the problem occur.

Working:
http://multinode.validation.linaro.org/scheduler/job/2344/definition

Broken:
http://multinode.validation.linaro.org/scheduler/job/2333/definition

Changed in lava-scheduler:
status: In Progress → Fix Committed

There are two types of implementation possible for this:

Type 1: Is available in
https://code.launchpad.net/~stylesen/lava-scheduler/retain-multinode-action-ordering
 In this implementation, we preserve the order of commands within the
action list as provided by the user. If the user specifies a wrong order
in the original multinode job that will be carried on to the sub jobs
that will be created. This is the correct way, because we give the user
control to execute the commands in the way they want. For example, in
case of lava-test-shell test cases and lava-android-test test cases, if
the user prefers a particular order he/she is free to enforce that
according to this implementation.

Type 2: Conceptual and not implemented
 We could have a dictionary with all the available lava-dispatcher
commands and an associated priority with it. We can get the job json and
re-organize the commands in the order dictated by the dictionary we have
built. This approach will have the following disadvantages:
 1. User preference for command execution is not honored.
 2. The dictionary should be part of lava-dispatcher and called in
lava-scheduler. Everytime a new command is added we should juggle with
this dictionary to decide the priority which is highly error prone.
 3. We enforce a structure and stop flexibility for experimentation.

Due to the above, we have implemented "Type 1" which will be part of
lava-scheduler.

PS: Documenting here for posterity.
--
Senthil Kumaran
http://www.stylesen.org/
http://www.sasenthilkumaran.com/

Changed in lava-scheduler:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers