Add /opt/AGL/lava-agl, its dependencies and json file 87/6687/4
authorJan-Simon Möller <jsmoeller@linuxfoundation.org>
Mon, 3 Oct 2016 15:03:21 +0000 (17:03 +0200)
committerJan-Simon Möller <jsmoeller@linuxfoundation.org>
Mon, 3 Oct 2016 18:18:27 +0000 (20:18 +0200)
Change-Id: I65e5c48f91d0c4df084cfa3e66d43ae48e52bb9d
Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
packer/provision/agl_dependencies.sh
packer/provision/agl_mirror.sh
packer/templates/basebuild-local-kvm.json
packer/templates/basebuild.json
packer/vars/.gitignore
packer/vars/lava-env.json.example [new file with mode: 0644]

index 05ad05b..ed5cc25 100644 (file)
@@ -1,14 +1,23 @@
 #!/bin/bash
+# vim: sw=2 ts=2 sts=2 et :
 
 set -x
 
+cat /etc/apt/sources.list
+
+# Make sure that we aren't using the vexxhost mirrors as they have issues
+echo "---> Removing Vexxhost Ubuntu mirrors"
+sed -i 's/ubuntu.mirror.vexxhost.com/us.archive.ubuntu.com/g' /etc/apt/sources.list
+
+cat /etc/apt/sources.list
+
 DEBIAN_FRONTEND=noninteractive apt-get update && apt-get -y -u dist-upgrade
 
 DEBIAN_FRONTEND=noninteractive apt-get update && \
     apt-get -y install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat \
                        libsdl1.2-dev xterm make xsltproc docbook-utils fop dblatex xmlto autoconf automake \
                        libtool libglib2.0-dev libarchive-dev python-git git python python-minimal repo mc \
-                       tree rsync
+                       tree rsync python-yaml python-requests curl
 
 # we have a build blocker wrt useradd - I assume it is caused by /bin/sh being dash
 # systemd: Performing useradd with
@@ -21,3 +30,162 @@ cat <<EOFHOSTS >> /etc/hosts
 199.19.213.77 download-new.automotivelinux.org
 
 EOFHOSTS
