Adding file naming and indexing
[AGL/documentation.git] / docs / 07_How_To_Contribute / 10_Setup_AGL_LAVA_Lab.md
1 ---
2 title: Setup_AGL_LAVA_Lab
3 ---
4
5 ## Prerequisites ##
6
7 As well as the packages docker, docker-compose and pyyaml mentioned in the top
8
9 level README, you will need the following:
10
11
12
13 1) The following ports are forwarded to docker and therefore need to be kept free
14
15 on the host machine:
16
17 - 69/UDP: proxyfied to the slave for TFTP
18
19 - 80: proxyfied to the slave for TODO (transfer overlay)
20
21 - 5500: proxyfied to the slave for Notification
22
23 - 55950-56000: proxyfied to the slave for NBD
24
25 2) You will need a remote power switch to remotely power the DUTs on and off.
26
27 3) You need to have an account with lava.automotivelinux.org. Please contact the
28
29 agl-dev-community mailing list if you would like an account, and include that you would
30
31 like to create your own lab in the email so that the relevant user permissions
32
33 can be set.
34
35
36
37 ## Steps to create your own LAVA lab ##
38
39
40
41 1) Clone AGL lava-docker image:
42
43 ```
44
45 git clone https://git.automotivelinux.org/AGL/lava-docker.git
46
47 cd lava-docker
48
49 ```
50
51
52
53 2) On the LAVA master web GUI, create a new API token:
54
55 https://lava.automotivelinux.org/api/tokens/
56
57
58
59 3) Connect all the DUTs' serial to usb and ethernet connections to the host.
60
61
62 4) Edit the boards.yaml file:
63
64 - Copy the API token you created in step 2 in the place of <generated_lab_token>.
65
66 - Add details of each board connected to the lab. See the top level README for
67
68 instructions. You will need the following:
69
70 - any custom options you require in the kernel args
71
72 - uart idvendor, idproduct, devpath
73
74 - power on, off and reset commads for the power switch
75
76
77
78 To get the uart idvendor and idproduct, unplug and re-plugin the USB cable of the
79
80 device in question and then find the details in the latest output of:
81
82 ```
83
84 sudo dmesg | grep idvendor
85
86 ```
87
88
89
90 To get the uart devpath, run the command:
91
92 ```
93
94 udevadm info -a -n /dev/ttyUSB1 |grep devpath | head -n1
95
96 ```
97
98
99
100 NOTE: Make sure you have at least one "board" included. (It is easiest to keep
101
102 qemu).
103
104
105
106 5) Run the automated setup script:
107
108 ```
109
110 ./start.sh slave
111
112 ```
113
114
115
116 7) Check the web GUI to see if the lab has successfully connected to the LAVA
117
118 master: https://lava.automotivelinux.org/scheduler/allworkers. If it isn't, run the
119
120 following command for debugging:
121
122 ```
123
124 docker-exec -it <name_of_docker_container> cat /var/log/lava-dispatcher/lava-slave.log
125
126 ```
127
128 To identify the container name run the following to list the running containers:
129
130 ```
131
132 docker ps
133
134 ```
135
136
137
138 LAVA logs can be found in `/var/log/lava-dispatcher/`.
139
140
141
142 8) Helper scripts
143
144 There are a few helper scripts to automate starting/stopping the lab.
145
146 ```
147
148 ./start.sh slave
149
150 ./restart.sh slave
151
152 ./stop.sh slave
153
154 ```
155
156
157
158 ## Adding new device-type templates ##
159
160
161
162 Not all device types are supported by default. Templates for new devices will
163
164 need to be added to the LAVA master. Please submit new templates to the agl-dev-community
165
166 mailing list.
167
168
169
170 Before you submit any new device-type templates, please verify that they work.
171
172 You can verify that they work in LAVA by carrying out the following instructions:
173
174 1) Install lavacli on Debian Stretch or Ubuntu 18.04 and later (if you don't
175
176 have a compatible OS, please see https://lava.automotivelinux.org/api/help/ for an
177
178 alternative way to use the API)
179
180 2) Create your lavacli config file
181
182 ```
183
184 touch ~/.config/lavacli.yaml
185
186 ```
187
188 3) Configure this file to look like the following (note: use the first token
189
190 created in https://lava.automotivelinux.org/api/tokens/)
191
192 ```
193
194 default:
195
196 uri: https://lava.automotivelinux.org/RPC2
197
198 username: <username>
199
200 token: <API_token>
201
202 ```
203
204 4) Add your device template to the master
205
206 ```
207
208 lavacli device-types template set <device-type-name> <device-type-name>.yaml
209
210 ```
211
212 NOTE: make sure your device-type templates always follow the following naming scheme:
213
214 ```<device-type-name>.yaml```