summaryrefslogtreecommitdiffstats
path: root/orchestrator.py
blob: 476eb29561d4f027a90c4cf99e11fee1d6c64fe1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/usr/bin/python

__author__ = 'cosscat'

import sys, os, argparse
import modules.pokyconfig as cfg
import modules.control_SW as SW
import modules.imgdwl as imgdwl
from modules.base import TestParams


from IPython import embed

description="Automation harness for runtime tests. Designed to interface with any device that " \
            "would auto deploy images on boards"
parser = argparse.ArgumentParser(description)


class Orchestrator(object):
    """
    This class resembles steps performed in the chronological order when testing a board
    1) get .manifest .direct or .hddimg from a remote link
    2) prepare the env by writing config files: bblayers.conf or local.conf
    """
    def __init__(self):
        self.work_dir = cfg.Config.get_cfg_param("poky_base_dir", "GENERAL")
        self.prepare_env()

    def prepare_env(self):
        TestParams.poky_dir = os.path.join(cfg.Config.get_cfg_param("poky_base_dir","GENERAL"), 'poky')
        TestParams.build_dir = os.path.join(TestParams.poky_dir, cfg.Config.get_cfg_param("build_dir", TestParams.board))
        TestParams.dwl_dir = os.path.join(TestParams.build_dir, "tmp/deploy/images", TestParams.bsp)


    def get_artifacts(self, artifact_type, retest="No"):
        #maybe it would be fine to add a step to get poky too ...
        if retest == "No":
            TestParams.retest = "No"
            dwl = imgdwl.OnlineDwl()
            dwl.dwl_artifacts(artifact_type)
            #need to change imgdwl in order to prevent the case when retest is yes but there is no image.
        else:
            TestParams.retest = "Yes"
            return


    def prepare_cfg(self):
        conf = cfg.Config()
        conf.lcl_cfg_append()
        remote = imgdwl.UseImage()
        if remote.send_img_to_USB_SW() != 0:
            sys.exit("An error occured during image trasnsfer to USB-SW machine."
                     "Please check your settings and retry.")

        if remote.write_image_on_stick() != 0:
            print "An error occured during writing image on: ".format(TestParams.stick)

    def install_image(self):
        print "inside SW control"
        ctrl_SW = SW.BoardsManipulation()
        print "writing image on usb stick: {}".format(TestParams.stick)
        ctrl_SW.installImage()


if __name__ == "__main__":
    initial_cfg_file = os.path.join(os.getcwd(), "params.cfg") # aici sunt parametri pe care ii trimite LAVA sau
    # ce env de lansare a testelor au ei

    tp = TestParams
    tp.board = cfg.Config.get_cfg_param('board', 'SENT_PARAMS', initial_cfg_file)
    tp.release = cfg.Config.get_cfg_param('release', 'SENT_PARAMS',initial_cfg_file)
    tp.bsp = cfg.Config.get_cfg_param('bsp', 'SENT_PARAMS', initial_cfg_file)
    tp.core_name = cfg.Config.get_cfg_param('core_name', 'SENT_PARAMS', initial_cfg_file)
    tp.test_type = cfg.Config.get_cfg_param('test_type', 'SENT_PARAMS', initial_cfg_file)
    tp.img_file = ''


    t = Orchestrator()
    #embed()
    t.get_artifacts("manifest",retest="Yes")
    t.get_artifacts("hddimg",retest="Yes")
    t.prepare_cfg()
    t.install_image()

"""
#this was for testing purposes only
    tp.board = 'NUC_2'
    tp.release = 'yocto-2.1_M2.rc1'
    #tp.release = 'yocto-2.0.1.rc7'
    tp.bsp = 'intel-corei7-64'
    #tp.bsp = 'genericx86'
    #tp.bsp = 'genericx86-64'
    tp.core_name = 'core-image-sato'
    #tp.test_type = 'generic'
    tp.test_type = 'meta-intel'
    #tp.test_type = 'wic_AB'
    tp.img_file = ''
"""