+
+
+# clone lava-boot to /opt/AGL/
+mkdir -p /opt/AGL/
+cd /opt/AGL/
+git clone http://git.linaro.org/people/riku.voipio/lava-boot.git
+cd lava-boot
+sed -i '16iimport ssl' lava-boot
+sed -i '17issl._create_default_https_context = ssl._create_unverified_context' lava-boot
+
+
+mkdir -p /opt/AGL/lava-agl/
+cat <<EOFBR >> /opt/AGL/lava-agl/boardready.py
+#!/usr/bin/python
+import xmlrpclib
+import ssl
+import sys
+import time
+
+# bug, ssl chain cannot be verified (letsencrypt)
+# to be fixed
+ssl._create_default_https_context = ssl._create_unverified_context
+
+username = "$LAVAUSER"
+token = "$LAVATOKEN"
+myhostname = "$LAVAHOST"
+
+print "Starting ..."
+sys.stdout.flush()
+arg = None
+if len(sys.argv) > 1:
+        arg = sys.argv[1]
+
+if arg == None:
+        print("No argument, need lava jobnumber as argument.")
+        sys.stdout.flush()
+        sys.exit(1)
+
+server = xmlrpclib.ServerProxy("https://%s:%s@%s/RPC2" % (username, token, myhostname))
+#print(arg)
+#sys.stdout.flush()
+
+# Poll loop
+while True:
+        try:
+            x = server.scheduler.job_status(arg)['job_status']
+        except:
+            print("Error, quitting.")
+            sys.stdout.flush()
+            sys.exit(1)
+            break
+        if 'Cancelled' in x:
+                sys.exit(1)
+                break
+        if 'Submitted' in x:
+                print("Job submitted - pending")
+                sys.stdout.flush()
+                time.sleep(20)
+                continue
+        if 'Running' in x:
+                print("Job Running now.")
+                print("Remote boot takes around 5 minutes to complete (download+boot) - waiting ...")
+                sys.stdout.flush()
+                time.sleep(300)
+                y = server.scheduler.job_status(arg)['job_status']
+                if 'Running' in y:
+                        break
+                else:
+                        continue
+                break
+        break
+# end
+EOFBR
+
+cat <<EOFLAVAYAML > /opt/AGL/lava-agl/.lava.yaml
+server: ${LAVAHOST}
+user: ${LAVAUSER}
+token: ${LAVATOKEN}
+https: true
+EOFLAVAYAML
+
+cat <<EOFPORTERUPLOADYAML > /opt/AGL/lava-agl/porter_nbd_upload.yaml
+actions:
+    - command: deploy_linaro_kernel
+      parameters:
+          kernel: 'http://localhost/porter/upload/uImage+dtb'
+          nbdroot: 'http://localhost/porter/upload/agl-demo-platform-porter.ext4'
+          ramdisk: 'http://localhost/porter/upload/initramfs-netboot-image-porter.ext4.gz.u-boot'
+          login_prompt: 'porter login:'
+          username: 'root'
+    - command: boot_linaro_image
+      parameters:
+          test_image_prompt: 'root@porter:~#'
+    - command: lava_command_run
+      parameters:
+          commands:
+              - "while test ! -f /jta.done ; do echo \"Waiting for JTA to finish ... \" ; sleep 20 ; done"
+          timeout: 22100
+device_type: 'renesas-porter'
+logging_level: INFO
+job_name: '\${JOB_NAME}'
+timeout: 22600
+
+EOFPORTERUPLOADYAML
+
+cat <<EOFPORTERSNAPYAML > /opt/AGL/lava-agl/porter_nbd_snapshot.yaml
+actions:
+    - command: deploy_linaro_kernel
+      parameters:
+          kernel: 'https://download.automotivelinux.org/AGL/snapshots/master/latest/porter-nogfx/deploy/images/porter/uImage+dtb'
+          nbdroot: 'https://download.automotivelinux.org/AGL/snapshots/master/latest/porter-nogfx/deploy/images/porter/core-image-minimal-porter.ext4'
+          ramdisk: 'https://download.automotivelinux.org/AGL/snapshots/master/latest/porter-nogfx/deploy/images/porter/initramfs-netboot-image-porter.ext4.gz.u-boot'
+          login_prompt: 'porter login:'
+          username: 'root'
+    - command: boot_linaro_image
+      parameters:
+          test_image_prompt: 'root@porter:~#'
+    - command: lava_command_run
+      parameters:
+          commands:
+              - "while test ! -f /jta.done ; do echo \"Waiting for JTA to finish ... \" ; sleep 20 ; done"
+          timeout: 22100
+device_type: 'renesas-porter'
+logging_level: INFO
+job_name: '\${JOB_NAME}'
+timeout: 22600
+EOFPORTERSNAPYAML
+
+cat <<EOFUPLOAD > /opt/AGL/lava-agl/upload4lava.sh
+#!/bin/bash
+#set -x
+
+if test x"" != x"\$1"; then
+Y=\$(echo "\$1" | sed -e "s#\.\.##g" -e "s#/##g")
+curl -T "\$Y" https://porter.automotivelinux.org/porter/upload/jta/\$Y --insecure
+else
+echo "Help: \$0 file"
+fi
+
+EOFUPLOAD
+
+cat <<EOFDEPLOY > /opt/AGL/lava-agl/deploy.sh
+#!/bin/bash
+#set -x
+set -e
+PORTERYAML="porter_nbd_snapshot.yaml"
+
+if test x"" != x"\$1" ; then
+    PORTERYAML="\$1"
+fi
+if test -f /opt/AGL/lava-agl/\${PORTERYAML}; then
+    /opt/AGL/lava-agl/boardready.py \$(/opt/AGL/lava-boot/lava-boot -j /opt/AGL/lava-agl/\${PORTERYAML} -a -q | sed -e "s#.*job/##g")
+else
+    echo "\${PORTERYAML} not found."
+    exit 1
+fi
+EOFDEPLOY
+
+chmod a+x /opt/AGL/lava-agl/*
index 08a3684..a76245d 100644 (file)
@@ -13,7 +13,11 @@ cd
 mkdir -p /opt/AGL/sstate-mirror
 cd /opt/AGL/sstate-mirror
 wget --mirror -np -nH --convert-links "https://download-new.automotivelinux.org/sstate-mirror/" -A siginfo -A tgz --cut-dirs=1
-ls
-ls *
 cd
 
+#mirror downloads into /opt/AGL/premirror
+#mkdir -p /opt/AGL/premirror
+#cd /opt/AGL/premirror
+#wget --mirror -r -l1 -np -nH --convert-links "https://download-new.automotivelinux.org/AGL/mirror/" -R 'done'  -R 'O=A,O=D' --cut-dirs=2
+#cd
+
index af13744..36c77f4 100644 (file)
         "provision/agl_dependencies.sh",
         "provision/system_reseal.sh"
       ],
+      "environment_vars": [
+        "LAVAHOST={{user `lavahost`}}",
+        "LAVAUSER={{user `lavauser`}}",
+        "LAVATOKEN={{user `lavatoken`}}"
+      ],
       "execute_command": "chmod +x {{ .Path }}; if [ \"$UID\" == \"0\" ]; then {{ .Vars }} '{{ .Path }}'; else echo 'ubuntu' | {{ .Vars }} sudo -S -E sh '{{ .Path }}'; fi"
     }
   ]
index b757f6a..8e60b5f 100644 (file)
     },
     {
       "type": "shell",
+      "environment_vars": [
+        "LAVAHOST={{user `lavahost`}}",
+        "LAVAUSER={{user `lavauser`}}",
+        "LAVATOKEN={{user `lavatoken`}}"
+      ],
       "scripts": [
         "provision/baseline.sh",
         "provision/basebuild.sh",
index af92028..da3d7e0 100644 (file)
@@ -1,2 +1,3 @@
 # exclude private cloud-env settings
 cloud-env.json
+lava-env.json
diff --git a/packer/vars/lava-env.json.example b/packer/vars/lava-env.json.example
new file mode 100644 (file)
index 0000000..abe935c
--- /dev/null
@@ -0,0 +1,5 @@
+{
+  "lavahost": "porter.automotivelinux.org",
+  "lavauser": "replace_with_lava_user",
+  "lavatoken": "replace_with_lava_token"
+}