{"diffoscope-json-version": 1, "source1": "/srv/reproducible-results/rbuild-debian/r-b-build.NuC6giEa/b1/lava_2023.01-2_amd64.changes", "source2": "/srv/reproducible-results/rbuild-debian/r-b-build.NuC6giEa/b2/lava_2023.01-2_amd64.changes", "unified_diff": null, "details": [{"source1": "Files", "source2": "Files", "unified_diff": "@@ -1,10 +1,10 @@\n \n a35b08608e794a71744f0a759733a0c1 45260 net optional lava-common_2023.01-2_all.deb\n 78e9e60c98f794fc7fd5176962c48392 34596 net optional lava-coordinator_2023.01-2_all.deb\n 56c6da728bea231e3d0b0bad4c605599 31640 devel optional lava-dev_2023.01-2_all.deb\n d1a89cf95d9854ffdec4c45909833360 37368 net optional lava-dispatcher-host_2023.01-2_all.deb\n 12a9e4f89c605dec5c01c83141dcf033 190740 net optional lava-dispatcher_2023.01-2_all.deb\n 63969a7f9a735a2816bf3063d49728c8 34388 net optional lava-lxc-mocker_2023.01-2_all.deb\n- ee694d276fd62b227ca8e9cc5dd7268d 2487648 doc optional lava-server-doc_2023.01-2_all.deb\n+ 875ee3ec8751afdddb3e8ea2f23380e7 2487644 doc optional lava-server-doc_2023.01-2_all.deb\n e6e3464f35b71bf37398752bffffe817 395816 net optional lava-server_2023.01-2_all.deb\n e7b2a8fe70dee79516fe30331b176b5e 24212 metapackages optional lava_2023.01-2_all.deb\n"}, {"source1": "lava-server-doc_2023.01-2_all.deb", "source2": "lava-server-doc_2023.01-2_all.deb", "unified_diff": null, "details": [{"source1": "file list", "source2": "file list", "unified_diff": "@@ -1,3 +1,3 @@\n -rw-r--r-- 0 0 0 4 2023-01-23 19:32:59.000000 debian-binary\n -rw-r--r-- 0 0 0 10788 2023-01-23 19:32:59.000000 control.tar.xz\n--rw-r--r-- 0 0 0 2476668 2023-01-23 19:32:59.000000 data.tar.xz\n+-rw-r--r-- 0 0 0 2476664 2023-01-23 19:32:59.000000 data.tar.xz\n"}, {"source1": "control.tar.xz", "source2": "control.tar.xz", "unified_diff": null, "details": [{"source1": "control.tar", "source2": "control.tar", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "unified_diff": null, "details": [{"source1": "./md5sums", "source2": "./md5sums", "comments": ["Files differ"], "unified_diff": null}]}]}]}, {"source1": "data.tar.xz", "source2": "data.tar.xz", "unified_diff": null, "details": [{"source1": "data.tar", "source2": "data.tar", "unified_diff": null, "details": [{"source1": "./usr/share/doc/lava-server-doc/html/v2/searchindex.js", "source2": "./usr/share/doc/lava-server-doc/html/v2/searchindex.js", "unified_diff": null, "details": [{"source1": "js-beautify {}", "source2": "js-beautify {}", "unified_diff": "@@ -6085,127 +6085,42 @@\n \"sphinx.domains.std\": 2,\n \"sphinx.ext.intersphinx\": 1,\n \"sphinx.ext.todo\": 2,\n \"sphinx.ext.viewcode\": 1,\n \"sphinx\": 60\n },\n \"alltitles\": {\n- \"Detailed device dictionary information in LAVA Scheduler\": [\n- [62, \"detailed-device-dictionary-information-in-lava-scheduler\"]\n- ],\n- \"Commands\": [\n- [62, \"commands\"]\n- ],\n- \"Connections\": [\n- [62, \"connections\"],\n- [16, \"connections\"]\n- ],\n- \"VLANd support\": [\n- [62, \"vland-support\"]\n- ],\n- \"Exported parameters\": [\n- [62, \"exported-parameters\"]\n- ],\n- \"Other parameters\": [\n- [62, \"other-parameters\"]\n- ],\n- \"Introduction to LAVA\": [\n- [50, \"introduction-to-lava\"]\n- ],\n- \"Navigation\": [\n- [50, \"navigation\"]\n- ],\n- \"Index\": [\n- [50, \"id1\"]\n- ],\n- \"Contents\": [\n- [50, \"id2\"],\n- [17, \"contents\"],\n- [46, \"contents\"],\n- [0, \"contents\"],\n- [3, \"contents\"],\n- [5, \"contents\"],\n- [2, \"contents\"]\n- ],\n- \"Page indices\": [\n- [50, \"page-indices\"]\n- ],\n- \"About LAVA V2\": [\n- [50, \"about-lava-v2\"]\n- ],\n- \"LAVA Overview\": [\n- [50, \"lava-overview\"]\n- ],\n- \"What is LAVA?\": [\n- [50, \"what-is-lava\"]\n- ],\n- \"What is LAVA not?\": [\n- [50, \"what-is-lava-not\"]\n- ],\n- \"Features\": [\n- [50, \"features\"]\n- ],\n- \"Architecture\": [\n- [50, \"architecture\"]\n- ],\n- \"Elements of the Master\": [\n- [50, \"elements-of-the-master\"],\n- [39, \"elements-of-the-master\"]\n- ],\n- \"Elements of the Worker\": [\n- [50, \"elements-of-the-worker\"],\n- [39, \"elements-of-the-worker\"]\n- ],\n- \"Preparation\": [\n- [50, \"preparation\"]\n- ],\n- \"Methods\": [\n- [50, \"methods\"]\n- ],\n- \"Deployment methods\": [\n- [50, \"deployment-methods\"]\n- ],\n- \"Boot methods\": [\n- [50, \"boot-methods\"],\n- [71, \"boot-methods\"]\n- ],\n- \"Test methods\": [\n- [50, \"test-methods\"]\n- ],\n- \"Multiple device testing\": [\n- [50, \"multiple-device-testing\"]\n- ],\n- \"Scheduling\": [\n- [50, \"scheduling\"]\n- ],\n- \"Advanced use cases\": [\n- [50, \"advanced-use-cases\"],\n- [16, \"advanced-use-cases\"]\n- ],\n- \"Glossary\": [\n- [50, \"glossary\"]\n- ],\n- \"Support\": [\n- [50, \"support\"]\n- ],\n- \"Full documentation\": [\n- [50, \"full-documentation\"]\n- ],\n \"Hidden device types\": [\n [49, \"hidden-device-types\"]\n ],\n \"Changes needed when managing a hidden device type\": [\n [49, \"changes-needed-when-managing-a-hidden-device-type\"]\n ],\n \"Private test job visibility\": [\n [49, \"private-test-job-visibility\"]\n ],\n \"Health Checks\": [\n [49, \"health-checks\"]\n ],\n+ \"Internet of Things (IoT) Boards\": [\n+ [53, \"internet-of-things-iot-boards\"]\n+ ],\n+ \"Arduino101\": [\n+ [53, \"arduino101\"]\n+ ],\n+ \"Cons\": [\n+ [53, \"cons\"],\n+ [53, \"id1\"],\n+ [56, \"cons\"],\n+ [55, \"cons\"],\n+ [55, \"id1\"]\n+ ],\n+ \"FRDM-K64F\": [\n+ [53, \"frdm-k64f\"]\n+ ],\n \"Using Test Results\": [\n [60, \"using-test-results\"]\n ],\n \"LAVA result visualization\": [\n [60, \"lava-result-visualization\"]\n ],\n \"LAVA Queries\": [\n@@ -6233,18 +6148,18 @@\n [60, \"deleting-a-query\"]\n ],\n \"Using Queries in XML-RPC scripts\": [\n [60, \"using-queries-in-xml-rpc-scripts\"]\n ],\n \"Configuration\": [\n [60, \"configuration\"],\n- [54, \"configuration\"],\n [58, \"configuration\"],\n- [22, \"configuration\"],\n- [8, \"configuration\"]\n+ [54, \"configuration\"],\n+ [8, \"configuration\"],\n+ [22, \"configuration\"]\n ],\n \"Example output\": [\n [60, \"example-output\"]\n ],\n \"LAVA Query use cases\": [\n [60, \"lava-query-use-cases\"]\n ],\n@@ -6283,81 +6198,14 @@\n ],\n \"Omitting Chart Results\": [\n [60, \"omitting-chart-results\"]\n ],\n \"Chart by URL\": [\n [60, \"chart-by-url\"]\n ],\n- \"U-Boot\": [\n- [54, \"u-boot\"]\n- ],\n- \"Common U-Boot support\": [\n- [54, \"common-u-boot-support\"]\n- ],\n- \"Prompts\": [\n- [54, \"prompts\"]\n- ],\n- \"Interrupting U-Boot\": [\n- [54, \"interrupting-u-boot\"]\n- ],\n- \"Troubleshooting Interrupting U-Boot\": [\n- [54, \"troubleshooting-interrupting-u-boot\"]\n- ],\n- \"Load addresses\": [\n- [54, \"load-addresses\"]\n- ],\n- \"Required configuration\": [\n- [54, \"required-configuration\"]\n- ],\n- \"Booting the kernel\": [\n- [54, \"booting-the-kernel\"],\n- [99, \"booting-the-kernel\"]\n- ],\n- \"U-Boot bootargs\": [\n- [54, \"u-boot-bootargs\"]\n- ],\n- \"Using mkimage\": [\n- [54, \"using-mkimage\"]\n- ],\n- \"Vendor builds\": [\n- [54, \"vendor-builds\"]\n- ],\n- \"Network support\": [\n- [54, \"network-support\"]\n- ],\n- \"Additional U-Boot support\": [\n- [54, \"additional-u-boot-support\"]\n- ],\n- \"Filesystem support\": [\n- [54, \"filesystem-support\"]\n- ],\n- \"Interface names\": [\n- [54, \"interface-names\"]\n- ],\n- \"Initializing subsystems\": [\n- [54, \"initializing-subsystems\"]\n- ],\n- \"Appending the DTB\": [\n- [54, \"appending-the-dtb\"]\n- ],\n- \"Writing an interactive test action\": [\n- [57, \"writing-an-interactive-test-action\"]\n- ],\n- \"Advantages of interactive pattern matching\": [\n- [57, \"advantages-of-interactive-pattern-matching\"]\n- ],\n- \"Limits of interactive pattern matching\": [\n- [57, \"limits-of-interactive-pattern-matching\"]\n- ],\n- \"Example interactive test job\": [\n- [57, \"example-interactive-test-job\"]\n- ],\n- \"Combining different test actions\": [\n- [57, \"combining-different-test-actions\"]\n- ],\n \"LAVA Scheduler summary help\": [\n [61, \"lava-scheduler-summary-help\"]\n ],\n \"Device Type Overview\": [\n [61, \"device-type-overview\"]\n ],\n \"Overall status\": [\n@@ -6388,27 +6236,85 @@\n \"Active Jobs\": [\n [61, \"active-jobs\"]\n ],\n \"Workers\": [\n [61, \"workers\"],\n [95, \"workers\"]\n ],\n+ \"Detailed device information in LAVA Scheduler\": [\n+ [63, \"detailed-device-information-in-lava-scheduler\"]\n+ ],\n+ \"Static device information\": [\n+ [63, \"static-device-information\"]\n+ ],\n+ \"Device state\": [\n+ [63, \"device-state\"]\n+ ],\n+ \"State\": [\n+ [63, \"state\"]\n+ ],\n+ \"Health\": [\n+ [63, \"health\"]\n+ ],\n+ \"Health State\": [\n+ [63, \"health-state\"]\n+ ],\n+ \"Edit device description\": [\n+ [63, \"edit-device-description\"]\n+ ],\n+ \"Restrict submissions\": [\n+ [63, \"restrict-submissions\"]\n+ ],\n \"Deploying an iPXE (x86) device\": [\n [59, \"deploying-an-ipxe-x86-device\"]\n ],\n \"Preparing the target test device\": [\n [59, \"preparing-the-target-test-device\"]\n ],\n \"Dispatch Steps\": [\n [59, \"dispatch-steps\"],\n [58, \"dispatch-steps\"]\n ],\n \"Kernel, Ramdisk and Rootfs considerations\": [\n [59, \"kernel-ramdisk-and-rootfs-considerations\"]\n ],\n+ \"Detailed device dictionary information in LAVA Scheduler\": [\n+ [62, \"detailed-device-dictionary-information-in-lava-scheduler\"]\n+ ],\n+ \"Commands\": [\n+ [62, \"commands\"]\n+ ],\n+ \"Connections\": [\n+ [62, \"connections\"],\n+ [16, \"connections\"]\n+ ],\n+ \"VLANd support\": [\n+ [62, \"vland-support\"]\n+ ],\n+ \"Exported parameters\": [\n+ [62, \"exported-parameters\"]\n+ ],\n+ \"Other parameters\": [\n+ [62, \"other-parameters\"]\n+ ],\n+ \"Writing an interactive test action\": [\n+ [57, \"writing-an-interactive-test-action\"]\n+ ],\n+ \"Advantages of interactive pattern matching\": [\n+ [57, \"advantages-of-interactive-pattern-matching\"]\n+ ],\n+ \"Limits of interactive pattern matching\": [\n+ [57, \"limits-of-interactive-pattern-matching\"]\n+ ],\n+ \"Example interactive test job\": [\n+ [57, \"example-interactive-test-job\"]\n+ ],\n+ \"Combining different test actions\": [\n+ [57, \"combining-different-test-actions\"]\n+ ],\n \"Fastboot\": [\n [52, \"fastboot\"]\n ],\n \"External constraints\": [\n [52, \"external-constraints\"]\n ],\n \"Device changes\": [\n@@ -6419,38 +6325,14 @@\n ],\n \"Android\": [\n [52, \"android\"]\n ],\n \"Specific support for fastboot devices in LAVA\": [\n [52, \"specific-support-for-fastboot-devices-in-lava\"]\n ],\n- \"Detailed device information in LAVA Scheduler\": [\n- [63, \"detailed-device-information-in-lava-scheduler\"]\n- ],\n- \"Static device information\": [\n- [63, \"static-device-information\"]\n- ],\n- \"Device state\": [\n- [63, \"device-state\"]\n- ],\n- \"State\": [\n- [63, \"state\"]\n- ],\n- \"Health\": [\n- [63, \"health\"]\n- ],\n- \"Health State\": [\n- [63, \"health-state\"]\n- ],\n- \"Edit device description\": [\n- [63, \"edit-device-description\"]\n- ],\n- \"Restrict submissions\": [\n- [63, \"restrict-submissions\"]\n- ],\n \"Installing on a Debian system\": [\n [51, \"installing-on-a-debian-system\"]\n ],\n \"Recommended Debian architectures\": [\n [51, \"recommended-debian-architectures\"]\n ],\n \"LAVA repositories\": [\n@@ -6535,97 +6417,33 @@\n ],\n \"Creating the kernel and initrd for pxe booting\": [\n [58, \"creating-the-kernel-and-initrd-for-pxe-booting\"]\n ],\n \"Debugging with initrd\": [\n [58, \"debugging-with-initrd\"]\n ],\n- \"UEFI\": [\n- [55, \"uefi\"]\n- ],\n- \"Introduction\": [\n- [55, \"introduction\"],\n- [24, \"introduction\"],\n- [12, \"introduction\"],\n- [79, \"introduction\"]\n- ],\n- \"UEFI menus\": [\n- [55, \"uefi-menus\"]\n- ],\n- \"UEFI graphical interfaces\": [\n- [55, \"uefi-graphical-interfaces\"]\n- ],\n- \"D02/D03\": [\n- [55, \"d02-d03\"]\n- ],\n- \"Cons\": [\n- [55, \"cons\"],\n- [55, \"id1\"],\n- [53, \"cons\"],\n- [53, \"id1\"],\n- [56, \"cons\"]\n- ],\n- \"Mustang UEFI\": [\n- [55, \"mustang-uefi\"]\n- ],\n- \"HiKey 620\": [\n- [55, \"hikey-620\"]\n- ],\n- \"HiKey 960\": [\n- [55, \"hikey-960\"]\n- ],\n- \"Internet of Things (IoT) Boards\": [\n- [53, \"internet-of-things-iot-boards\"]\n- ],\n- \"Arduino101\": [\n- [53, \"arduino101\"]\n- ],\n- \"FRDM-K64F\": [\n- [53, \"frdm-k64f\"]\n- ],\n- \"Writing Health Checks for devices\": [\n- [48, \"writing-health-checks-for-devices\"]\n- ],\n- \"LAVA YAML health checks\": [\n- [48, \"lava-yaml-health-checks\"]\n- ],\n- \"Device Types and templates\": [\n- [48, \"device-types-and-templates\"]\n- ],\n- \"Tasks within health checks\": [\n- [48, \"tasks-within-health-checks\"]\n- ],\n- \"Checking infrastructure and peripherals in health checks\": [\n- [48, \"checking-infrastructure-and-peripherals-in-health-checks\"]\n- ],\n- \"Using lava_test_shell inside health checks\": [\n- [48, \"using-lava-test-shell-inside-health-checks\"]\n- ],\n- \"Infrastructure issues\": [\n- [48, \"infrastructure-issues\"]\n- ],\n \"Integration Stories\": [\n [56, \"integration-stories\"]\n ],\n \"Integration Story One - Nexus\": [\n [56, \"integration-story-one-nexus\"]\n ],\n \"Deploy\": [\n [56, \"deploy\"],\n [56, \"id2\"],\n- [70, \"deploy\"],\n+ [98, \"deploy\"],\n [100, \"deploy\"],\n- [98, \"deploy\"]\n+ [70, \"deploy\"]\n ],\n \"Boot\": [\n [56, \"boot\"],\n [56, \"id3\"],\n- [70, \"boot\"],\n+ [98, \"boot\"],\n [100, \"boot\"],\n- [98, \"boot\"]\n+ [70, \"boot\"]\n ],\n \"Issues\": [\n [56, \"issues\"],\n [56, \"id1\"],\n [56, \"id5\"]\n ],\n \"Integration Story Two - Pixel\": [\n@@ -6670,926 +6488,334 @@\n ],\n \"Integration Story - Dragonboard 410c\": [\n [56, \"integration-story-dragonboard-410c\"]\n ],\n \"Integration Story Five - HiKey 960\": [\n [56, \"integration-story-five-hikey-960\"]\n ],\n- \"Debugging LAVA test failures\": [\n- [23, \"debugging-lava-test-failures\"]\n- ],\n- \"Read the logs\": [\n- [23, \"index-1\"]\n- ],\n- \"Read the failure comment\": [\n- [23, \"read-the-failure-comment\"]\n- ],\n- \"Boot failure\": [\n- [23, \"index-2\"]\n- ],\n- \"Failure to find/mount the rootfs\": [\n- [23, \"failure-to-find-mount-the-rootfs\"]\n- ],\n- \"Start simple\": [\n- [23, \"start-simple\"]\n- ],\n- \"Change one thing at a time\": [\n- [23, \"change-one-thing-at-a-time\"]\n- ],\n- \"Make your tests and setup verbose\": [\n- [23, \"make-your-tests-and-setup-verbose\"]\n- ],\n- \"Provide debug data in all test jobs\": [\n- [23, \"provide-debug-data-in-all-test-jobs\"]\n- ],\n- \"Common pitfalls\": [\n- [23, \"common-pitfalls\"]\n- ],\n- \"Handling locally built files\": [\n- [23, \"handling-locally-built-files\"]\n- ],\n- \"Avoid using shell operators in YAML lines\": [\n- [23, \"avoid-using-shell-operators-in-yaml-lines\"]\n- ],\n- \"Test your result parsers\": [\n- [23, \"test-your-result-parsers\"]\n- ],\n- \"Be obsessive about paths and scripts\": [\n- [23, \"be-obsessive-about-paths-and-scripts\"]\n- ],\n- \"Debugging automation failures\": [\n- [23, \"debugging-automation-failures\"]\n- ],\n- \"Infrastructure effects\": [\n- [23, \"infrastructure-effects\"]\n- ],\n- \"Hidden assumptions in the manual operations\": [\n- [23, \"hidden-assumptions-in-the-manual-operations\"]\n- ],\n- \"Differences in input speeds\": [\n- [23, \"differences-in-input-speeds\"]\n- ],\n- \"Setting boot_character_delay\": [\n- [23, \"setting-boot-character-delay\"]\n- ],\n- \"Setting test_character_delay\": [\n- [23, \"setting-test-character-delay\"]\n- ],\n- \"Debugging MultiNode tests\": [\n- [23, \"debugging-multinode-tests\"]\n- ],\n- \"Simplify your MultiNode test\": [\n- [23, \"simplify-your-multinode-test\"]\n- ],\n- \"Check that your message ID labels are consistent\": [\n- [23, \"check-that-your-message-id-labels-are-consistent\"]\n- ],\n- \"A failed test is not necessarily a bug in the test\": [\n- [23, \"a-failed-test-is-not-necessarily-a-bug-in-the-test\"]\n- ],\n- \"Connections in device configuration\": [\n- [16, \"connections-in-device-configuration\"]\n+ \"UEFI\": [\n+ [55, \"uefi\"]\n ],\n- \"Connections in test jobs\": [\n- [16, \"connections-in-test-jobs\"]\n+ \"Introduction\": [\n+ [55, \"introduction\"],\n+ [12, \"introduction\"],\n+ [24, \"introduction\"],\n+ [79, \"introduction\"]\n ],\n- \"Connections and namespaces\": [\n- [16, \"connections-and-namespaces\"]\n+ \"UEFI menus\": [\n+ [55, \"uefi-menus\"]\n ],\n- \"Multiple serial port support\": [\n- [16, \"multiple-serial-port-support\"]\n+ \"UEFI graphical interfaces\": [\n+ [55, \"uefi-graphical-interfaces\"]\n ],\n- \"Background\": [\n- [16, \"background\"],\n- [42, \"background\"]\n+ \"D02/D03\": [\n+ [55, \"d02-d03\"]\n ],\n- \"Isolating kernel messages from test output\": [\n- [16, \"isolating-kernel-messages-from-test-output\"]\n+ \"Mustang UEFI\": [\n+ [55, \"mustang-uefi\"]\n ],\n- \"Changes needed in the test image\": [\n- [16, \"changes-needed-in-the-test-image\"]\n+ \"HiKey 620\": [\n+ [55, \"hikey-620\"]\n ],\n- \"Adding extra serial ports to a test device\": [\n- [16, \"adding-extra-serial-ports-to-a-test-device\"]\n+ \"HiKey 960\": [\n+ [55, \"hikey-960\"]\n ],\n- \"Configuring serial ports\": [\n- [16, \"configuring-serial-ports\"]\n+ \"Introduction to LAVA\": [\n+ [50, \"introduction-to-lava\"]\n ],\n- \"Using multiple serial ports\": [\n- [16, \"using-multiple-serial-ports\"]\n+ \"Navigation\": [\n+ [50, \"navigation\"]\n ],\n- \"Example job 1: Simple beaglebone-black job with a second serial port\": [\n- [16, \"example-job-1-simple-beaglebone-black-job-with-a-second-serial-port\"]\n+ \"Index\": [\n+ [50, \"id1\"]\n ],\n- \"Deploy and boot the device\": [\n- [16, \"deploy-and-boot-the-device\"]\n+ \"Contents\": [\n+ [50, \"id2\"],\n+ [46, \"contents\"],\n+ [0, \"contents\"],\n+ [2, \"contents\"],\n+ [5, \"contents\"],\n+ [3, \"contents\"],\n+ [17, \"contents\"]\n ],\n- \"Create the connection to the second serial port\": [\n- [16, \"create-the-connection-to-the-second-serial-port\"],\n- [16, \"multiple-serial-ports-example2-boot-connection\"]\n+ \"Page indices\": [\n+ [50, \"page-indices\"]\n ],\n- \"Tell the test shell to use the new connection\": [\n- [16, \"tell-the-test-shell-to-use-the-new-connection\"],\n- [16, \"multiple-serial-ports-example2-test-connection\"]\n+ \"About LAVA V2\": [\n+ [50, \"about-lava-v2\"]\n ],\n- \"Example job 2: A more complicated setup including LXC\": [\n- [16, \"example-job-2-a-more-complicated-setup-including-lxc\"]\n+ \"LAVA Overview\": [\n+ [50, \"lava-overview\"]\n ],\n- \"Define the container\": [\n- [16, \"define-the-container\"]\n+ \"What is LAVA?\": [\n+ [50, \"what-is-lava\"]\n ],\n- \"Deploy and boot the container\": [\n- [16, \"deploy-and-boot-the-container\"]\n+ \"What is LAVA not?\": [\n+ [50, \"what-is-lava-not\"]\n ],\n- \"Use the container to deploy and boot the device\": [\n- [16, \"use-the-container-to-deploy-and-boot-the-device\"]\n+ \"Features\": [\n+ [50, \"features\"]\n ],\n- \"Limitations with multiple serial ports\": [\n- [16, \"limitations-with-multiple-serial-ports\"]\n+ \"Architecture\": [\n+ [50, \"architecture\"]\n ],\n- \"Secondary Connection\": [\n- [16, \"secondary-connection\"]\n+ \"Elements of the Master\": [\n+ [50, \"elements-of-the-master\"],\n+ [39, \"elements-of-the-master\"]\n ],\n- \"Considerations with a secondary connection\": [\n- [16, \"considerations-with-a-secondary-connection\"]\n+ \"Elements of the Worker\": [\n+ [50, \"elements-of-the-worker\"],\n+ [39, \"elements-of-the-worker\"]\n ],\n- \"Connections and hacking sessions\": [\n- [16, \"connections-and-hacking-sessions\"]\n+ \"Preparation\": [\n+ [50, \"preparation\"]\n ],\n- \"Using secondary connections with VM groups\": [\n- [16, \"using-secondary-connections-with-vm-groups\"]\n+ \"Methods\": [\n+ [50, \"methods\"]\n ],\n- \"Sequence\": [\n- [16, \"sequence\"]\n+ \"Deployment methods\": [\n+ [50, \"deployment-methods\"]\n ],\n- \"Basic use cases\": [\n- [16, \"basic-use-cases\"]\n+ \"Boot methods\": [\n+ [50, \"boot-methods\"],\n+ [71, \"boot-methods\"]\n ],\n- \"Sample job definition for the VM job\": [\n- [16, \"sample-job-definition-for-the-vm-job\"]\n+ \"Test methods\": [\n+ [50, \"test-methods\"]\n ],\n- \"Primary remote connection\": [\n- [16, \"primary-remote-connection\"]\n+ \"Multiple device testing\": [\n+ [50, \"multiple-device-testing\"]\n ],\n- \"Devices supporting Primary Remote Connections\": [\n- [16, \"devices-supporting-primary-remote-connections\"]\n+ \"Scheduling\": [\n+ [50, \"scheduling\"]\n ],\n- \"SSH as the primary remote connection\": [\n- [16, \"ssh-as-the-primary-remote-connection\"]\n+ \"Advanced use cases\": [\n+ [50, \"advanced-use-cases\"],\n+ [16, \"advanced-use-cases\"]\n ],\n- \"Security\": [\n- [16, \"security\"]\n+ \"Glossary\": [\n+ [50, \"glossary\"]\n ],\n- \"Persistence\": [\n- [16, \"persistence\"]\n+ \"Support\": [\n+ [50, \"support\"]\n ],\n- \"Disposable chroot deployments\": [\n- [16, \"disposable-chroot-deployments\"]\n+ \"Full documentation\": [\n+ [50, \"full-documentation\"]\n ],\n- \"LAVA Software Project Contribution - Introduction\": [\n- [19, \"lava-software-project-contribution-introduction\"]\n+ \"Writing Health Checks for devices\": [\n+ [48, \"writing-health-checks-for-devices\"]\n ],\n- \"Before you start\": [\n- [19, \"before-you-start\"]\n+ \"LAVA YAML health checks\": [\n+ [48, \"lava-yaml-health-checks\"]\n ],\n- \"Ways to contribute\": [\n- [19, \"ways-to-contribute\"]\n+ \"Device Types and templates\": [\n+ [48, \"device-types-and-templates\"]\n ],\n- \"Documentation\": [\n- [19, \"documentation\"]\n+ \"Tasks within health checks\": [\n+ [48, \"tasks-within-health-checks\"]\n ],\n- \"Issue Tracker\": [\n- [19, \"issue-tracker\"]\n+ \"Checking infrastructure and peripherals in health checks\": [\n+ [48, \"checking-infrastructure-and-peripherals-in-health-checks\"]\n ],\n- \"Bug Fixes and New Features\": [\n- [19, \"bug-fixes-and-new-features\"]\n+ \"Using lava_test_shell inside health checks\": [\n+ [48, \"using-lava-test-shell-inside-health-checks\"]\n ],\n- \"Contributing to the functional testing\": [\n- [19, \"contributing-to-the-functional-testing\"]\n+ \"Infrastructure issues\": [\n+ [48, \"infrastructure-issues\"]\n ],\n- \"Mailing lists and IRC\": [\n- [19, \"mailing-lists-and-irc\"]\n+ \"U-Boot\": [\n+ [54, \"u-boot\"]\n ],\n- \"Writing Tests\": [\n- [26, \"writing-tests\"]\n+ \"Common U-Boot support\": [\n+ [54, \"common-u-boot-support\"]\n ],\n- \"Introduction to the LAVA Test Developer Guide\": [\n- [26, \"introduction-to-the-lava-test-developer-guide\"]\n+ \"Prompts\": [\n+ [54, \"prompts\"]\n ],\n- \"Guide Contents\": [\n- [26, \"guide-contents\"]\n+ \"Interrupting U-Boot\": [\n+ [54, \"interrupting-u-boot\"]\n ],\n- \"Assumptions at the start of this guide\": [\n- [26, \"assumptions-at-the-start-of-this-guide\"]\n+ \"Troubleshooting Interrupting U-Boot\": [\n+ [54, \"troubleshooting-interrupting-u-boot\"]\n ],\n- \"Checking device availability\": [\n- [26, \"checking-device-availability\"]\n+ \"Load addresses\": [\n+ [54, \"load-addresses\"]\n ],\n- \"Finding an image to run on the device\": [\n- [26, \"finding-an-image-to-run-on-the-device\"]\n+ \"Required configuration\": [\n+ [54, \"required-configuration\"]\n ],\n- \"Actions to be run for a LAVA test\": [\n- [26, \"actions-to-be-run-for-a-lava-test\"]\n+ \"Booting the kernel\": [\n+ [54, \"booting-the-kernel\"],\n+ [99, \"booting-the-kernel\"]\n ],\n- \"Example of Lava Test\": [\n- [26, \"example-of-lava-test\"]\n+ \"U-Boot bootargs\": [\n+ [54, \"u-boot-bootargs\"]\n ],\n- \"Deploying a pre-built QEMU image\": [\n- [26, \"deploying-a-pre-built-qemu-image\"]\n+ \"Using mkimage\": [\n+ [54, \"using-mkimage\"]\n ],\n- \"Using device tags\": [\n- [26, \"using-device-tags\"]\n+ \"Vendor builds\": [\n+ [54, \"vendor-builds\"]\n ],\n- \"Using checksums\": [\n- [26, \"using-checksums\"]\n+ \"Network support\": [\n+ [54, \"network-support\"]\n ],\n- \"Using Lava-Test Test Definition 1.0\": [\n- [26, \"using-lava-test-test-definition-1-0\"]\n+ \"Additional U-Boot support\": [\n+ [54, \"additional-u-boot-support\"]\n ],\n- \"LAVA development\": [\n- [27, \"lava-development\"]\n+ \"Filesystem support\": [\n+ [54, \"filesystem-support\"]\n ],\n- \"Run the unit tests\": [\n- [27, \"run-the-unit-tests\"]\n+ \"Interface names\": [\n+ [54, \"interface-names\"]\n ],\n- \"Functional testing\": [\n- [27, \"functional-testing\"]\n+ \"Initializing subsystems\": [\n+ [54, \"initializing-subsystems\"]\n ],\n- \"Make your changes\": [\n- [27, \"make-your-changes\"]\n+ \"Appending the DTB\": [\n+ [54, \"appending-the-dtb\"]\n ],\n- \"Source code formatting\": [\n- [27, \"source-code-formatting\"]\n+ \"Administering LAVA using Docker\": [\n+ [36, \"administering-lava-using-docker\"]\n ],\n- \"Add some unit tests\": [\n- [27, \"add-some-unit-tests\"]\n+ \"Prerequisites\": [\n+ [36, \"prerequisites\"]\n ],\n- \"lava_dispatcher\": [\n- [27, \"lava-dispatcher\"],\n- [27, \"id2\"]\n+ \"Docker Networking\": [\n+ [36, \"docker-networking\"]\n ],\n- \"lava_scheduler_app\": [\n- [27, \"lava-scheduler-app\"]\n+ \"Official LAVA Software Docker images\": [\n+ [36, \"official-lava-software-docker-images\"]\n ],\n- \"Re-run the unit tests\": [\n- [27, \"re-run-the-unit-tests\"]\n+ \"Official LAVA Releases using Docker\": [\n+ [36, \"official-lava-releases-using-docker\"]\n ],\n- \"Testing local changes\": [\n- [27, \"testing-local-changes\"]\n+ \"lava-dispatcher\": [\n+ [36, \"lava-dispatcher\"],\n+ [36, \"id2\"],\n+ [35, \"lava-dispatcher\"],\n+ [97, \"lava-dispatcher\"]\n ],\n \"lava-server\": [\n- [27, \"lava-server\"],\n [36, \"lava-server\"],\n [36, \"id3\"],\n [35, \"lava-server\"],\n+ [27, \"lava-server\"],\n [97, \"lava-server\"]\n ],\n- \"lava-server-doc\": [\n- [27, \"lava-server-doc\"]\n- ],\n- \"Debugging lava-dispatcher with pdb, the Python debugger\": [\n- [27, \"debugging-lava-dispatcher-with-pdb-the-python-debugger\"]\n- ],\n- \"Send your commits for review\": [\n- [27, \"send-your-commits-for-review\"]\n- ],\n- \"Adding reviewers\": [\n- [27, \"adding-reviewers\"]\n- ],\n- \"Handling your local branches\": [\n- [27, \"handling-your-local-branches\"]\n- ],\n- \"Future proofing\": [\n- [27, \"future-proofing\"]\n- ],\n- \"Use templates to generate device configuration\": [\n- [27, \"use-templates-to-generate-device-configuration\"]\n- ],\n- \"Database migrations\": [\n- [27, \"database-migrations\"]\n- ],\n- \"Python 3.x\": [\n- [27, \"python-3-x\"]\n- ],\n- \"XML-RPC changes\": [\n- [27, \"xml-rpc-changes\"]\n- ],\n- \"Instance settings\": [\n- [27, \"instance-settings\"]\n- ],\n- \"Pylint3\": [\n- [27, \"pylint3\"]\n- ],\n- \"pep8\": [\n- [27, \"pep8\"]\n- ],\n- \"Unit-tests\": [\n- [27, \"unit-tests\"]\n- ],\n- \"LAVA database model visualization\": [\n- [27, \"lava-database-model-visualization\"]\n- ],\n- \"Developer access to django shell\": [\n- [27, \"developer-access-to-django-shell\"]\n- ],\n- \"Adding new device types\": [\n- [30, \"adding-new-device-types\"]\n- ],\n- \"Device Requirements\": [\n- [30, \"device-requirements\"]\n- ],\n- \"Reproducibility\": [\n- [30, \"reproducibility\"]\n- ],\n- \"Example One\": [\n- [30, \"example-one\"],\n- [34, \"example-one\"]\n- ],\n- \"Example Two\": [\n- [30, \"example-two\"],\n- [34, \"example-two\"]\n- ],\n- \"Reliability\": [\n- [30, \"reliability\"],\n- [14, \"reliability\"]\n- ],\n- \"Scriptability\": [\n- [30, \"scriptability\"]\n- ],\n- \"Scalability\": [\n- [30, \"scalability\"],\n- [14, \"scalability\"]\n- ],\n- \"Power\": [\n- [30, \"power\"]\n- ],\n- \"Reset\": [\n- [30, \"reset\"]\n- ],\n- \"Networking\": [\n- [30, \"networking\"]\n- ],\n- \"Serial console\": [\n- [30, \"serial-console\"]\n- ],\n- \"Integration process\": [\n- [30, \"integration-process\"]\n- ],\n- \"Find a similar existing device type\": [\n- [30, \"find-a-similar-existing-device-type\"]\n- ],\n- \"Extend from an existing device type template\": [\n- [30, \"extend-from-an-existing-device-type-template\"]\n- ],\n- \"Extend the template unit tests\": [\n- [30, \"extend-the-template-unit-tests\"]\n- ],\n- \"Exporting data out of LAVA\": [\n- [21, \"exporting-data-out-of-lava\"]\n- ],\n- \"REST API\": [\n- [21, \"rest-api\"]\n- ],\n- \"v0.2\": [\n- [21, \"v0-2\"]\n- ],\n- \"Extra actions\": [\n- [21, \"extra-actions\"]\n- ],\n- \"Filtering\": [\n- [21, \"filtering\"]\n- ],\n- \"TestJob object\": [\n- [21, \"testjob-object\"]\n- ],\n- \"DeviceType object\": [\n- [21, \"devicetype-object\"]\n- ],\n- \"Architecture object\": [\n- [21, \"architecture-object\"]\n- ],\n- \"ProcessorFamily object\": [\n- [21, \"processorfamily-object\"]\n- ],\n- \"Alias object\": [\n- [21, \"alias-object\"]\n- ],\n- \"Core object\": [\n- [21, \"core-object\"]\n- ],\n- \"BitWidth object\": [\n- [21, \"bitwidth-object\"]\n- ],\n- \"Device object\": [\n- [21, \"device-object\"]\n- ],\n- \"Worker object\": [\n- [21, \"worker-object\"]\n- ],\n- \"Tag object\": [\n- [21, \"tag-object\"]\n- ],\n- \"JobFailureTag object\": [\n- [21, \"jobfailuretag-object\"]\n- ],\n- \"User object\": [\n- [21, \"user-object\"]\n- ],\n- \"Group object\": [\n- [21, \"group-object\"]\n- ],\n- \"Nested filtering\": [\n- [21, \"nested-filtering\"]\n- ],\n- \"Sorting\": [\n- [21, \"sorting\"]\n- ],\n- \"Creating and modifying objects\": [\n- [21, \"creating-and-modifying-objects\"]\n- ],\n- \"Submitting a test job\": [\n- [21, \"submitting-a-test-job\"]\n- ],\n- \"Deprecated semi-REST API for retrieving results\": [\n- [21, \"deprecated-semi-rest-api-for-retrieving-results\"]\n- ],\n- \"Chunking test suite results\": [\n- [21, \"chunking-test-suite-results\"]\n- ],\n- \"XML-RPC\": [\n- [21, \"xml-rpc\"]\n- ],\n- \"User specified notifications\": [\n- [21, \"user-specified-notifications\"]\n- ],\n- \"Example test job notification\": [\n- [21, \"example-test-job-notification\"]\n- ],\n- \"Event notifications\": [\n- [21, \"event-notifications\"]\n- ],\n- \"Example metadata\": [\n- [21, \"example-metadata\"]\n- ],\n- \"Event notification types\": [\n- [21, \"event-notification-types\"]\n- ],\n- \"Example device notification\": [\n- [21, \"example-device-notification\"]\n- ],\n- \"Example testjob notification\": [\n- [21, \"example-testjob-notification\"]\n- ],\n- \"Example log event notification\": [\n- [21, \"example-log-event-notification\"]\n- ],\n- \"Example test event notification\": [\n- [21, \"example-test-event-notification\"]\n- ],\n- \"Write your own event notification client\": [\n- [21, \"write-your-own-event-notification-client\"]\n- ],\n- \"Submit a job and wait on notifications\": [\n- [21, \"submit-a-job-and-wait-on-notifications\"]\n- ],\n- \"Guide to development within LAVA\": [\n- [28, \"guide-to-development-within-lava\"]\n- ],\n- \"Dependencies required to run unit tests\": [\n- [28, \"dependencies-required-to-run-unit-tests\"]\n- ],\n- \"Developing using device-type templates\": [\n- [28, \"developing-using-device-type-templates\"]\n- ],\n- \"Device type templates as code\": [\n- [28, \"device-type-templates-as-code\"]\n- ],\n- \"Testing new device-type templates\": [\n- [28, \"testing-new-device-type-templates\"]\n- ],\n- \"Use version-control for device-type templates\": [\n- [28, \"use-version-control-for-device-type-templates\"]\n- ],\n- \"Contribute device-type templates back upstream\": [\n- [28, \"contribute-device-type-templates-back-upstream\"]\n- ],\n- \"Developer workflows\": [\n- [28, \"developer-workflows\"]\n- ],\n- \"Code locations\": [\n- [28, \"code-locations\"]\n- ],\n- \"Compatibility\": [\n- [28, \"compatibility\"]\n- ],\n- \"Jinja2 support\": [\n- [28, \"jinja2-support\"]\n- ],\n- \"Device dictionaries\": [\n- [28, \"device-dictionaries\"]\n- ],\n- \"Dispatcher device configurations\": [\n- [28, \"dispatcher-device-configurations\"]\n- ],\n- \"Contributing Upstream\": [\n- [28, \"contributing-upstream\"]\n- ],\n- \"Planning\": [\n- [28, \"planning\"]\n- ],\n- \"Report a Bug\": [\n- [28, \"report-a-bug\"]\n- ],\n- \"Community contributions\": [\n- [28, \"community-contributions\"]\n- ],\n- \"Contributing via your distribution\": [\n- [28, \"contributing-via-your-distribution\"]\n- ],\n- \"Contributing via GitHub\": [\n- [28, \"contributing-via-github\"]\n- ],\n- \"Developing LAVA on Debian\": [\n- [22, \"developing-lava-on-debian\"]\n- ],\n- \"Why Debian?\": [\n- [22, \"why-debian\"]\n- ],\n- \"Options for other distributions\": [\n- [22, \"options-for-other-distributions\"]\n- ],\n- \"Preparing for LAVA development\": [\n- [22, \"preparing-for-lava-development\"]\n- ],\n- \"Developer package build\": [\n- [22, \"developer-package-build\"]\n- ],\n- \"Changes from 2018.10 onwards\": [\n- [22, \"changes-from-2018-10-onwards\"]\n- ],\n- \"Which branch to use for changes\": [\n- [22, \"which-branch-to-use-for-changes\"]\n- ],\n- \"Local version strings\": [\n- [22, \"local-version-strings\"]\n- ],\n- \"Distribution differences\": [\n- [22, \"distribution-differences\"]\n- ],\n- \"Example\": [\n- [22, \"example\"],\n- [0, \"example\"]\n- ],\n- \"Developer build versions\": [\n- [22, \"developer-build-versions\"]\n- ],\n- \"Development using Python3\": [\n- [22, \"development-using-python3\"]\n- ],\n- \"Quick fixes and testing\": [\n- [22, \"quick-fixes-and-testing\"]\n- ],\n- \"Viewing changes\": [\n- [22, \"viewing-changes\"]\n- ],\n- \"Migrating postgresql versions\": [\n- [22, \"migrating-postgresql-versions\"]\n- ],\n- \"Determining the active cluster\": [\n- [22, \"determining-the-active-cluster\"]\n- ],\n- \"Performing the migration\": [\n- [22, \"performing-the-migration\"]\n- ],\n- \"Dependency Requirements\": [\n- [22, \"dependency-requirements\"]\n- ],\n- \"Outputting the requirements.txt format\": [\n- [22, \"outputting-the-requirements-txt-format\"]\n- ],\n- \"Outputting a list of binary package names\": [\n- [22, \"outputting-a-list-of-binary-package-names\"]\n- ],\n- \"Adding packages needed for the unittests\": [\n- [22, \"adding-packages-needed-for-the-unittests\"]\n- ],\n- \"Javascript handling\": [\n- [22, \"javascript-handling\"]\n- ],\n- \"Javascript and security\": [\n- [22, \"javascript-and-security\"]\n- ],\n- \"Javascript maintenance\": [\n- [22, \"javascript-maintenance\"]\n- ],\n- \"Packaging changes\": [\n- [22, \"packaging-changes\"]\n- ],\n- \"Building for other architectures\": [\n- [22, \"building-for-other-architectures\"]\n- ],\n- \"Debugging Django issues\": [\n- [22, \"debugging-django-issues\"]\n- ],\n- \"Installing\": [\n- [22, \"installing\"]\n- ],\n- \"Performance overhead\": [\n- [22, \"performance-overhead\"]\n- ],\n- \"LAVA Software Community Project Contribution Guide\": [\n- [18, \"lava-software-community-project-contribution-guide\"],\n- [17, \"lava-software-community-project-contribution-guide\"]\n- ],\n- \"About the Contribution Guidelines\": [\n- [18, \"about-the-contribution-guidelines\"]\n- ],\n- \"Conflicting priorities\": [\n- [18, \"conflicting-priorities\"]\n- ],\n- \"Pre-requisites to start with development\": [\n- [18, \"pre-requisites-to-start-with-development\"]\n- ],\n- \"Other elements involved in LAVA development\": [\n- [18, \"other-elements-involved-in-lava-development\"]\n- ],\n- \"Updating online documentation\": [\n- [18, \"updating-online-documentation\"]\n- ],\n- \"The LAVA contribution process\": [\n- [18, \"the-lava-contribution-process\"]\n- ],\n- \"Creating a GitLab Account\": [\n- [18, \"creating-a-gitlab-account\"]\n- ],\n- \"Request GitLab Fork Permissions\": [\n- [18, \"request-gitlab-fork-permissions\"]\n- ],\n- \"Fork the code\": [\n- [18, \"fork-the-code\"]\n- ],\n- \"Access to the CI runners\": [\n- [18, \"access-to-the-ci-runners\"]\n- ],\n- \"Create a development branch\": [\n- [18, \"create-a-development-branch\"]\n- ],\n- \"Make, test and commit your changes\": [\n- [18, \"make-test-and-commit-your-changes\"]\n- ],\n- \"Push your changes to your development branch\": [\n- [18, \"push-your-changes-to-your-development-branch\"]\n- ],\n- \"Submit a Merge Request (MR)\": [\n- [18, \"submit-a-merge-request-mr\"]\n- ],\n- \"MRs are reviewed (and rebased and reworked as needed)\": [\n- [18, \"mrs-are-reviewed-and-rebased-and-reworked-as-needed\"]\n- ],\n- \"How changes get merged\": [\n- [18, \"how-changes-get-merged\"]\n- ],\n- \"Custom result handling\": [\n- [20, \"custom-result-handling\"]\n- ],\n- \"Closing the CI loop\": [\n- [20, \"closing-the-ci-loop\"]\n- ],\n- \"Important features of a CI loop\": [\n- [20, \"important-features-of-a-ci-loop\"]\n- ],\n- \"Where LAVA fits into the testing\": [\n- [20, \"where-lava-fits-into-the-testing\"]\n- ],\n- \"Splitting the testing\": [\n- [20, \"splitting-the-testing\"]\n- ],\n- \"Questions to ask\": [\n- [20, \"questions-to-ask\"]\n- ],\n- \"KernelCI.org\": [\n- [20, \"kernelci-org\"]\n- ],\n- \"SQUAD\": [\n- [20, \"squad\"]\n- ],\n- \"Deploying test images using LXC\": [\n- [24, \"deploying-test-images-using-lxc\"]\n- ],\n- \"Using LXC as Device Type\": [\n- [24, \"using-lxc-as-device-type\"]\n- ],\n- \"Protocol elements\": [\n- [24, \"protocol-elements\"],\n- [24, \"id2\"],\n- [3, \"protocol-elements\"]\n- ],\n- \"Sample Job Definition\": [\n- [24, \"sample-job-definition\"],\n- [24, \"id3\"]\n- ],\n- \"Namespaces\": [\n- [24, \"namespaces\"]\n- ],\n- \"Using the LXC protocol to support Android\": [\n- [24, \"using-the-lxc-protocol-to-support-android\"]\n- ],\n- \"LAVA Android Naming Conventions\": [\n- [24, \"lava-android-naming-conventions\"]\n- ],\n- \"Requirements and Limitations\": [\n- [24, \"requirements-and-limitations\"]\n- ],\n- \"Feedback from the device\": [\n- [24, \"feedback-from-the-device\"]\n- ],\n- \"Differences between LXC releases\": [\n- [24, \"differences-between-lxc-releases\"]\n- ],\n- \"Permanency\": [\n- [31, \"permanency\"]\n- ],\n- \"Device sub-types\": [\n- [31, \"device-sub-types\"]\n- ],\n- \"Choosing a name for a device type\": [\n- [31, \"choosing-a-name-for-a-device-type\"]\n- ],\n- \"Matching the template\": [\n- [31, \"matching-the-template\"]\n- ],\n- \"Example device types\": [\n- [31, \"example-device-types\"]\n- ],\n- \"Database elements for a device type\": [\n- [31, \"database-elements-for-a-device-type\"]\n- ],\n- \"Descriptive fields\": [\n- [31, \"descriptive-fields\"]\n- ],\n- \"Device Capabilities Support\": [\n- [29, \"device-capabilities-support\"]\n- ],\n- \"Device owner abilities\": [\n- [29, \"device-owner-abilities\"]\n- ],\n- \"Developing new classes for LAVA V2\": [\n- [25, \"developing-new-classes-for-lava-v2\"]\n- ],\n- \"Test with simple scripts\": [\n- [25, \"test-with-simple-scripts\"]\n- ],\n- \"Start with new classes\": [\n- [25, \"start-with-new-classes\"]\n- ],\n- \"Add support files for unit tests\": [\n- [25, \"add-support-files-for-unit-tests\"]\n- ],\n- \"Add unit tests\": [\n- [25, \"add-unit-tests\"]\n- ],\n- \"Run all the unit tests\": [\n- [25, \"run-all-the-unit-tests\"]\n- ],\n- \"Incorporate the test script into the classes\": [\n- [25, \"incorporate-the-test-script-into-the-classes\"]\n- ],\n- \"Check the new classes\": [\n- [25, \"check-the-new-classes\"]\n- ],\n- \"Startup achieved\": [\n- [25, \"startup-achieved\"]\n- ],\n- \"First steps using LAVA\": [\n- [17, \"first-steps-using-lava\"]\n- ],\n- \"First steps installing LAVA\": [\n- [17, \"first-steps-installing-lava\"],\n- [39, \"first-steps-installing-lava\"]\n- ],\n- \"CI with LAVA\": [\n- [17, \"ci-with-lava\"]\n- ],\n- \"Writing tests for LAVA\": [\n- [17, \"writing-tests-for-lava\"]\n- ],\n- \"Results in LAVA\": [\n- [17, \"results-in-lava\"],\n- [93, \"results-in-lava\"]\n- ],\n- \"LAVA administration guide\": [\n- [17, \"lava-administration-guide\"]\n+ \"Command lines\": [\n+ [36, \"command-lines\"]\n ],\n- \"LAVA device integration guide\": [\n- [17, \"lava-device-integration-guide\"]\n+ \"POSIX shell\": [\n+ [36, \"posix-shell\"]\n ],\n- \"Migrating to V2\": [\n- [17, \"migrating-to-v2\"]\n+ \"Python\": [\n+ [36, \"python\"]\n ],\n- \"Context help\": [\n- [17, \"context-help\"]\n+ \"lava-dispatcher in docker\": [\n+ [36, \"lava-dispatcher-in-docker\"]\n ],\n- \"Dispatcher Action Reference\": [\n- [32, \"dispatcher-action-reference\"]\n+ \"Mocking up LXC inside docker\": [\n+ [36, \"mocking-up-lxc-inside-docker\"]\n ],\n- \"Deploy Actions\": [\n- [32, \"deploy-actions\"]\n+ \"lava-server in docker\": [\n+ [36, \"lava-server-in-docker\"]\n ],\n- \"Boot Actions\": [\n- [32, \"boot-actions\"]\n+ \"LAVA Coordinator\": [\n+ [36, \"lava-coordinator\"]\n ],\n- \"Test Actions\": [\n- [32, \"test-actions\"]\n+ \"CI images\": [\n+ [36, \"ci-images\"]\n ],\n- \"Other test job elements\": [\n- [32, \"other-test-job-elements\"]\n+ \"Superusers\": [\n+ [36, \"superusers\"]\n ],\n- \"reboot_to_fastboot\": [\n- [32, \"reboot-to-fastboot\"]\n+ \"Running lava-server & lava-dispatcher together\": [\n+ [36, \"running-lava-server-lava-dispatcher-together\"]\n ],\n- \"Further Examples\": [\n- [32, \"further-examples\"]\n+ \"Separate services in separate Docker containers\": [\n+ [36, \"separate-services-in-separate-docker-containers\"]\n ],\n- \"Writing YAML job submission files\": [\n- [34, \"writing-yaml-job-submission-files\"]\n+ \"First steps as a user\": [\n+ [41, \"first-steps-as-a-user\"]\n ],\n- \"Basics of the YAML format\": [\n- [34, \"basics-of-the-yaml-format\"]\n+ \"Logging In\": [\n+ [41, \"logging-in\"]\n ],\n- \"Basic structure for job submission\": [\n- [34, \"basic-structure-for-job-submission\"]\n+ \"Local User Account\": [\n+ [41, \"local-user-account\"]\n ],\n- \"Sample JOB definition for a KVM\": [\n- [34, \"sample-job-definition-for-a-kvm\"]\n+ \"Linaro lab users\": [\n+ [41, \"linaro-lab-users\"]\n ],\n- \"Basic structure for device_type configuration\": [\n- [34, \"basic-structure-for-device-type-configuration\"]\n+ \"Authentication Tokens\": [\n+ [41, \"authentication-tokens\"]\n ],\n- \"Basic structure for device configuration\": [\n- [34, \"basic-structure-for-device-configuration\"]\n+ \"LAVA Hacking Sessions\": [\n+ [47, \"lava-hacking-sessions\"]\n ],\n- \"Overriding values in device type, device dictionary and the job context\": [\n- [34, \"overriding-values-in-device-type-device-dictionary-and-the-job-context\"]\n+ \"Assumptions\": [\n+ [47, \"assumptions\"],\n+ [46, \"assumptions\"]\n ],\n- \"Example Three\": [\n- [34, \"example-three\"]\n+ \"Limitations\": [\n+ [47, \"limitations\"],\n+ [96, \"limitations\"],\n+ [96, \"id2\"],\n+ [105, \"limitations\"]\n ],\n- \"Provide environment variables for the device in the job description\": [\n- [34, \"provide-environment-variables-for-the-device-in-the-job-description\"]\n+ \"Device requirements\": [\n+ [47, \"device-requirements\"],\n+ [39, \"device-requirements\"]\n ],\n- \"Pipeline Device Configuration\": [\n- [34, \"pipeline-device-configuration\"]\n+ \"Definitions\": [\n+ [47, \"definitions\"],\n+ [5, \"definitions\"],\n+ [105, \"definitions\"]\n ],\n- \"Viewing the Device Dictionary\": [\n- [34, \"viewing-the-device-dictionary\"]\n+ \"Parameters\": [\n+ [47, \"parameters\"],\n+ [70, \"parameters\"]\n ],\n- \"On scheduler device detail page\": [\n- [34, \"on-scheduler-device-detail-page\"]\n+ \"Starting a Hacking Session\": [\n+ [47, \"starting-a-hacking-session\"]\n ],\n- \"On Job Description Tab\": [\n- [34, \"on-job-description-tab\"]\n+ \"Connecting to a Hacking Session\": [\n+ [47, \"connecting-to-a-hacking-session\"]\n ],\n- \"As Admin\": [\n- [34, \"as-admin\"]\n+ \"SSH tunnels\": [\n+ [47, \"ssh-tunnels\"]\n ],\n- \"Dispatcher actions\": [\n- [34, \"dispatcher-actions\"]\n+ \"lava-test-shell helper functions in a hack session\": [\n+ [47, \"lava-test-shell-helper-functions-in-a-hack-session\"]\n ],\n- \"Mapping deployment actions to the python code\": [\n- [34, \"mapping-deployment-actions-to-the-python-code\"]\n+ \"Record text to the LAVA log\": [\n+ [47, \"record-text-to-the-lava-log\"]\n ],\n- \"Deployment actions\": [\n- [34, \"deployment-actions\"]\n+ \"Stopping a Hacking Session\": [\n+ [47, \"stopping-a-hacking-session\"]\n ],\n- \"Supported methods\": [\n- [34, \"supported-methods\"],\n- [34, \"id1\"]\n+ \"Hacking Session timeouts\": [\n+ [47, \"hacking-session-timeouts\"]\n ],\n- \"Boot actions\": [\n- [34, \"boot-actions\"]\n+ \"Continuing a Hacking Session\": [\n+ [47, \"continuing-a-hacking-session\"]\n ],\n- \"Test actions\": [\n- [34, \"test-actions\"]\n+ \"Multiple hacking sessions\": [\n+ [47, \"multiple-hacking-sessions\"]\n ],\n- \"Metadata\": [\n- [34, \"metadata\"],\n- [92, \"metadata\"],\n- [101, \"metadata\"],\n- [111, \"metadata\"]\n+ \"Sharing a single device\": [\n+ [47, \"sharing-a-single-device\"]\n ],\n- \"Submit actions\": [\n- [34, \"submit-actions\"]\n+ \"Separating users using virtual machines\": [\n+ [47, \"separating-users-using-virtual-machines\"]\n ],\n \"Growing your lab\": [\n [46, \"growing-your-lab\"]\n ],\n- \"Assumptions\": [\n- [46, \"assumptions\"],\n- [47, \"assumptions\"]\n- ],\n \"Requirements\": [\n [46, \"requirements\"],\n [38, \"requirements\"],\n [12, \"requirements\"],\n [97, \"requirements\"]\n ],\n \"Logical layouts\": [\n@@ -7642,14 +6868,48 @@\n ],\n \"Firewalls\": [\n [46, \"firewalls\"]\n ],\n \"Using a frontend with remote labs\": [\n [46, \"using-a-frontend-with-remote-labs\"]\n ],\n+ \"Adding your first devices\": [\n+ [38, \"adding-your-first-devices\"]\n+ ],\n+ \"Django administration interface\": [\n+ [38, \"django-administration-interface\"]\n+ ],\n+ \"Administrative interface site links\": [\n+ [38, \"administrative-interface-site-links\"]\n+ ],\n+ \"Start with a known device type\": [\n+ [38, \"start-with-a-known-device-type\"]\n+ ],\n+ \"QEMU\": [\n+ [38, \"qemu\"]\n+ ],\n+ \"Create a Device Type\": [\n+ [38, \"create-a-device-type\"]\n+ ],\n+ \"Create a device in the database\": [\n+ [38, \"create-a-device-in-the-database\"]\n+ ],\n+ \"Adding a dictionary to the first QEMU device\": [\n+ [38, \"adding-a-dictionary-to-the-first-qemu-device\"]\n+ ],\n+ \"Adding other devices of known device-types\": [\n+ [38, \"adding-other-devices-of-known-device-types\"]\n+ ],\n+ \"Check existing instances\": [\n+ [38, \"check-existing-instances\"]\n+ ],\n+ \"First steps installing LAVA\": [\n+ [39, \"first-steps-installing-lava\"],\n+ [17, \"first-steps-installing-lava\"]\n+ ],\n \"Initial LAVA Installation\": [\n [39, \"initial-lava-installation\"]\n ],\n \"Requirements to Consider Before Installing LAVA\": [\n [39, \"requirements-to-consider-before-installing-lava\"],\n [10, \"requirements-to-consider-before-installing-lava\"]\n ],\n@@ -7657,18 +6917,14 @@\n [39, \"software-requirements\"],\n [79, \"software-requirements\"]\n ],\n \"Hardware Requirements\": [\n [39, \"hardware-requirements\"],\n [79, \"hardware-requirements\"]\n ],\n- \"Device requirements\": [\n- [39, \"device-requirements\"],\n- [47, \"device-requirements\"]\n- ],\n \"MultiNode hardware requirements\": [\n [39, \"multinode-hardware-requirements\"]\n ],\n \"Which release to install\": [\n [39, \"which-release-to-install\"]\n ],\n \"Installation Types\": [\n@@ -7697,199 +6953,58 @@\n ],\n \"StarTech rackmount usb\": [\n [39, \"startech-rackmount-usb\"]\n ],\n \"Contact and bug reports\": [\n [39, \"contact-and-bug-reports\"]\n ],\n- \"Providing gold standard images\": [\n- [45, \"providing-gold-standard-images\"]\n- ],\n- \"Creating a gold standard image\": [\n- [45, \"creating-a-gold-standard-image\"]\n- ],\n- \"Other gold standard components\": [\n- [45, \"other-gold-standard-components\"]\n- ],\n- \"FVP\": [\n- [43, \"fvp\"]\n- ],\n- \"LAVA FVP Dispatcher Setup\": [\n- [43, \"lava-fvp-dispatcher-setup\"]\n- ],\n- \"FVP Binaries\": [\n- [43, \"fvp-binaries\"]\n- ],\n- \"Building FVP Docker Images\": [\n- [43, \"building-fvp-docker-images\"]\n- ],\n- \"Networking inside Models\": [\n- [43, \"networking-inside-models\"]\n- ],\n- \"Reading from all model consoles\": [\n- [43, \"reading-from-all-model-consoles\"]\n- ],\n- \"Administering LAVA using Docker\": [\n- [36, \"administering-lava-using-docker\"]\n- ],\n- \"Prerequisites\": [\n- [36, \"prerequisites\"]\n- ],\n- \"Docker Networking\": [\n- [36, \"docker-networking\"]\n- ],\n- \"Official LAVA Software Docker images\": [\n- [36, \"official-lava-software-docker-images\"]\n- ],\n- \"Official LAVA Releases using Docker\": [\n- [36, \"official-lava-releases-using-docker\"]\n- ],\n- \"lava-dispatcher\": [\n- [36, \"lava-dispatcher\"],\n- [36, \"id2\"],\n- [35, \"lava-dispatcher\"],\n- [97, \"lava-dispatcher\"]\n- ],\n- \"Command lines\": [\n- [36, \"command-lines\"]\n- ],\n- \"POSIX shell\": [\n- [36, \"posix-shell\"]\n- ],\n- \"Python\": [\n- [36, \"python\"]\n- ],\n- \"lava-dispatcher in docker\": [\n- [36, \"lava-dispatcher-in-docker\"]\n- ],\n- \"Mocking up LXC inside docker\": [\n- [36, \"mocking-up-lxc-inside-docker\"]\n- ],\n- \"lava-server in docker\": [\n- [36, \"lava-server-in-docker\"]\n- ],\n- \"LAVA Coordinator\": [\n- [36, \"lava-coordinator\"]\n- ],\n- \"CI images\": [\n- [36, \"ci-images\"]\n- ],\n- \"Superusers\": [\n- [36, \"superusers\"]\n- ],\n- \"Running lava-server & lava-dispatcher together\": [\n- [36, \"running-lava-server-lava-dispatcher-together\"]\n- ],\n- \"Separate services in separate Docker containers\": [\n- [36, \"separate-services-in-separate-docker-containers\"]\n- ],\n- \"Glossary of terms\": [\n- [44, \"glossary-of-terms\"]\n- ],\n- \"Functional testing of LAVA source code\": [\n- [42, \"functional-testing-of-lava-source-code\"]\n- ],\n- \"meta-lava\": [\n- [42, \"meta-lava\"]\n- ],\n- \"Future plans\": [\n- [42, \"future-plans\"]\n- ],\n- \"Purpose of functional tests\": [\n- [42, \"purpose-of-functional-tests\"]\n- ],\n- \"Requirements for a functional test job\": [\n- [42, \"requirements-for-a-functional-test-job\"]\n- ],\n- \"Using the functional test frontend\": [\n- [42, \"using-the-functional-test-frontend\"]\n- ],\n- \"Dedicated workers\": [\n- [42, \"dedicated-workers\"]\n- ],\n- \"Adding your first devices\": [\n- [38, \"adding-your-first-devices\"]\n- ],\n- \"Django administration interface\": [\n- [38, \"django-administration-interface\"]\n- ],\n- \"Administrative interface site links\": [\n- [38, \"administrative-interface-site-links\"]\n- ],\n- \"Start with a known device type\": [\n- [38, \"start-with-a-known-device-type\"]\n- ],\n- \"QEMU\": [\n- [38, \"qemu\"]\n- ],\n- \"Create a Device Type\": [\n- [38, \"create-a-device-type\"]\n- ],\n- \"Create a device in the database\": [\n- [38, \"create-a-device-in-the-database\"]\n- ],\n- \"Adding a dictionary to the first QEMU device\": [\n- [38, \"adding-a-dictionary-to-the-first-qemu-device\"]\n- ],\n- \"Adding other devices of known device-types\": [\n- [38, \"adding-other-devices-of-known-device-types\"]\n- ],\n- \"Check existing instances\": [\n- [38, \"check-existing-instances\"]\n- ],\n- \"LAVA Hacking Sessions\": [\n- [47, \"lava-hacking-sessions\"]\n+ \"Submitting your first job\": [\n+ [40, \"submitting-your-first-job\"]\n ],\n- \"Limitations\": [\n- [47, \"limitations\"],\n- [96, \"limitations\"],\n- [96, \"id2\"],\n- [105, \"limitations\"]\n+ \"Job Definition\": [\n+ [40, \"job-definition\"]\n ],\n- \"Definitions\": [\n- [47, \"definitions\"],\n- [5, \"definitions\"],\n- [105, \"definitions\"]\n+ \"Job Submission\": [\n+ [40, \"job-submission\"]\n ],\n- \"Parameters\": [\n- [47, \"parameters\"],\n- [70, \"parameters\"]\n+ \"Test Definitions\": [\n+ [40, \"test-definitions\"]\n ],\n- \"Starting a Hacking Session\": [\n- [47, \"starting-a-hacking-session\"]\n+ \"Viewing test results\": [\n+ [40, \"viewing-test-results\"]\n ],\n- \"Connecting to a Hacking Session\": [\n- [47, \"connecting-to-a-hacking-session\"]\n+ \"Downloading test results\": [\n+ [40, \"downloading-test-results\"]\n ],\n- \"SSH tunnels\": [\n- [47, \"ssh-tunnels\"]\n+ \"Web Based Job Submission\": [\n+ [40, \"web-based-job-submission\"]\n ],\n- \"lava-test-shell helper functions in a hack session\": [\n- [47, \"lava-test-shell-helper-functions-in-a-hack-session\"]\n+ \"XML-RPC Job Submission\": [\n+ [40, \"xml-rpc-job-submission\"]\n ],\n- \"Record text to the LAVA log\": [\n- [47, \"record-text-to-the-lava-log\"]\n+ \"Explaining the first job in detail\": [\n+ [37, \"explaining-the-first-job-in-detail\"]\n ],\n- \"Stopping a Hacking Session\": [\n- [47, \"stopping-a-hacking-session\"]\n+ \"Top level elements of a test job\": [\n+ [37, \"top-level-elements-of-a-test-job\"]\n ],\n- \"Hacking Session timeouts\": [\n- [47, \"hacking-session-timeouts\"]\n+ \"Actions within the test job\": [\n+ [37, \"actions-within-the-test-job\"]\n ],\n- \"Continuing a Hacking Session\": [\n- [47, \"continuing-a-hacking-session\"]\n+ \"Deploy action for QEMU\": [\n+ [37, \"deploy-action-for-qemu\"]\n ],\n- \"Multiple hacking sessions\": [\n- [47, \"multiple-hacking-sessions\"]\n+ \"Example of deploy label substitution\": [\n+ [37, \"example-of-deploy-label-substitution\"]\n ],\n- \"Sharing a single device\": [\n- [47, \"sharing-a-single-device\"]\n+ \"Boot action for QEMU\": [\n+ [37, \"boot-action-for-qemu\"]\n ],\n- \"Separating users using virtual machines\": [\n- [47, \"separating-users-using-virtual-machines\"]\n+ \"Test action for QEMU\": [\n+ [37, \"test-action-for-qemu\"]\n ],\n \"Lava Dispatcher Design\": [\n [33, \"lava-dispatcher-design\"]\n ],\n \"Pipeline Architecture\": [\n [33, \"pipeline-architecture\"]\n ],\n@@ -7956,73 +7071,167 @@\n ],\n \"Creating a new template\": [\n [33, \"creating-a-new-template\"]\n ],\n \"Running lava-run directly\": [\n [33, \"running-lava-run-directly\"]\n ],\n- \"Explaining the first job in detail\": [\n- [37, \"explaining-the-first-job-in-detail\"]\n+ \"Glossary of terms\": [\n+ [44, \"glossary-of-terms\"]\n ],\n- \"Top level elements of a test job\": [\n- [37, \"top-level-elements-of-a-test-job\"]\n+ \"Dispatcher Action Reference\": [\n+ [32, \"dispatcher-action-reference\"]\n ],\n- \"Actions within the test job\": [\n- [37, \"actions-within-the-test-job\"]\n+ \"Deploy Actions\": [\n+ [32, \"deploy-actions\"]\n ],\n- \"Deploy action for QEMU\": [\n- [37, \"deploy-action-for-qemu\"]\n+ \"Boot Actions\": [\n+ [32, \"boot-actions\"]\n ],\n- \"Example of deploy label substitution\": [\n- [37, \"example-of-deploy-label-substitution\"]\n+ \"Test Actions\": [\n+ [32, \"test-actions\"]\n ],\n- \"Boot action for QEMU\": [\n- [37, \"boot-action-for-qemu\"]\n+ \"Other test job elements\": [\n+ [32, \"other-test-job-elements\"]\n ],\n- \"Test action for QEMU\": [\n- [37, \"test-action-for-qemu\"]\n+ \"reboot_to_fastboot\": [\n+ [32, \"reboot-to-fastboot\"]\n ],\n- \"First steps as a user\": [\n- [41, \"first-steps-as-a-user\"]\n+ \"Further Examples\": [\n+ [32, \"further-examples\"]\n ],\n- \"Logging In\": [\n- [41, \"logging-in\"]\n+ \"FVP\": [\n+ [43, \"fvp\"]\n ],\n- \"Local User Account\": [\n- [41, \"local-user-account\"]\n+ \"LAVA FVP Dispatcher Setup\": [\n+ [43, \"lava-fvp-dispatcher-setup\"]\n ],\n- \"Linaro lab users\": [\n- [41, \"linaro-lab-users\"]\n+ \"FVP Binaries\": [\n+ [43, \"fvp-binaries\"]\n ],\n- \"Authentication Tokens\": [\n- [41, \"authentication-tokens\"]\n+ \"Building FVP Docker Images\": [\n+ [43, \"building-fvp-docker-images\"]\n ],\n- \"Submitting your first job\": [\n- [40, \"submitting-your-first-job\"]\n+ \"Networking inside Models\": [\n+ [43, \"networking-inside-models\"]\n ],\n- \"Job Definition\": [\n- [40, \"job-definition\"]\n+ \"Reading from all model consoles\": [\n+ [43, \"reading-from-all-model-consoles\"]\n ],\n- \"Job Submission\": [\n- [40, \"job-submission\"]\n+ \"Providing gold standard images\": [\n+ [45, \"providing-gold-standard-images\"]\n ],\n- \"Test Definitions\": [\n- [40, \"test-definitions\"]\n+ \"Creating a gold standard image\": [\n+ [45, \"creating-a-gold-standard-image\"]\n ],\n- \"Viewing test results\": [\n- [40, \"viewing-test-results\"]\n+ \"Other gold standard components\": [\n+ [45, \"other-gold-standard-components\"]\n ],\n- \"Downloading test results\": [\n- [40, \"downloading-test-results\"]\n+ \"Functional testing of LAVA source code\": [\n+ [42, \"functional-testing-of-lava-source-code\"]\n ],\n- \"Web Based Job Submission\": [\n- [40, \"web-based-job-submission\"]\n+ \"Background\": [\n+ [42, \"background\"],\n+ [16, \"background\"]\n ],\n- \"XML-RPC Job Submission\": [\n- [40, \"xml-rpc-job-submission\"]\n+ \"meta-lava\": [\n+ [42, \"meta-lava\"]\n+ ],\n+ \"Future plans\": [\n+ [42, \"future-plans\"]\n+ ],\n+ \"Purpose of functional tests\": [\n+ [42, \"purpose-of-functional-tests\"]\n+ ],\n+ \"Requirements for a functional test job\": [\n+ [42, \"requirements-for-a-functional-test-job\"]\n+ ],\n+ \"Using the functional test frontend\": [\n+ [42, \"using-the-functional-test-frontend\"]\n+ ],\n+ \"Dedicated workers\": [\n+ [42, \"dedicated-workers\"]\n+ ],\n+ \"Writing YAML job submission files\": [\n+ [34, \"writing-yaml-job-submission-files\"]\n+ ],\n+ \"Basics of the YAML format\": [\n+ [34, \"basics-of-the-yaml-format\"]\n+ ],\n+ \"Basic structure for job submission\": [\n+ [34, \"basic-structure-for-job-submission\"]\n+ ],\n+ \"Sample JOB definition for a KVM\": [\n+ [34, \"sample-job-definition-for-a-kvm\"]\n+ ],\n+ \"Basic structure for device_type configuration\": [\n+ [34, \"basic-structure-for-device-type-configuration\"]\n+ ],\n+ \"Basic structure for device configuration\": [\n+ [34, \"basic-structure-for-device-configuration\"]\n+ ],\n+ \"Overriding values in device type, device dictionary and the job context\": [\n+ [34, \"overriding-values-in-device-type-device-dictionary-and-the-job-context\"]\n+ ],\n+ \"Example One\": [\n+ [34, \"example-one\"],\n+ [30, \"example-one\"]\n+ ],\n+ \"Example Two\": [\n+ [34, \"example-two\"],\n+ [30, \"example-two\"]\n+ ],\n+ \"Example Three\": [\n+ [34, \"example-three\"]\n+ ],\n+ \"Provide environment variables for the device in the job description\": [\n+ [34, \"provide-environment-variables-for-the-device-in-the-job-description\"]\n+ ],\n+ \"Pipeline Device Configuration\": [\n+ [34, \"pipeline-device-configuration\"]\n+ ],\n+ \"Viewing the Device Dictionary\": [\n+ [34, \"viewing-the-device-dictionary\"]\n+ ],\n+ \"On scheduler device detail page\": [\n+ [34, \"on-scheduler-device-detail-page\"]\n+ ],\n+ \"On Job Description Tab\": [\n+ [34, \"on-job-description-tab\"]\n+ ],\n+ \"As Admin\": [\n+ [34, \"as-admin\"]\n+ ],\n+ \"Dispatcher actions\": [\n+ [34, \"dispatcher-actions\"]\n+ ],\n+ \"Mapping deployment actions to the python code\": [\n+ [34, \"mapping-deployment-actions-to-the-python-code\"]\n+ ],\n+ \"Deployment actions\": [\n+ [34, \"deployment-actions\"]\n+ ],\n+ \"Supported methods\": [\n+ [34, \"supported-methods\"],\n+ [34, \"id1\"]\n+ ],\n+ \"Boot actions\": [\n+ [34, \"boot-actions\"]\n+ ],\n+ \"Test actions\": [\n+ [34, \"test-actions\"]\n+ ],\n+ \"Metadata\": [\n+ [34, \"metadata\"],\n+ [92, \"metadata\"],\n+ [101, \"metadata\"],\n+ [111, \"metadata\"]\n+ ],\n+ \"Submit actions\": [\n+ [34, \"submit-actions\"]\n ],\n \"Testing the design\": [\n [35, \"testing-the-design\"]\n ],\n \"Jinja2 templates\": [\n [35, \"jinja2-templates\"]\n ],\n@@ -8097,427 +7306,217 @@\n ],\n \"Use memory analysis tools\": [\n [35, \"use-memory-analysis-tools\"]\n ],\n \"Pre-boot deployment manipulation\": [\n [35, \"pre-boot-deployment-manipulation\"]\n ],\n- \"Advanced Use Cases\": [\n- [84, \"advanced-use-cases\"]\n- ],\n- \"LAVA review criteria\": [\n- [94, \"lava-review-criteria\"]\n- ],\n- \"Keep the dispatcher dumb\": [\n- [94, \"keep-the-dispatcher-dumb\"]\n- ],\n- \"Avoid defaults in dispatcher code\": [\n- [94, \"avoid-defaults-in-dispatcher-code\"]\n- ],\n- \"Let the test fail and diagnose later\": [\n- [94, \"let-the-test-fail-and-diagnose-later\"]\n- ],\n- \"Treat the deployment as a black box\": [\n- [94, \"treat-the-deployment-as-a-black-box\"]\n- ],\n- \"Only protect the essential components\": [\n- [94, \"only-protect-the-essential-components\"]\n- ],\n- \"Give the test writer enough rope\": [\n- [94, \"give-the-test-writer-enough-rope\"]\n- ],\n- \"Guidance\": [\n- [94, \"guidance\"]\n- ],\n- \"Administrator debugging\": [\n- [80, \"administrator-debugging\"]\n- ],\n- \"Debugging a LAVA instance\": [\n- [80, \"debugging-a-lava-instance\"]\n- ],\n- \"Components\": [\n- [80, \"components\"]\n- ],\n- \"Log files\": [\n- [80, \"log-files\"],\n- [97, \"log-files\"]\n- ],\n- \"Command line debugging\": [\n- [80, \"command-line-debugging\"]\n- ],\n- \"Configuration files\": [\n- [80, \"configuration-files\"]\n- ],\n- \"Check LAVA instance\": [\n- [80, \"check-lava-instance\"]\n- ],\n- \"Displaying current settings\": [\n- [80, \"displaying-current-settings\"]\n- ],\n- \"Django support in 1.11\": [\n- [80, \"django-support-in-1-11\"]\n- ],\n- \"Replacing VMGroups using Secondary Connections\": [\n- [87, \"replacing-vmgroups-using-secondary-connections\"]\n- ],\n- \"Structure of an example job for a mustang\": [\n- [87, \"structure-of-an-example-job-for-a-mustang\"]\n- ],\n- \"Notes\": [\n- [87, \"notes\"]\n- ],\n- \"Running operations inside the guest VM\": [\n- [87, \"running-operations-inside-the-guest-vm\"]\n- ],\n- \"Development process\": [\n- [88, \"development-process\"]\n- ],\n- \"Design meeting\": [\n- [88, \"design-meeting\"]\n- ],\n- \"Release process\": [\n- [88, \"release-process\"]\n- ],\n- \"Reporting Bugs\": [\n- [88, \"reporting-bugs\"]\n- ],\n- \"Pipeline Design\": [\n- [81, \"pipeline-design\"]\n- ],\n- \"Principles of the LAVA design\": [\n- [81, \"principles-of-the-lava-design\"]\n- ],\n- \"Test Writer aspects\": [\n- [81, \"test-writer-aspects\"]\n- ],\n- \"Administrator aspects\": [\n- [81, \"administrator-aspects\"]\n- ],\n- \"Publishing artifacts\": [\n- [90, \"publishing-artifacts\"]\n- ],\n- \"Linaro LAVA-lab\": [\n- [90, \"linaro-lava-lab\"]\n- ],\n- \"LAVA schema\": [\n- [82, \"lava-schema\"]\n- ],\n- \"Job Submission Schema\": [\n- [82, \"job-submission-schema\"]\n- ],\n- \"Schema elements\": [\n- [82, \"schema-elements\"]\n- ],\n- \"Comments\": [\n- [82, \"comments\"]\n- ],\n- \"Job Name\": [\n- [82, \"job-name\"]\n- ],\n- \"Device Type\": [\n- [82, \"device-type\"]\n- ],\n- \"Timeouts\": [\n- [82, \"timeouts\"],\n- [70, \"timeouts\"],\n- [106, \"timeouts\"]\n- ],\n- \"Priority\": [\n- [82, \"priority\"]\n- ],\n- \"Context\": [\n- [82, \"context\"],\n- [100, \"context\"]\n- ],\n- \"Protocols\": [\n- [82, \"protocols\"]\n- ],\n- \"Actions\": [\n- [82, \"actions\"],\n- [70, \"actions\"]\n- ],\n- \"Deploy Action\": [\n- [82, \"deploy-action\"]\n- ],\n- \"Boot Action\": [\n- [82, \"boot-action\"]\n- ],\n- \"Test Action\": [\n- [82, \"test-action\"]\n- ],\n- \"Writing jobs using Secondary Connections\": [\n- [86, \"writing-jobs-using-secondary-connections\"]\n- ],\n- \"Secure Shell connections (ssh)\": [\n- [86, \"secure-shell-connections-ssh\"]\n- ],\n- \"Delaying the start of a job using Multinode\": [\n- [86, \"delaying-the-start-of-a-job-using-multinode\"]\n- ],\n- \"Picking up the data in the guest role\": [\n- [86, \"picking-up-the-data-in-the-guest-role\"]\n- ],\n- \"Test definition for the host role\": [\n- [86, \"test-definition-for-the-host-role\"]\n- ],\n- \"Test definition for the guest role\": [\n- [86, \"test-definition-for-the-guest-role\"]\n- ],\n- \"Complete Multinode test definition\": [\n- [86, \"complete-multinode-test-definition\"]\n- ],\n- \"Setting up a LAVA instance\": [\n- [83, \"setting-up-a-lava-instance\"]\n- ],\n- \"Installing just lava-server\": [\n- [83, \"installing-just-lava-server\"]\n- ],\n- \"Installing the full lava set\": [\n- [83, \"installing-the-full-lava-set\"]\n- ],\n- \"Installing master without Recommends\": [\n- [83, \"installing-master-without-recommends\"]\n- ],\n- \"Installing lava-dispatcher\": [\n- [83, \"installing-lava-dispatcher\"]\n- ],\n- \"Configuring apache2 on a worker\": [\n- [83, \"configuring-apache2-on-a-worker\"]\n- ],\n- \"Adding workers to the master\": [\n- [83, \"adding-workers-to-the-master\"]\n- ],\n- \"Adding devices to a worker\": [\n- [83, \"adding-devices-to-a-worker\"]\n- ],\n- \"Correlating a test result with the source code\": [\n- [92, \"correlating-a-test-result-with-the-source-code\"]\n- ],\n- \"Problems within test suites\": [\n- [92, \"problems-within-test-suites\"]\n- ],\n- \"Avoid reliance on the total count\": [\n- [92, \"avoid-reliance-on-the-total-count\"]\n- ],\n- \"Control the test operations\": [\n- [92, \"control-the-test-operations\"]\n- ],\n- \"Control the output\": [\n- [92, \"control-the-output\"]\n- ],\n- \"Control the base system\": [\n- [92, \"control-the-base-system\"]\n- ],\n- \"Control the build system\": [\n- [92, \"control-the-build-system\"]\n- ],\n- \"Control the list of tests\": [\n- [92, \"control-the-list-of-tests\"]\n- ],\n- \"Distinguish between CI tests and functional tests\": [\n- [92, \"distinguish-between-ci-tests-and-functional-tests\"]\n- ],\n- \"Manage testing of complete software stacks\": [\n- [92, \"manage-testing-of-complete-software-stacks\"]\n- ],\n- \"Reproducing test jobs\": [\n- [92, \"reproducing-test-jobs\"]\n- ],\n- \"Introduction to Results in LAVA\": [\n- [93, \"introduction-to-results-in-lava\"]\n- ],\n- \"Accessing results\": [\n- [93, \"accessing-results\"]\n+ \"Enabling Secondary Media\": [\n+ [9, \"enabling-secondary-media\"]\n ],\n- \"Accessing specific test results\": [\n- [93, \"accessing-specific-test-results\"]\n+ \"Device configuration\": [\n+ [9, \"device-configuration\"],\n+ [0, \"device-configuration\"]\n ],\n- \"Test Suite\": [\n- [93, \"test-suite\"]\n+ \"Identifying secondary media\": [\n+ [9, \"identifying-secondary-media\"]\n ],\n- \"Test Set\": [\n- [93, \"test-set\"]\n+ \"Secondary media configuration\": [\n+ [9, \"secondary-media-configuration\"]\n ],\n- \"Test Case\": [\n- [93, \"test-case\"]\n+ \"Using Grub with SATA secondary media\": [\n+ [9, \"using-grub-with-sata-secondary-media\"]\n ],\n- \"Test Raise\": [\n- [93, \"test-raise\"]\n+ \"Device dictionary\": [\n+ [9, \"device-dictionary\"],\n+ [9, \"id3\"],\n+ [79, \"device-dictionary\"]\n ],\n- \"Accessing the test job logs from results\": [\n- [93, \"accessing-the-test-job-logs-from-results\"]\n+ \"Device template example\": [\n+ [9, \"device-template-example\"],\n+ [9, \"id4\"]\n ],\n- \"Multiple occurrences\": [\n- [93, \"multiple-occurrences\"]\n+ \"Dispatcher configuration\": [\n+ [9, \"dispatcher-configuration\"],\n+ [9, \"id5\"]\n ],\n- \"Accessing associated sections of test job logs\": [\n- [93, \"accessing-associated-sections-of-test-job-logs\"]\n+ \"Grub SATA Test Job submission\": [\n+ [9, \"grub-sata-test-job-submission\"]\n ],\n- \"Sample output for lava-test-case shell\": [\n- [93, \"sample-output-for-lava-test-case-name-shell\"]\n+ \"Using UBoot with USB secondary media\": [\n+ [9, \"using-uboot-with-usb-secondary-media\"]\n ],\n- \"Test Writer use cases\": [\n- [85, \"test-writer-use-cases\"]\n+ \"USB UBoot Test Job submission\": [\n+ [9, \"usb-uboot-test-job-submission\"]\n ],\n- \"Writing a LAVA job submission\": [\n- [85, \"writing-a-lava-job-submission\"]\n+ \"Building and manipulating images for your devices\": [\n+ [13, \"building-and-manipulating-images-for-your-devices\"]\n ],\n- \"General principles\": [\n- [85, \"general-principles\"]\n+ \"Basics of building an image\": [\n+ [13, \"basics-of-building-an-image\"]\n ],\n- \"API\": [\n- [85, \"api\"]\n+ \"Obtaining a kernel\": [\n+ [13, \"obtaining-a-kernel\"]\n ],\n- \"Validity checks\": [\n- [85, \"validity-checks\"]\n+ \"Obtaining a bootloader\": [\n+ [13, \"obtaining-a-bootloader\"]\n ],\n- \"Results\": [\n- [85, \"results\"]\n+ \"Inspecting existing images\": [\n+ [13, \"inspecting-existing-images\"]\n ],\n- \"Job submission data\": [\n- [85, \"job-submission-data\"]\n+ \"Tools to install and get to know\": [\n+ [13, \"tools-to-install-and-get-to-know\"]\n ],\n- \"Writing a new TestJob\": [\n- [85, \"writing-a-new-testjob\"]\n+ \"Concepts behind boot images\": [\n+ [13, \"concepts-behind-boot-images\"]\n ],\n- \"YAML syntax\": [\n- [85, \"yaml-syntax\"]\n+ \"Find the offset\": [\n+ [13, \"find-the-offset\"]\n ],\n- \"Common YAML errors\": [\n- [85, \"common-yaml-errors\"]\n+ \"Mounting partitions using loop and offset\": [\n+ [13, \"mounting-partitions-using-loop-and-offset\"]\n ],\n- \"Understanding available support\": [\n- [85, \"understanding-available-support\"]\n+ \"Creating new images\": [\n+ [13, \"creating-new-images\"]\n ],\n- \"Understanding a TestJob\": [\n- [85, \"understanding-a-testjob\"]\n+ \"Making a bootstrap rootfs usable\": [\n+ [13, \"making-a-bootstrap-rootfs-usable\"]\n ],\n- \"Submissions using advanced features\": [\n- [85, \"submissions-using-advanced-features\"]\n+ \"Other steps which may be required\": [\n+ [13, \"other-steps-which-may-be-required\"]\n ],\n- \"Templating\": [\n- [85, \"templating\"]\n+ \"Increasing the number of loop devices\": [\n+ [13, \"increasing-the-number-of-loop-devices\"]\n ],\n- \"Including YAML\": [\n- [85, \"including-yaml\"]\n+ \"Further information\": [\n+ [13, \"further-information\"],\n+ [77, \"further-information\"]\n ],\n- \"QEMU options\": [\n- [91, \"qemu-options\"]\n+ \"Advanced Installation Topics\": [\n+ [10, \"advanced-installation-topics\"]\n ],\n- \"Virtualization testing\": [\n- [91, \"virtualization-testing\"]\n+ \"Laptops\": [\n+ [10, \"laptops\"]\n ],\n- \"Emulation testing\": [\n- [91, \"emulation-testing\"]\n+ \"Virtual Machines\": [\n+ [10, \"virtual-machines\"]\n ],\n- \"Substitution support\": [\n- [91, \"substitution-support\"]\n+ \"Workload\": [\n+ [10, \"workload\"]\n ],\n- \"Mandatory support\": [\n- [91, \"mandatory-support\"]\n+ \"Localhost\": [\n+ [10, \"localhost\"]\n ],\n- \"Specific support\": [\n- [91, \"specific-support\"]\n+ \"Other infrastructure\": [\n+ [10, \"other-infrastructure\"]\n ],\n- \"Example command lines\": [\n- [91, \"example-command-lines\"]\n+ \"Remote power control\": [\n+ [10, \"remote-power-control\"]\n ],\n- \"How to override variables\": [\n- [91, \"how-to-override-variables\"]\n+ \"Serial console support\": [\n+ [10, \"serial-console-support\"]\n ],\n- \"How to specify QEMU environment options\": [\n- [91, \"how-to-specify-qemu-environment-options\"]\n+ \"Network switches\": [\n+ [10, \"network-switches\"]\n ],\n- \"Host architecture support\": [\n- [91, \"host-architecture-support\"]\n+ \"Power supply\": [\n+ [10, \"power-supply\"]\n ],\n- \"LAVA test storage\": [\n- [91, \"lava-test-storage\"]\n+ \"Fileserver\": [\n+ [10, \"fileserver\"]\n ],\n- \"HTTP proxies\": [\n- [89, \"http-proxies\"]\n+ \"Shelving and racks\": [\n+ [10, \"shelving-and-racks\"]\n ],\n- \"Using the HTTP proxy\": [\n- [89, \"using-the-http-proxy\"]\n+ \"Recommended Installation Types\": [\n+ [10, \"recommended-installation-types\"]\n ],\n- \"Using the HTTP cache\": [\n- [89, \"using-the-http-cache\"]\n+ \"Single instance\": [\n+ [10, \"single-instance\"]\n ],\n- \"Handling bots\": [\n- [89, \"handling-bots\"]\n+ \"Master with one or more remote workers\": [\n+ [10, \"master-with-one-or-more-remote-workers\"]\n ],\n- \"State machine\": [\n- [95, \"state-machine\"]\n+ \"Authentication and encryption\": [\n+ [10, \"authentication-and-encryption\"]\n ],\n- \"Devices\": [\n- [95, \"devices\"]\n+ \"Other installation notes\": [\n+ [10, \"other-installation-notes\"]\n ],\n- \"TestJobs\": [\n- [95, \"testjobs\"]\n+ \"LAVA server branding support\": [\n+ [10, \"lava-server-branding-support\"]\n ],\n- \"Scheduler\": [\n- [95, \"scheduler\"]\n+ \"Unattended upgrades\": [\n+ [10, \"unattended-upgrades\"]\n ],\n- \"Health-checks\": [\n- [95, \"health-checks\"]\n+ \"Example changes\": [\n+ [10, \"example-changes\"]\n ],\n- \"Test jobs\": [\n- [95, \"test-jobs\"]\n+ \"Configuring event notifications\": [\n+ [10, \"configuring-event-notifications\"]\n ],\n- \"Configuring user authentication\": [\n- [11, \"configuring-user-authentication\"]\n+ \"Events and network reliability\": [\n+ [10, \"events-and-network-reliability\"]\n ],\n- \"Using Lightweight Directory Access Protocol (LDAP)\": [\n- [11, \"using-lightweight-directory-access-protocol-ldap\"]\n+ \"PostgreSQL Port configuration\": [\n+ [10, \"postgresql-port-configuration\"]\n ],\n- \"Using external authentication provider supported by django-allauth\": [\n- [11, \"using-external-authentication-provider-supported-by-django-allauth\"]\n+ \"Configuring the LAVA UI\": [\n+ [10, \"configuring-the-lava-ui\"]\n ],\n- \"Using Open ID Connect (OIDC) authentication providers\": [\n- [11, \"using-open-id-connect-oidc-authentication-providers\"]\n+ \"Gunicorn3 bind addresses\": [\n+ [10, \"gunicorn3-bind-addresses\"]\n ],\n- \"User permissions and authorization\": [\n- [12, \"user-permissions-and-authorization\"]\n+ \"Apache proxy configuration\": [\n+ [10, \"apache-proxy-configuration\"]\n ],\n- \"Global authorization\": [\n- [12, \"global-authorization\"]\n+ \"Apache headers\": [\n+ [10, \"apache-headers\"]\n ],\n- \"Per-object authorization\": [\n- [12, \"per-object-authorization\"]\n+ \"Banning badly behaved bots\": [\n+ [10, \"banning-badly-behaved-bots\"]\n ],\n- \"Permission inheritance\": [\n- [12, \"permission-inheritance\"]\n+ \"Tracking errors\": [\n+ [10, \"tracking-errors\"]\n ],\n- \"Anonymous users vs authenticated users\": [\n- [12, \"anonymous-users-vs-authenticated-users\"]\n+ \"Configuring default table length\": [\n+ [10, \"configuring-default-table-length\"]\n ],\n- \"Test job specifics on visibility\": [\n- [12, \"test-job-specifics-on-visibility\"]\n+ \"Configuring submitter full name\": [\n+ [10, \"configuring-submitter-full-name\"]\n ],\n- \"Setup\": [\n- [12, \"setup\"]\n+ \"Controlling the Django Admin Interface\": [\n+ [10, \"controlling-the-django-admin-interface\"]\n ],\n- \"Data migration\": [\n- [12, \"data-migration\"]\n+ \"Configuring log file display\": [\n+ [10, \"configuring-log-file-display\"]\n ],\n- \"Visibility decision trees\": [\n- [12, \"visibility-decision-trees\"]\n+ \"Extending the schema white list\": [\n+ [10, \"extending-the-schema-white-list\"]\n ],\n \"Bootloader/Firmware Testing and Recovery\": [\n [14, \"bootloader-firmware-testing-and-recovery\"]\n ],\n \"What is recovery mode?\": [\n [14, \"what-is-recovery-mode\"]\n ],\n \"Bootloader recovery criteria\": [\n [14, \"bootloader-recovery-criteria\"]\n ],\n+ \"Reliability\": [\n+ [14, \"reliability\"],\n+ [30, \"reliability\"]\n+ ],\n \"Uniqueness\": [\n [14, \"uniqueness\"]\n ],\n+ \"Scalability\": [\n+ [14, \"scalability\"],\n+ [30, \"scalability\"]\n+ ],\n \"Deployment\": [\n [14, \"deployment\"]\n ],\n \"Comparison of barriers to bootloader testing and recovery\": [\n [14, \"comparison-of-barriers-to-bootloader-testing-and-recovery\"]\n ],\n \"Defensive testing\": [\n@@ -8555,14 +7554,35 @@\n ],\n \"U-Boot boot action\": [\n [14, \"u-boot-boot-action\"]\n ],\n \"X15 GPEVM\": [\n [14, \"x15-gpevm\"]\n ],\n+ \"LAVA Software Community Project Code of Conduct\": [\n+ [15, \"lava-software-community-project-code-of-conduct\"]\n+ ],\n+ \"Be respectful\": [\n+ [15, \"be-respectful\"]\n+ ],\n+ \"Assume good faith\": [\n+ [15, \"assume-good-faith\"]\n+ ],\n+ \"Be collaborative\": [\n+ [15, \"be-collaborative\"]\n+ ],\n+ \"Try to be concise\": [\n+ [15, \"try-to-be-concise\"]\n+ ],\n+ \"Be open\": [\n+ [15, \"be-open\"]\n+ ],\n+ \"In case of problems\": [\n+ [15, \"in-case-of-problems\"]\n+ ],\n \"Boot Action Reference\": [\n [0, \"boot-action-reference\"]\n ],\n \"auto_login\": [\n [0, \"auto-login\"]\n ],\n \"login_prompt\": [\n@@ -8683,261 +7703,39 @@\n ],\n \"Deployment differences\": [\n [0, \"deployment-differences\"]\n ],\n \"u-boot\": [\n [0, \"u-boot\"]\n ],\n+ \"Example\": [\n+ [0, \"example\"],\n+ [22, \"example\"]\n+ ],\n \"uefi-menu\": [\n [0, \"uefi-menu\"]\n ],\n \"uuu\": [\n [0, \"uuu\"]\n ],\n \"Installation\": [\n [0, \"installation\"]\n ],\n- \"Device configuration\": [\n- [0, \"device-configuration\"],\n- [9, \"device-configuration\"]\n- ],\n \"Usage\": [\n [0, \"usage\"]\n ],\n \"Using built-in scripts\": [\n [0, \"using-built-in-scripts\"]\n ],\n \"Using commands\": [\n [0, \"using-commands\"]\n ],\n \"BCU Integration\": [\n [0, \"bcu-integration\"]\n ],\n- \"LAVA Software Community Project Code of Conduct\": [\n- [15, \"lava-software-community-project-code-of-conduct\"]\n- ],\n- \"Be respectful\": [\n- [15, \"be-respectful\"]\n- ],\n- \"Assume good faith\": [\n- [15, \"assume-good-faith\"]\n- ],\n- \"Be collaborative\": [\n- [15, \"be-collaborative\"]\n- ],\n- \"Try to be concise\": [\n- [15, \"try-to-be-concise\"]\n- ],\n- \"Be open\": [\n- [15, \"be-open\"]\n- ],\n- \"In case of problems\": [\n- [15, \"in-case-of-problems\"]\n- ],\n- \"Protocol Reference\": [\n- [3, \"protocol-reference\"]\n- ],\n- \"Using protocols from actions\": [\n- [3, \"using-protocols-from-actions\"]\n- ],\n- \"MultiNode Protocol\": [\n- [3, \"multinode-protocol\"]\n- ],\n- \"lava-start API call\": [\n- [3, \"lava-start-api-call\"]\n- ],\n- \"Passing data at startup\": [\n- [3, \"passing-data-at-startup\"]\n- ],\n- \"Managing flow using inline definitions\": [\n- [3, \"managing-flow-using-inline-definitions\"]\n- ],\n- \"Marking some roles as essential\": [\n- [3, \"marking-some-roles-as-essential\"]\n- ],\n- \"Protocol requests from actions\": [\n- [3, \"protocol-requests-from-actions\"],\n- [3, \"vland-protocol-requests\"],\n- [3, \"lxc-protocol-requests\"]\n- ],\n- \"VLANd protocol\": [\n- [3, \"vland-protocol\"]\n- ],\n- \"LXC protocol\": [\n- [3, \"lxc-protocol\"]\n- ],\n- \"Test Action Reference\": [\n- [5, \"test-action-reference\"]\n- ],\n- \"repository\": [\n- [5, \"repository\"]\n- ],\n- \"from\": [\n- [5, \"from\"]\n- ],\n- \"git\": [\n- [5, \"git\"]\n- ],\n- \"inline\": [\n- [5, \"inline\"]\n- ],\n- \"path\": [\n- [5, \"path\"]\n- ],\n- \"name\": [\n- [5, \"name\"],\n- [5, \"id2\"],\n- [5, \"id3\"],\n- [2, \"name\"]\n- ],\n- \"params\": [\n- [5, \"params\"]\n- ],\n- \"Skipping elements of test definitions\": [\n- [5, \"skipping-elements-of-test-definitions\"]\n- ],\n- \"deps\": [\n- [5, \"deps\"]\n- ],\n- \"keys\": [\n- [5, \"keys\"]\n- ],\n- \"sources\": [\n- [5, \"sources\"]\n- ],\n- \"steps\": [\n- [5, \"steps\"]\n- ],\n- \"all\": [\n- [5, \"all\"]\n- ],\n- \"Inline test definition example\": [\n- [5, \"inline-test-definition-example\"]\n- ],\n- \"Additional support\": [\n- [5, \"additional-support\"]\n- ],\n- \"Result checks\": [\n- [5, \"result-checks\"]\n- ],\n- \"TestSets\": [\n- [5, \"testsets\"]\n- ],\n- \"Interactive\": [\n- [5, \"interactive\"]\n- ],\n- \"echo\": [\n- [5, \"echo\"]\n- ],\n- \"script\": [\n- [5, \"script\"]\n- ],\n- \"Monitors\": [\n- [5, \"monitors\"]\n- ],\n- \"Creating Backups\": [\n- [7, \"creating-backups\"]\n- ],\n- \"Dependencies within backups\": [\n- [7, \"dependencies-within-backups\"]\n- ],\n- \"Issues with the base suite\": [\n- [7, \"issues-with-the-base-suite\"]\n- ],\n- \"What to include in your configuration management\": [\n- [7, \"what-to-include-in-your-configuration-management\"]\n- ],\n- \"What to include in your master backups\": [\n- [7, \"what-to-include-in-your-master-backups\"]\n- ],\n- \"What to include in your worker backups\": [\n- [7, \"what-to-include-in-your-worker-backups\"]\n- ],\n- \"Restoring a master from a backup\": [\n- [7, \"restoring-a-master-from-a-backup\"]\n- ],\n- \"Restoring a worker from backups\": [\n- [7, \"restoring-a-worker-from-backups\"]\n- ],\n- \"Command Action Reference\": [\n- [1, \"command-action-reference\"]\n- ],\n- \"Admin Setup\": [\n- [1, \"admin-setup\"]\n- ],\n- \"Deploying LXC devices\": [\n- [8, \"deploying-lxc-devices\"]\n- ],\n- \"Prerequisite\": [\n- [8, \"prerequisite\"]\n- ],\n- \"Android testing with LXC support\": [\n- [8, \"android-testing-with-lxc-support\"]\n- ],\n- \"Arbitrary external devices needing LXC support\": [\n- [8, \"arbitrary-external-devices-needing-lxc-support\"]\n- ],\n- \"USB attached devices\": [\n- [8, \"usb-attached-devices\"]\n- ],\n- \"Other related devices\": [\n- [8, \"other-related-devices\"]\n- ],\n- \"Persistent Containers\": [\n- [8, \"persistent-containers\"]\n- ],\n- \"Unprivileged containers as root\": [\n- [8, \"unprivileged-containers-as-root\"]\n- ],\n- \"Other resources\": [\n- [8, \"other-resources\"]\n- ],\n- \"Building and manipulating images for your devices\": [\n- [13, \"building-and-manipulating-images-for-your-devices\"]\n- ],\n- \"Basics of building an image\": [\n- [13, \"basics-of-building-an-image\"]\n- ],\n- \"Obtaining a kernel\": [\n- [13, \"obtaining-a-kernel\"]\n- ],\n- \"Obtaining a bootloader\": [\n- [13, \"obtaining-a-bootloader\"]\n- ],\n- \"Inspecting existing images\": [\n- [13, \"inspecting-existing-images\"]\n- ],\n- \"Tools to install and get to know\": [\n- [13, \"tools-to-install-and-get-to-know\"]\n- ],\n- \"Concepts behind boot images\": [\n- [13, \"concepts-behind-boot-images\"]\n- ],\n- \"Find the offset\": [\n- [13, \"find-the-offset\"]\n- ],\n- \"Mounting partitions using loop and offset\": [\n- [13, \"mounting-partitions-using-loop-and-offset\"]\n- ],\n- \"Creating new images\": [\n- [13, \"creating-new-images\"]\n- ],\n- \"Making a bootstrap rootfs usable\": [\n- [13, \"making-a-bootstrap-rootfs-usable\"]\n- ],\n- \"Other steps which may be required\": [\n- [13, \"other-steps-which-may-be-required\"]\n- ],\n- \"Increasing the number of loop devices\": [\n- [13, \"increasing-the-number-of-loop-devices\"]\n- ],\n- \"Further information\": [\n- [13, \"further-information\"],\n- [77, \"further-information\"]\n- ],\n \"Deploy Action Reference\": [\n [2, \"deploy-action-reference\"]\n ],\n \"Deploy action roles\": [\n [2, \"deploy-action-roles\"]\n ],\n \"Required parameters\": [\n@@ -8954,14 +7752,20 @@\n ],\n \"os\": [\n [2, \"os\"]\n ],\n \"image\": [\n [2, \"image\"]\n ],\n+ \"name\": [\n+ [2, \"name\"],\n+ [5, \"name\"],\n+ [5, \"id2\"],\n+ [5, \"id3\"]\n+ ],\n \"local\": [\n [2, \"local\"]\n ],\n \"to: download\": [\n [2, \"to-download\"]\n ],\n \"images\": [\n@@ -9241,14 +8045,125 @@\n ],\n \"to: uuu\": [\n [2, \"to-uuu\"]\n ],\n \"os *\": [\n [2, \"deploy-os\"]\n ],\n+ \"Timeout Reference\": [\n+ [6, \"timeout-reference\"]\n+ ],\n+ \"Job timeout\": [\n+ [6, \"job-timeout\"]\n+ ],\n+ \"Action timeout\": [\n+ [6, \"action-timeout\"]\n+ ],\n+ \"Individual action timeouts\": [\n+ [6, \"individual-action-timeouts\"]\n+ ],\n+ \"Connection timeout\": [\n+ [6, \"connection-timeout\"]\n+ ],\n+ \"Individual connection timeouts\": [\n+ [6, \"individual-connection-timeouts\"]\n+ ],\n+ \"Test Action Reference\": [\n+ [5, \"test-action-reference\"]\n+ ],\n+ \"repository\": [\n+ [5, \"repository\"]\n+ ],\n+ \"from\": [\n+ [5, \"from\"]\n+ ],\n+ \"git\": [\n+ [5, \"git\"]\n+ ],\n+ \"inline\": [\n+ [5, \"inline\"]\n+ ],\n+ \"path\": [\n+ [5, \"path\"]\n+ ],\n+ \"params\": [\n+ [5, \"params\"]\n+ ],\n+ \"Skipping elements of test definitions\": [\n+ [5, \"skipping-elements-of-test-definitions\"]\n+ ],\n+ \"deps\": [\n+ [5, \"deps\"]\n+ ],\n+ \"keys\": [\n+ [5, \"keys\"]\n+ ],\n+ \"sources\": [\n+ [5, \"sources\"]\n+ ],\n+ \"steps\": [\n+ [5, \"steps\"]\n+ ],\n+ \"all\": [\n+ [5, \"all\"]\n+ ],\n+ \"Inline test definition example\": [\n+ [5, \"inline-test-definition-example\"]\n+ ],\n+ \"Additional support\": [\n+ [5, \"additional-support\"]\n+ ],\n+ \"Result checks\": [\n+ [5, \"result-checks\"]\n+ ],\n+ \"TestSets\": [\n+ [5, \"testsets\"]\n+ ],\n+ \"Interactive\": [\n+ [5, \"interactive\"]\n+ ],\n+ \"echo\": [\n+ [5, \"echo\"]\n+ ],\n+ \"script\": [\n+ [5, \"script\"]\n+ ],\n+ \"Monitors\": [\n+ [5, \"monitors\"]\n+ ],\n+ \"Creating Backups\": [\n+ [7, \"creating-backups\"]\n+ ],\n+ \"Dependencies within backups\": [\n+ [7, \"dependencies-within-backups\"]\n+ ],\n+ \"Issues with the base suite\": [\n+ [7, \"issues-with-the-base-suite\"]\n+ ],\n+ \"What to include in your configuration management\": [\n+ [7, \"what-to-include-in-your-configuration-management\"]\n+ ],\n+ \"What to include in your master backups\": [\n+ [7, \"what-to-include-in-your-master-backups\"]\n+ ],\n+ \"What to include in your worker backups\": [\n+ [7, \"what-to-include-in-your-worker-backups\"]\n+ ],\n+ \"Restoring a master from a backup\": [\n+ [7, \"restoring-a-master-from-a-backup\"]\n+ ],\n+ \"Restoring a worker from backups\": [\n+ [7, \"restoring-a-worker-from-backups\"]\n+ ],\n+ \"Command Action Reference\": [\n+ [1, \"command-action-reference\"]\n+ ],\n+ \"Admin Setup\": [\n+ [1, \"admin-setup\"]\n+ ],\n \"Repeat\": [\n [4, \"repeat\"]\n ],\n \"Handling repeats\": [\n [4, \"handling-repeats\"]\n ],\n \"Repeating single actions\": [\n@@ -9259,828 +8174,1285 @@\n ],\n \"Retry interval on failure\": [\n [4, \"retry-interval-on-failure\"]\n ],\n \"Repeating blocks of actions\": [\n [4, \"repeating-blocks-of-actions\"]\n ],\n- \"Enabling Secondary Media\": [\n- [9, \"enabling-secondary-media\"]\n+ \"Protocol Reference\": [\n+ [3, \"protocol-reference\"]\n ],\n- \"Identifying secondary media\": [\n- [9, \"identifying-secondary-media\"]\n+ \"Using protocols from actions\": [\n+ [3, \"using-protocols-from-actions\"]\n ],\n- \"Secondary media configuration\": [\n- [9, \"secondary-media-configuration\"]\n+ \"MultiNode Protocol\": [\n+ [3, \"multinode-protocol\"]\n ],\n- \"Using Grub with SATA secondary media\": [\n- [9, \"using-grub-with-sata-secondary-media\"]\n+ \"lava-start API call\": [\n+ [3, \"lava-start-api-call\"]\n ],\n- \"Device dictionary\": [\n- [9, \"device-dictionary\"],\n- [9, \"id3\"],\n- [79, \"device-dictionary\"]\n+ \"Passing data at startup\": [\n+ [3, \"passing-data-at-startup\"]\n ],\n- \"Device template example\": [\n- [9, \"device-template-example\"],\n- [9, \"id4\"]\n+ \"Managing flow using inline definitions\": [\n+ [3, \"managing-flow-using-inline-definitions\"]\n ],\n- \"Dispatcher configuration\": [\n- [9, \"dispatcher-configuration\"],\n- [9, \"id5\"]\n+ \"Marking some roles as essential\": [\n+ [3, \"marking-some-roles-as-essential\"]\n ],\n- \"Grub SATA Test Job submission\": [\n- [9, \"grub-sata-test-job-submission\"]\n+ \"Protocol requests from actions\": [\n+ [3, \"protocol-requests-from-actions\"],\n+ [3, \"vland-protocol-requests\"],\n+ [3, \"lxc-protocol-requests\"]\n ],\n- \"Using UBoot with USB secondary media\": [\n- [9, \"using-uboot-with-usb-secondary-media\"]\n+ \"VLANd protocol\": [\n+ [3, \"vland-protocol\"]\n ],\n- \"USB UBoot Test Job submission\": [\n- [9, \"usb-uboot-test-job-submission\"]\n+ \"LXC protocol\": [\n+ [3, \"lxc-protocol\"]\n ],\n- \"Timeout Reference\": [\n- [6, \"timeout-reference\"]\n+ \"Protocol elements\": [\n+ [3, \"protocol-elements\"],\n+ [24, \"protocol-elements\"],\n+ [24, \"id2\"]\n ],\n- \"Job timeout\": [\n- [6, \"job-timeout\"]\n+ \"User permissions and authorization\": [\n+ [12, \"user-permissions-and-authorization\"]\n ],\n- \"Action timeout\": [\n- [6, \"action-timeout\"]\n+ \"Global authorization\": [\n+ [12, \"global-authorization\"]\n ],\n- \"Individual action timeouts\": [\n- [6, \"individual-action-timeouts\"]\n+ \"Per-object authorization\": [\n+ [12, \"per-object-authorization\"]\n ],\n- \"Connection timeout\": [\n- [6, \"connection-timeout\"]\n+ \"Permission inheritance\": [\n+ [12, \"permission-inheritance\"]\n ],\n- \"Individual connection timeouts\": [\n- [6, \"individual-connection-timeouts\"]\n+ \"Anonymous users vs authenticated users\": [\n+ [12, \"anonymous-users-vs-authenticated-users\"]\n ],\n- \"Advanced Installation Topics\": [\n- [10, \"advanced-installation-topics\"]\n+ \"Test job specifics on visibility\": [\n+ [12, \"test-job-specifics-on-visibility\"]\n ],\n- \"Laptops\": [\n- [10, \"laptops\"]\n+ \"Setup\": [\n+ [12, \"setup\"]\n ],\n- \"Virtual Machines\": [\n- [10, \"virtual-machines\"]\n+ \"Data migration\": [\n+ [12, \"data-migration\"]\n ],\n- \"Workload\": [\n- [10, \"workload\"]\n+ \"Visibility decision trees\": [\n+ [12, \"visibility-decision-trees\"]\n ],\n- \"Localhost\": [\n- [10, \"localhost\"]\n+ \"Deploying LXC devices\": [\n+ [8, \"deploying-lxc-devices\"]\n ],\n- \"Other infrastructure\": [\n- [10, \"other-infrastructure\"]\n+ \"Prerequisite\": [\n+ [8, \"prerequisite\"]\n ],\n- \"Remote power control\": [\n- [10, \"remote-power-control\"]\n+ \"Android testing with LXC support\": [\n+ [8, \"android-testing-with-lxc-support\"]\n ],\n- \"Serial console support\": [\n- [10, \"serial-console-support\"]\n+ \"Arbitrary external devices needing LXC support\": [\n+ [8, \"arbitrary-external-devices-needing-lxc-support\"]\n ],\n- \"Network switches\": [\n- [10, \"network-switches\"]\n+ \"USB attached devices\": [\n+ [8, \"usb-attached-devices\"]\n ],\n- \"Power supply\": [\n- [10, \"power-supply\"]\n+ \"Other related devices\": [\n+ [8, \"other-related-devices\"]\n ],\n- \"Fileserver\": [\n- [10, \"fileserver\"]\n+ \"Persistent Containers\": [\n+ [8, \"persistent-containers\"]\n ],\n- \"Shelving and racks\": [\n- [10, \"shelving-and-racks\"]\n+ \"Unprivileged containers as root\": [\n+ [8, \"unprivileged-containers-as-root\"]\n ],\n- \"Recommended Installation Types\": [\n- [10, \"recommended-installation-types\"]\n+ \"Other resources\": [\n+ [8, \"other-resources\"]\n ],\n- \"Single instance\": [\n- [10, \"single-instance\"]\n+ \"Configuring user authentication\": [\n+ [11, \"configuring-user-authentication\"]\n ],\n- \"Master with one or more remote workers\": [\n- [10, \"master-with-one-or-more-remote-workers\"]\n+ \"Using Lightweight Directory Access Protocol (LDAP)\": [\n+ [11, \"using-lightweight-directory-access-protocol-ldap\"]\n ],\n- \"Authentication and encryption\": [\n- [10, \"authentication-and-encryption\"]\n+ \"Using external authentication provider supported by django-allauth\": [\n+ [11, \"using-external-authentication-provider-supported-by-django-allauth\"]\n ],\n- \"Other installation notes\": [\n- [10, \"other-installation-notes\"]\n+ \"Using Open ID Connect (OIDC) authentication providers\": [\n+ [11, \"using-open-id-connect-oidc-authentication-providers\"]\n ],\n- \"LAVA server branding support\": [\n- [10, \"lava-server-branding-support\"]\n+ \"Publishing artifacts\": [\n+ [90, \"publishing-artifacts\"]\n ],\n- \"Unattended upgrades\": [\n- [10, \"unattended-upgrades\"]\n+ \"Linaro LAVA-lab\": [\n+ [90, \"linaro-lava-lab\"]\n ],\n- \"Example changes\": [\n- [10, \"example-changes\"]\n+ \"Pipeline Design\": [\n+ [81, \"pipeline-design\"]\n ],\n- \"Configuring event notifications\": [\n- [10, \"configuring-event-notifications\"]\n+ \"Principles of the LAVA design\": [\n+ [81, \"principles-of-the-lava-design\"]\n ],\n- \"Events and network reliability\": [\n- [10, \"events-and-network-reliability\"]\n+ \"Test Writer aspects\": [\n+ [81, \"test-writer-aspects\"]\n ],\n- \"PostgreSQL Port configuration\": [\n- [10, \"postgresql-port-configuration\"]\n+ \"Administrator aspects\": [\n+ [81, \"administrator-aspects\"]\n ],\n- \"Configuring the LAVA UI\": [\n- [10, \"configuring-the-lava-ui\"]\n+ \"LAVA review criteria\": [\n+ [94, \"lava-review-criteria\"]\n ],\n- \"Gunicorn3 bind addresses\": [\n- [10, \"gunicorn3-bind-addresses\"]\n+ \"Keep the dispatcher dumb\": [\n+ [94, \"keep-the-dispatcher-dumb\"]\n ],\n- \"Apache proxy configuration\": [\n- [10, \"apache-proxy-configuration\"]\n+ \"Avoid defaults in dispatcher code\": [\n+ [94, \"avoid-defaults-in-dispatcher-code\"]\n ],\n- \"Apache headers\": [\n- [10, \"apache-headers\"]\n+ \"Let the test fail and diagnose later\": [\n+ [94, \"let-the-test-fail-and-diagnose-later\"]\n ],\n- \"Banning badly behaved bots\": [\n- [10, \"banning-badly-behaved-bots\"]\n+ \"Treat the deployment as a black box\": [\n+ [94, \"treat-the-deployment-as-a-black-box\"]\n ],\n- \"Tracking errors\": [\n- [10, \"tracking-errors\"]\n+ \"Only protect the essential components\": [\n+ [94, \"only-protect-the-essential-components\"]\n ],\n- \"Configuring default table length\": [\n- [10, \"configuring-default-table-length\"]\n+ \"Give the test writer enough rope\": [\n+ [94, \"give-the-test-writer-enough-rope\"]\n ],\n- \"Configuring submitter full name\": [\n- [10, \"configuring-submitter-full-name\"]\n+ \"Guidance\": [\n+ [94, \"guidance\"]\n ],\n- \"Controlling the Django Admin Interface\": [\n- [10, \"controlling-the-django-admin-interface\"]\n+ \"LAVA schema\": [\n+ [82, \"lava-schema\"]\n ],\n- \"Configuring log file display\": [\n- [10, \"configuring-log-file-display\"]\n+ \"Job Submission Schema\": [\n+ [82, \"job-submission-schema\"]\n ],\n- \"Extending the schema white list\": [\n- [10, \"extending-the-schema-white-list\"]\n+ \"Schema elements\": [\n+ [82, \"schema-elements\"]\n ],\n- \"Job submission failure help\": [\n- [66, \"job-submission-failure-help\"]\n+ \"Comments\": [\n+ [82, \"comments\"]\n ],\n- \"Device type X is not available\": [\n- [66, \"device-type-x-is-not-available\"]\n+ \"Job Name\": [\n+ [82, \"job-name\"]\n ],\n- \"No devices of type X are currently available to user Y\": [\n- [66, \"no-devices-of-type-x-are-currently-available-to-user-y\"]\n+ \"Device Type\": [\n+ [82, \"device-type\"]\n ],\n- \"lavacli\": [\n- [69, \"lavacli\"]\n+ \"Timeouts\": [\n+ [82, \"timeouts\"],\n+ [106, \"timeouts\"],\n+ [70, \"timeouts\"]\n ],\n- \"Installing lavacli\": [\n- [69, \"installing-lavacli\"]\n+ \"Priority\": [\n+ [82, \"priority\"]\n ],\n- \"Using lavacli\": [\n- [69, \"using-lavacli\"],\n- [79, \"using-lavacli\"]\n+ \"Context\": [\n+ [82, \"context\"],\n+ [100, \"context\"]\n ],\n- \"MultiNode LAVA\": [\n- [73, \"multinode-lava\"]\n+ \"Protocols\": [\n+ [82, \"protocols\"]\n ],\n- \"Using LAVA MultiNode synchronization\": [\n- [73, \"using-lava-multinode-synchronization\"]\n+ \"Actions\": [\n+ [82, \"actions\"],\n+ [70, \"actions\"]\n ],\n- \"MultiNode Results\": [\n- [73, \"multinode-results\"]\n+ \"Deploy Action\": [\n+ [82, \"deploy-action\"]\n ],\n- \"LAVA MultiNode timeout behavior\": [\n- [73, \"lava-multinode-timeout-behavior\"]\n+ \"Boot Action\": [\n+ [82, \"boot-action\"]\n ],\n- \"Recommendations on timeouts for MultiNode\": [\n- [73, \"recommendations-on-timeouts-for-multinode\"]\n+ \"Test Action\": [\n+ [82, \"test-action\"]\n ],\n- \"Running a server on the device-under-test\": [\n- [73, \"running-a-server-on-the-device-under-test\"]\n+ \"Development process\": [\n+ [88, \"development-process\"]\n ],\n- \"Making use of third party servers\": [\n- [73, \"making-use-of-third-party-servers\"]\n+ \"Design meeting\": [\n+ [88, \"design-meeting\"]\n ],\n- \"Using wrapper scripts\": [\n- [73, \"using-wrapper-scripts\"]\n+ \"Release process\": [\n+ [88, \"release-process\"]\n ],\n- \"Continuous Integration\": [\n- [67, \"continuous-integration\"]\n+ \"Reporting Bugs\": [\n+ [88, \"reporting-bugs\"]\n ],\n- \"Summary of CI best practices\": [\n- [67, \"summary-of-ci-best-practices\"]\n+ \"HTTP proxies\": [\n+ [89, \"http-proxies\"]\n ],\n- \"LAVA and CI\": [\n- [67, \"lava-and-ci\"]\n+ \"Using the HTTP proxy\": [\n+ [89, \"using-the-http-proxy\"]\n ],\n- \"Automation & CI\": [\n- [67, \"automation-ci\"]\n+ \"Using the HTTP cache\": [\n+ [89, \"using-the-http-cache\"]\n ],\n- \"How does this affect testing with LAVA?\": [\n- [67, \"how-does-this-affect-testing-with-lava\"]\n+ \"Handling bots\": [\n+ [89, \"handling-bots\"]\n ],\n- \"Device type information in LAVA Scheduler\": [\n- [64, \"device-type-information-in-lava-scheduler\"]\n+ \"Administrator debugging\": [\n+ [80, \"administrator-debugging\"]\n ],\n- \"Static device-type information\": [\n- [64, \"static-device-type-information\"]\n+ \"Debugging a LAVA instance\": [\n+ [80, \"debugging-a-lava-instance\"]\n ],\n- \"Device type template\": [\n- [64, \"device-type-template\"]\n+ \"Components\": [\n+ [80, \"components\"]\n ],\n- \"Dynamic device-type information\": [\n- [64, \"dynamic-device-type-information\"]\n+ \"Log files\": [\n+ [80, \"log-files\"],\n+ [97, \"log-files\"]\n ],\n- \"Device-type metadata\": [\n- [64, \"device-type-metadata\"]\n+ \"Command line debugging\": [\n+ [80, \"command-line-debugging\"]\n ],\n- \"Health Job Summary\": [\n- [64, \"health-job-summary\"]\n+ \"Configuration files\": [\n+ [80, \"configuration-files\"]\n ],\n- \"Devices Overview\": [\n- [64, \"devices-overview\"]\n+ \"Check LAVA instance\": [\n+ [80, \"check-lava-instance\"]\n ],\n- \"Jobs for devices of this type\": [\n- [64, \"jobs-for-devices-of-this-type\"]\n+ \"Displaying current settings\": [\n+ [80, \"displaying-current-settings\"]\n ],\n- \"Writing a monitors test action\": [\n- [72, \"writing-a-monitors-test-action\"]\n+ \"Django support in 1.11\": [\n+ [80, \"django-support-in-1-11\"]\n ],\n- \"Restrictions\": [\n- [72, \"restrictions\"]\n+ \"Setting up a LAVA instance\": [\n+ [83, \"setting-up-a-lava-instance\"]\n ],\n- \"Example test monitors job\": [\n- [72, \"example-test-monitors-job\"]\n+ \"Installing just lava-server\": [\n+ [83, \"installing-just-lava-server\"]\n ],\n- \"Packaging lava-server for distributions\": [\n- [77, \"packaging-lava-server-for-distributions\"]\n+ \"Installing the full lava set\": [\n+ [83, \"installing-the-full-lava-set\"]\n ],\n- \"Apache distribution support\": [\n- [77, \"apache-distribution-support\"]\n+ \"Installing master without Recommends\": [\n+ [83, \"installing-master-without-recommends\"]\n ],\n- \"Instance name\": [\n- [77, \"instance-name\"]\n+ \"Installing lava-dispatcher\": [\n+ [83, \"installing-lava-dispatcher\"]\n ],\n- \"LAVA Components\": [\n- [77, \"lava-components\"]\n+ \"Configuring apache2 on a worker\": [\n+ [83, \"configuring-apache2-on-a-worker\"]\n ],\n- \"Package dependencies\": [\n- [77, \"package-dependencies\"]\n+ \"Adding workers to the master\": [\n+ [83, \"adding-workers-to-the-master\"]\n ],\n- \"Daemon renaming\": [\n- [77, \"daemon-renaming\"]\n+ \"Adding devices to a worker\": [\n+ [83, \"adding-devices-to-a-worker\"]\n ],\n- \"MultiNode API\": [\n- [74, \"multinode-api\"]\n+ \"Writing jobs using Secondary Connections\": [\n+ [86, \"writing-jobs-using-secondary-connections\"]\n ],\n- \"Guidance in using the API\": [\n- [74, \"guidance-in-using-the-api\"]\n+ \"Secure Shell connections (ssh)\": [\n+ [86, \"secure-shell-connections-ssh\"]\n ],\n- \"lava-self\": [\n- [74, \"lava-self\"]\n+ \"Delaying the start of a job using Multinode\": [\n+ [86, \"delaying-the-start-of-a-job-using-multinode\"]\n ],\n- \"Usage:\": [\n- [74, \"usage\"],\n- [74, \"id4\"],\n- [74, \"id5\"],\n- [74, \"id7\"],\n- [74, \"id8\"],\n- [74, \"id10\"],\n- [74, \"id12\"],\n- [74, \"id15\"]\n+ \"Picking up the data in the guest role\": [\n+ [86, \"picking-up-the-data-in-the-guest-role\"]\n ],\n- \"lava-role\": [\n- [74, \"lava-role\"]\n+ \"Test definition for the host role\": [\n+ [86, \"test-definition-for-the-host-role\"]\n ],\n- \"lava-group\": [\n- [74, \"lava-group\"]\n+ \"Test definition for the guest role\": [\n+ [86, \"test-definition-for-the-guest-role\"]\n ],\n- \"lava-send\": [\n- [74, \"lava-send\"]\n+ \"Complete Multinode test definition\": [\n+ [86, \"complete-multinode-test-definition\"]\n ],\n- \"lava-wait\": [\n- [74, \"lava-wait\"]\n+ \"State machine\": [\n+ [95, \"state-machine\"]\n ],\n- \"lava-wait-all\": [\n- [74, \"lava-wait-all\"]\n+ \"Devices\": [\n+ [95, \"devices\"]\n ],\n- \"lava-wait-all \": [\n- [74, \"lava-wait-all-message-id\"]\n+ \"TestJobs\": [\n+ [95, \"testjobs\"]\n ],\n- \"lava-wait-all \": [\n- [74, \"lava-wait-all-message-id-role\"]\n+ \"Scheduler\": [\n+ [95, \"scheduler\"]\n ],\n- \"lava-sync\": [\n- [74, \"lava-sync\"]\n+ \"Health-checks\": [\n+ [95, \"health-checks\"]\n ],\n- \"Example 1: Simple client-server MultiNode test\": [\n- [74, \"example-1-simple-client-server-multinode-test\"]\n+ \"Test jobs\": [\n+ [95, \"test-jobs\"]\n ],\n- \"Example 2: iperf client-server test\": [\n- [74, \"example-2-iperf-client-server-test\"]\n+ \"Advanced Use Cases\": [\n+ [84, \"advanced-use-cases\"]\n ],\n- \"Example 3: variable number of clients\": [\n- [74, \"example-3-variable-number-of-clients\"]\n+ \"Replacing VMGroups using Secondary Connections\": [\n+ [87, \"replacing-vmgroups-using-secondary-connections\"]\n ],\n- \"Example 4: peer-to-peer application\": [\n- [74, \"example-4-peer-to-peer-application\"]\n+ \"Structure of an example job for a mustang\": [\n+ [87, \"structure-of-an-example-job-for-a-mustang\"]\n ],\n- \"Using a flow table to plan the job\": [\n- [74, \"using-a-flow-table-to-plan-the-job\"]\n+ \"Notes\": [\n+ [87, \"notes\"]\n ],\n- \"Understanding the Pipeline - an administrator guide\": [\n- [79, \"understanding-the-pipeline-an-administrator-guide\"]\n+ \"Running operations inside the guest VM\": [\n+ [87, \"running-operations-inside-the-guest-vm\"]\n ],\n- \"Device type templates\": [\n- [79, \"device-type-templates\"]\n+ \"Correlating a test result with the source code\": [\n+ [92, \"correlating-a-test-result-with-the-source-code\"]\n ],\n- \"Checking your templates\": [\n- [79, \"checking-your-templates\"]\n+ \"Problems within test suites\": [\n+ [92, \"problems-within-test-suites\"]\n ],\n- \"Finding your way around the files\": [\n- [79, \"finding-your-way-around-the-files\"]\n+ \"Avoid reliance on the total count\": [\n+ [92, \"avoid-reliance-on-the-total-count\"]\n ],\n- \"Information sources\": [\n- [79, \"information-sources\"]\n+ \"Control the test operations\": [\n+ [92, \"control-the-test-operations\"]\n ],\n- \"The functional tests repository\": [\n- [79, \"the-functional-tests-repository\"]\n+ \"Control the output\": [\n+ [92, \"control-the-output\"]\n ],\n- \"The lava-server unit test support\": [\n- [79, \"the-lava-server-unit-test-support\"]\n+ \"Control the base system\": [\n+ [92, \"control-the-base-system\"]\n ],\n- \"Extra device configuration\": [\n- [79, \"extra-device-configuration\"]\n+ \"Control the build system\": [\n+ [92, \"control-the-build-system\"]\n ],\n- \"Providing permanent IPv4 addresses\": [\n- [79, \"providing-permanent-ipv4-addresses\"]\n+ \"Control the list of tests\": [\n+ [92, \"control-the-list-of-tests\"]\n ],\n- \"Providing temporary filesystem storage\": [\n- [79, \"providing-temporary-filesystem-storage\"]\n+ \"Distinguish between CI tests and functional tests\": [\n+ [92, \"distinguish-between-ci-tests-and-functional-tests\"]\n ],\n- \"Extra dispatcher configuration\": [\n- [79, \"extra-dispatcher-configuration\"]\n+ \"Manage testing of complete software stacks\": [\n+ [92, \"manage-testing-of-complete-software-stacks\"]\n ],\n- \"Per dispatcher environment settings\": [\n- [79, \"per-dispatcher-environment-settings\"]\n+ \"Reproducing test jobs\": [\n+ [92, \"reproducing-test-jobs\"]\n ],\n- \"Requirements for a LAVA device\": [\n- [79, \"requirements-for-a-lava-device\"]\n+ \"Introduction to Results in LAVA\": [\n+ [93, \"introduction-to-results-in-lava\"]\n ],\n- \"Adding support for a device of a known type\": [\n- [79, \"adding-support-for-a-device-of-a-known-type\"]\n+ \"Results in LAVA\": [\n+ [93, \"results-in-lava\"],\n+ [17, \"results-in-lava\"]\n ],\n- \"Obtaining configuration of a known device\": [\n- [79, \"obtaining-configuration-of-a-known-device\"]\n+ \"Accessing results\": [\n+ [93, \"accessing-results\"]\n ],\n- \"Creating a new device entry for a known device type\": [\n- [79, \"creating-a-new-device-entry-for-a-known-device-type\"]\n+ \"Accessing specific test results\": [\n+ [93, \"accessing-specific-test-results\"]\n ],\n- \"Creating a device dictionary for the device\": [\n- [79, \"creating-a-device-dictionary-for-the-device\"],\n- [70, \"creating-a-device-dictionary-for-the-device\"]\n+ \"Test Suite\": [\n+ [93, \"test-suite\"]\n ],\n- \"Based upon an existing device\": [\n- [79, \"based-upon-an-existing-device\"]\n+ \"Test Set\": [\n+ [93, \"test-set\"]\n ],\n- \"Viewing current device dictionary content\": [\n- [79, \"viewing-current-device-dictionary-content\"]\n+ \"Test Case\": [\n+ [93, \"test-case\"]\n ],\n- \"Updating a device dictionary\": [\n- [79, \"updating-a-device-dictionary\"]\n+ \"Test Raise\": [\n+ [93, \"test-raise\"]\n ],\n- \"Using the command line\": [\n- [79, \"using-the-command-line\"]\n+ \"Accessing the test job logs from results\": [\n+ [93, \"accessing-the-test-job-logs-from-results\"]\n ],\n- \"Using XML-RPC\": [\n- [79, \"using-xml-rpc\"]\n+ \"Multiple occurrences\": [\n+ [93, \"multiple-occurrences\"]\n ],\n- \"PDUDaemon\": [\n- [78, \"pdudaemon\"]\n+ \"Accessing associated sections of test job logs\": [\n+ [93, \"accessing-associated-sections-of-test-job-logs\"]\n ],\n- \"Lava-Test Test Definition 1.0\": [\n- [68, \"lava-test-test-definition-1-0\"]\n+ \"Sample output for lava-test-case shell\": [\n+ [93, \"sample-output-for-lava-test-case-name-shell\"]\n ],\n- \"Quick start to Test Definition 1.0\": [\n- [68, \"quick-start-to-test-definition-1-0\"]\n+ \"Test Writer use cases\": [\n+ [85, \"test-writer-use-cases\"]\n ],\n- \"Versioned test definitions\": [\n- [68, \"versioned-test-definitions\"]\n+ \"Writing a LAVA job submission\": [\n+ [85, \"writing-a-lava-job-submission\"]\n ],\n- \"How a lava test shell is run\": [\n- [68, \"how-a-lava-test-shell-is-run\"]\n+ \"General principles\": [\n+ [85, \"general-principles\"]\n ],\n- \"Writing a test for lava-test-shell\": [\n- [68, \"writing-a-test-for-lava-test-shell\"]\n+ \"API\": [\n+ [85, \"api\"]\n ],\n- \"lava-test-case\": [\n- [68, \"lava-test-case\"]\n+ \"Validity checks\": [\n+ [85, \"validity-checks\"]\n ],\n- \"Specifying results directly\": [\n- [68, \"specifying-results-directly\"]\n+ \"Results\": [\n+ [85, \"results\"]\n ],\n- \"Using the exit status of a command\": [\n- [68, \"using-the-exit-status-of-a-command\"]\n+ \"Job submission data\": [\n+ [85, \"job-submission-data\"]\n ],\n- \"Using parameters in the job to update the definition\": [\n- [68, \"using-parameters-in-the-job-to-update-the-definition\"]\n+ \"Writing a new TestJob\": [\n+ [85, \"writing-a-new-testjob\"]\n ],\n- \"lava-background-process-start\": [\n- [68, \"lava-background-process-start\"]\n+ \"YAML syntax\": [\n+ [85, \"yaml-syntax\"]\n ],\n- \"lava-background-process-stop\": [\n- [68, \"lava-background-process-stop\"]\n+ \"Common YAML errors\": [\n+ [85, \"common-yaml-errors\"]\n ],\n- \"Handling test attachments\": [\n- [68, \"handling-test-attachments\"]\n+ \"Understanding available support\": [\n+ [85, \"understanding-available-support\"]\n ],\n- \"Deprecated elements\": [\n- [68, \"deprecated-elements\"]\n+ \"Understanding a TestJob\": [\n+ [85, \"understanding-a-testjob\"]\n ],\n- \"Handling Dependencies (Debian)\": [\n- [68, \"handling-dependencies-debian\"]\n+ \"Submissions using advanced features\": [\n+ [85, \"submissions-using-advanced-features\"]\n ],\n- \"Adding Git Repositories\": [\n- [68, \"adding-git-repositories\"]\n+ \"Templating\": [\n+ [85, \"templating\"]\n ],\n- \"git-repos\": [\n- [68, \"git-repos\"]\n+ \"Including YAML\": [\n+ [85, \"including-yaml\"]\n ],\n- \"Install Steps\": [\n- [68, \"install-steps\"]\n+ \"QEMU options\": [\n+ [91, \"qemu-options\"]\n ],\n- \"Parse patterns\": [\n- [68, \"parse-patterns\"]\n+ \"Virtualization testing\": [\n+ [91, \"virtualization-testing\"]\n ],\n- \"Migrating to LAVA V2\": [\n- [71, \"migrating-to-lava-v2\"]\n+ \"Emulation testing\": [\n+ [91, \"emulation-testing\"]\n ],\n- \"Basics\": [\n- [71, \"basics\"]\n+ \"Substitution support\": [\n+ [91, \"substitution-support\"]\n ],\n- \"Specific information and guides\": [\n- [71, \"specific-information-and-guides\"]\n+ \"Mandatory support\": [\n+ [91, \"mandatory-support\"]\n ],\n- \"Test Writers\": [\n- [71, \"test-writers\"]\n+ \"Specific support\": [\n+ [91, \"specific-support\"]\n ],\n- \"Administrators\": [\n- [71, \"administrators\"]\n+ \"Example command lines\": [\n+ [91, \"example-command-lines\"]\n ],\n- \"Understanding test job objectives\": [\n- [71, \"understanding-test-job-objectives\"]\n+ \"How to override variables\": [\n+ [91, \"how-to-override-variables\"]\n ],\n- \"Pipeline support\": [\n- [71, \"pipeline-support\"]\n+ \"How to specify QEMU environment options\": [\n+ [91, \"how-to-specify-qemu-environment-options\"]\n ],\n- \"Viewing the available support\": [\n- [71, \"viewing-the-available-support\"]\n+ \"Host architecture support\": [\n+ [91, \"host-architecture-support\"]\n ],\n- \"Deployments\": [\n- [71, \"deployments\"]\n+ \"LAVA test storage\": [\n+ [91, \"lava-test-storage\"]\n ],\n- \"Protocol support\": [\n- [71, \"protocol-support\"]\n+ \"LAVA Software Project Contribution - Introduction\": [\n+ [19, \"lava-software-project-contribution-introduction\"]\n ],\n- \"Naming conventions and LAVA architecture\": [\n- [75, \"naming-conventions-and-lava-architecture\"]\n+ \"Before you start\": [\n+ [19, \"before-you-start\"]\n ],\n- \"Worked example of migrating a known device\": [\n- [70, \"worked-example-of-migrating-a-known-device\"]\n+ \"Ways to contribute\": [\n+ [19, \"ways-to-contribute\"]\n ],\n- \"Writing a device configuration in YAML\": [\n- [70, \"writing-a-device-configuration-in-yaml\"]\n+ \"Documentation\": [\n+ [19, \"documentation\"]\n ],\n- \"Migrating a mustang\": [\n- [70, \"migrating-a-mustang\"]\n+ \"Issue Tracker\": [\n+ [19, \"issue-tracker\"]\n ],\n- \"Complete device YAML\": [\n- [70, \"complete-device-yaml\"]\n+ \"Bug Fixes and New Features\": [\n+ [19, \"bug-fixes-and-new-features\"]\n ],\n- \"Writing a job submission in YAML\": [\n- [70, \"writing-a-job-submission-in-yaml\"]\n+ \"Contributing to the functional testing\": [\n+ [19, \"contributing-to-the-functional-testing\"]\n ],\n- \"Migrating a job for the mustang\": [\n- [70, \"migrating-a-job-for-the-mustang\"]\n+ \"Mailing lists and IRC\": [\n+ [19, \"mailing-lists-and-irc\"]\n ],\n- \"Identifying the elements of the job\": [\n- [70, \"identifying-the-elements-of-the-job\"]\n+ \"Exporting data out of LAVA\": [\n+ [21, \"exporting-data-out-of-lava\"]\n ],\n- \"Test\": [\n- [70, \"test\"],\n- [100, \"test\"],\n- [98, \"test\"]\n+ \"REST API\": [\n+ [21, \"rest-api\"]\n ],\n- \"Complete YAML submission\": [\n- [70, \"complete-yaml-submission\"]\n+ \"v0.2\": [\n+ [21, \"v0-2\"]\n ],\n- \"Writing a device type template\": [\n- [70, \"writing-a-device-type-template\"]\n+ \"Extra actions\": [\n+ [21, \"extra-actions\"]\n ],\n- \"Starting a new device type template\": [\n- [70, \"starting-a-new-device-type-template\"]\n+ \"Filtering\": [\n+ [21, \"filtering\"]\n ],\n- \"Completed mustang template\": [\n- [70, \"completed-mustang-template\"]\n+ \"TestJob object\": [\n+ [21, \"testjob-object\"]\n ],\n- \"Testing the template and dictionary\": [\n- [70, \"testing-the-template-and-dictionary\"]\n+ \"DeviceType object\": [\n+ [21, \"devicetype-object\"]\n ],\n- \"Adapting the base commands to the device type\": [\n- [70, \"adapting-the-base-commands-to-the-device-type\"]\n+ \"Architecture object\": [\n+ [21, \"architecture-object\"]\n ],\n- \"Completing the migration\": [\n- [70, \"completing-the-migration\"]\n+ \"ProcessorFamily object\": [\n+ [21, \"processorfamily-object\"]\n ],\n- \"LAVA job failures, errors, comments and tags\": [\n- [65, \"lava-job-failures-errors-comments-and-tags\"]\n+ \"Alias object\": [\n+ [21, \"alias-object\"]\n ],\n- \"Dispatcher error or test failure\": [\n- [65, \"dispatcher-error-or-test-failure\"]\n+ \"Core object\": [\n+ [21, \"core-object\"]\n ],\n- \"Job failure tags\": [\n- [65, \"job-failure-tags\"]\n+ \"BitWidth object\": [\n+ [21, \"bitwidth-object\"]\n ],\n- \"Job failure comment\": [\n- [65, \"job-failure-comment\"]\n+ \"Device object\": [\n+ [21, \"device-object\"]\n ],\n- \"LAVA Failure messages\": [\n- [65, \"lava-failure-messages\"]\n+ \"Worker object\": [\n+ [21, \"worker-object\"]\n ],\n- \"Missing methods\": [\n- [65, \"missing-methods\"]\n+ \"Tag object\": [\n+ [21, \"tag-object\"]\n ],\n- \"Python traceback messages\": [\n- [65, \"python-traceback-messages\"]\n+ \"JobFailureTag object\": [\n+ [21, \"jobfailuretag-object\"]\n ],\n- \"Compatibility failures\": [\n- [65, \"compatibility-failures\"],\n- [97, \"compatibility-failures\"]\n+ \"User object\": [\n+ [21, \"user-object\"]\n ],\n- \"Commenting on or tagging a job failure\": [\n- [65, \"commenting-on-or-tagging-a-job-failure\"]\n+ \"Group object\": [\n+ [21, \"group-object\"]\n ],\n- \"Viewing reports of job failures\": [\n- [65, \"viewing-reports-of-job-failures\"]\n+ \"Nested filtering\": [\n+ [21, \"nested-filtering\"]\n ],\n- \"Unreported test failures\": [\n- [65, \"unreported-test-failures\"]\n+ \"Sorting\": [\n+ [21, \"sorting\"]\n ],\n- \"Other Topics\": [\n- [76, \"other-topics\"]\n+ \"Creating and modifying objects\": [\n+ [21, \"creating-and-modifying-objects\"]\n ],\n- \"Media limitations of test devices\": [\n- [96, \"media-limitations-of-test-devices\"]\n+ \"Submitting a test job\": [\n+ [21, \"submitting-a-test-job\"]\n ],\n- \"Primary media and primary bootloaders\": [\n- [96, \"primary-media-and-primary-bootloaders\"]\n+ \"Deprecated semi-REST API for retrieving results\": [\n+ [21, \"deprecated-semi-rest-api-for-retrieving-results\"]\n ],\n- \"Bootloader limitations\": [\n- [96, \"bootloader-limitations\"]\n+ \"Chunking test suite results\": [\n+ [21, \"chunking-test-suite-results\"]\n ],\n- \"Occasional debugging\": [\n- [96, \"occasional-debugging\"]\n+ \"XML-RPC\": [\n+ [21, \"xml-rpc\"]\n ],\n- \"Installer testing\": [\n- [96, \"installer-testing\"]\n+ \"User specified notifications\": [\n+ [21, \"user-specified-notifications\"]\n ],\n- \"Secondary media deployment of images\": [\n- [96, \"secondary-media-deployment-of-images\"]\n+ \"Example test job notification\": [\n+ [21, \"example-test-job-notification\"]\n ],\n- \"Principles and Requirements\": [\n- [96, \"principles-and-requirements\"]\n+ \"Event notifications\": [\n+ [21, \"event-notifications\"]\n ],\n- \"Test Writer steps\": [\n- [96, \"test-writer-steps\"]\n+ \"Example metadata\": [\n+ [21, \"example-metadata\"]\n ],\n- \"Deploy commands\": [\n- [96, \"deploy-commands\"]\n+ \"Event notification types\": [\n+ [21, \"event-notification-types\"]\n ],\n- \"Boot commands\": [\n- [96, \"boot-commands\"]\n+ \"Example device notification\": [\n+ [21, \"example-device-notification\"]\n ],\n- \"Standard test job for QEMU - Sid arm64\": [\n- [99, \"standard-test-job-for-qemu-sid-arm64\"]\n+ \"Example testjob notification\": [\n+ [21, \"example-testjob-notification\"]\n ],\n- \"QEMU with kernel and initramfs\": [\n- [99, \"qemu-with-kernel-and-initramfs\"]\n+ \"Example log event notification\": [\n+ [21, \"example-log-event-notification\"]\n ],\n- \"Job context\": [\n- [99, \"job-context\"]\n+ \"Example test event notification\": [\n+ [21, \"example-test-event-notification\"]\n ],\n- \"Deploying the kernel\": [\n- [99, \"deploying-the-kernel\"]\n+ \"Write your own event notification client\": [\n+ [21, \"write-your-own-event-notification-client\"]\n ],\n- \"Using tables in LAVA\": [\n- [103, \"using-tables-in-lava\"]\n+ \"Submit a job and wait on notifications\": [\n+ [21, \"submit-a-job-and-wait-on-notifications\"]\n ],\n- \"Table search support\": [\n- [103, \"table-search-support\"]\n+ \"Connections in device configuration\": [\n+ [16, \"connections-in-device-configuration\"]\n ],\n- \"Simple text search\": [\n- [103, \"simple-text-search\"]\n+ \"Connections in test jobs\": [\n+ [16, \"connections-in-test-jobs\"]\n ],\n- \"Custom table queries\": [\n- [103, \"custom-table-queries\"]\n+ \"Connections and namespaces\": [\n+ [16, \"connections-and-namespaces\"]\n ],\n- \"Exclusive table searches\": [\n- [103, \"exclusive-table-searches\"]\n+ \"Multiple serial port support\": [\n+ [16, \"multiple-serial-port-support\"]\n ],\n- \"Other filters\": [\n- [103, \"other-filters\"]\n+ \"Isolating kernel messages from test output\": [\n+ [16, \"isolating-kernel-messages-from-test-output\"]\n ],\n- \"Resetting a table\": [\n- [103, \"resetting-a-table\"]\n+ \"Changes needed in the test image\": [\n+ [16, \"changes-needed-in-the-test-image\"]\n ],\n- \"Unavailable entries\": [\n- [103, \"unavailable-entries\"]\n+ \"Adding extra serial ports to a test device\": [\n+ [16, \"adding-extra-serial-ports-to-a-test-device\"]\n ],\n- \"Standard test job for QEMU - Stretch amd64\": [\n- [100, \"standard-test-job-for-qemu-stretch-amd64\"]\n+ \"Configuring serial ports\": [\n+ [16, \"configuring-serial-ports\"]\n ],\n- \"arch\": [\n- [100, \"arch\"]\n+ \"Using multiple serial ports\": [\n+ [16, \"using-multiple-serial-ports\"]\n ],\n- \"netdevice\": [\n- [100, \"netdevice\"]\n+ \"Example job 1: Simple beaglebone-black job with a second serial port\": [\n+ [16, \"example-job-1-simple-beaglebone-black-job-with-a-second-serial-port\"]\n ],\n- \"Next steps\": [\n- [100, \"next-steps\"]\n+ \"Deploy and boot the device\": [\n+ [16, \"deploy-and-boot-the-device\"]\n ],\n- \"Standard test job for beaglebone-black\": [\n- [98, \"standard-test-job-for-beaglebone-black\"],\n- [98, \"standard-armmp-bbb\"]\n+ \"Create the connection to the second serial port\": [\n+ [16, \"create-the-connection-to-the-second-serial-port\"],\n+ [16, \"multiple-serial-ports-example2-boot-connection\"]\n ],\n- \"Standard test jobs for other devices\": [\n- [98, \"standard-test-jobs-for-other-devices\"]\n+ \"Tell the test shell to use the new connection\": [\n+ [16, \"tell-the-test-shell-to-use-the-new-connection\"],\n+ [16, \"multiple-serial-ports-example2-test-connection\"]\n ],\n- \"Features of a ramdisk test job\": [\n- [98, \"features-of-a-ramdisk-test-job\"]\n+ \"Example job 2: A more complicated setup including LXC\": [\n+ [16, \"example-job-2-a-more-complicated-setup-including-lxc\"]\n ],\n- \"Features of an NFS test job\": [\n- [98, \"features-of-an-nfs-test-job\"]\n+ \"Define the container\": [\n+ [16, \"define-the-container\"]\n ],\n- \"Specific options\": [\n- [98, \"specific-options\"]\n+ \"Deploy and boot the container\": [\n+ [16, \"deploy-and-boot-the-container\"]\n ],\n- \"Test definitions in version control\": [\n- [105, \"test-definitions-in-version-control\"]\n+ \"Use the container to deploy and boot the device\": [\n+ [16, \"use-the-container-to-deploy-and-boot-the-device\"]\n ],\n- \"Job definitions in version control\": [\n- [105, \"job-definitions-in-version-control\"]\n+ \"Limitations with multiple serial ports\": [\n+ [16, \"limitations-with-multiple-serial-ports\"]\n ],\n- \"Using specific branch of a test definition repository\": [\n- [105, \"using-specific-branch-of-a-test-definition-repository\"]\n+ \"Secondary Connection\": [\n+ [16, \"secondary-connection\"]\n ],\n- \"Using specific revisions of a test definition\": [\n- [105, \"using-specific-revisions-of-a-test-definition\"]\n+ \"Considerations with a secondary connection\": [\n+ [16, \"considerations-with-a-secondary-connection\"]\n ],\n- \"Shallow clones in GIT\": [\n- [105, \"shallow-clones-in-git\"]\n+ \"Connections and hacking sessions\": [\n+ [16, \"connections-and-hacking-sessions\"]\n ],\n- \"Removing git history\": [\n- [105, \"removing-git-history\"]\n+ \"Using secondary connections with VM groups\": [\n+ [16, \"using-secondary-connections-with-vm-groups\"]\n ],\n- \"Sharing the contents of test definitions\": [\n- [105, \"sharing-the-contents-of-test-definitions\"]\n+ \"Sequence\": [\n+ [16, \"sequence\"]\n ],\n- \"Test repository for functional tests in LAVA\": [\n- [105, \"test-repository-for-functional-tests-in-lava\"]\n+ \"Basic use cases\": [\n+ [16, \"basic-use-cases\"]\n ],\n- \"Using kernel messages in a test shell\": [\n- [105, \"using-kernel-messages-in-a-test-shell\"]\n+ \"Sample job definition for the VM job\": [\n+ [16, \"sample-job-definition-for-the-vm-job\"]\n ],\n- \"Syntax\": [\n- [105, \"syntax\"]\n+ \"Primary remote connection\": [\n+ [16, \"primary-remote-connection\"]\n ],\n- \"Login\": [\n- [105, \"login\"]\n+ \"Devices supporting Primary Remote Connections\": [\n+ [16, \"devices-supporting-primary-remote-connections\"]\n ],\n- \"stdout\": [\n- [105, \"stdout\"]\n+ \"SSH as the primary remote connection\": [\n+ [16, \"ssh-as-the-primary-remote-connection\"]\n ],\n- \"VLANd support in LAVA test jobs\": [\n- [108, \"vland-support-in-lava-test-jobs\"]\n+ \"Security\": [\n+ [16, \"security\"]\n ],\n- \"What is a VLAN?\": [\n- [108, \"what-is-a-vlan\"]\n+ \"Persistence\": [\n+ [16, \"persistence\"]\n ],\n- \"VLANd and LAVA\": [\n- [108, \"vland-and-lava\"]\n+ \"Disposable chroot deployments\": [\n+ [16, \"disposable-chroot-deployments\"]\n ],\n- \"VLANd test shell helpers\": [\n- [108, \"vland-test-shell-helpers\"]\n+ \"LAVA Software Community Project Contribution Guide\": [\n+ [18, \"lava-software-community-project-contribution-guide\"],\n+ [17, \"lava-software-community-project-contribution-guide\"]\n ],\n- \"lava-vland-self\": [\n- [108, \"lava-vland-self\"]\n+ \"About the Contribution Guidelines\": [\n+ [18, \"about-the-contribution-guidelines\"]\n ],\n- \"lava-vland-tags\": [\n- [108, \"lava-vland-tags\"]\n+ \"Conflicting priorities\": [\n+ [18, \"conflicting-priorities\"]\n ],\n- \"lava-vland-names\": [\n- [108, \"lava-vland-names\"]\n+ \"Pre-requisites to start with development\": [\n+ [18, \"pre-requisites-to-start-with-development\"]\n ],\n- \"Identifying interface names\": [\n- [108, \"vland-identify-interface-names\"]\n+ \"Other elements involved in LAVA development\": [\n+ [18, \"other-elements-involved-in-lava-development\"]\n ],\n- \"VLANd Restrictions\": [\n- [108, \"vland-restrictions\"]\n+ \"Updating online documentation\": [\n+ [18, \"updating-online-documentation\"]\n ],\n- \"VLANd Design goals and considerations\": [\n- [108, \"vland-design-goals-and-considerations\"]\n+ \"The LAVA contribution process\": [\n+ [18, \"the-lava-contribution-process\"]\n ],\n- \"LAVA and VLANd Device considerations\": [\n- [108, \"lava-and-vland-device-considerations\"]\n+ \"Creating a GitLab Account\": [\n+ [18, \"creating-a-gitlab-account\"]\n ],\n- \"Requirement for multiple interfaces\": [\n- [108, \"requirement-for-multiple-interfaces\"]\n+ \"Request GitLab Fork Permissions\": [\n+ [18, \"request-gitlab-fork-permissions\"]\n ],\n- \"LAVA and locked switch/port combinations\": [\n- [108, \"lava-and-locked-switch-port-combinations\"]\n+ \"Fork the code\": [\n+ [18, \"fork-the-code\"]\n ],\n- \"VLANd and MultiNode\": [\n- [108, \"vland-and-multinode\"]\n+ \"Access to the CI runners\": [\n+ [18, \"access-to-the-ci-runners\"]\n ],\n- \"LAVA VLANd database support\": [\n- [108, \"lava-vland-database-support\"]\n+ \"Create a development branch\": [\n+ [18, \"create-a-development-branch\"]\n ],\n- \"Interfaces and link speeds\": [\n- [108, \"interfaces-and-link-speeds\"]\n+ \"Make, test and commit your changes\": [\n+ [18, \"make-test-and-commit-your-changes\"]\n ],\n- \"VLANd and interface tags in LAVA\": [\n- [108, \"vland-and-interface-tags-in-lava\"]\n+ \"Push your changes to your development branch\": [\n+ [18, \"push-your-changes-to-your-development-branch\"]\n ],\n- \"Assigning roles to a VLAN\": [\n- [108, \"assigning-roles-to-a-vlan\"]\n+ \"Submit a Merge Request (MR)\": [\n+ [18, \"submit-a-merge-request-mr\"]\n ],\n- \"Example vland protocol YAML\": [\n- [108, \"example-vland-protocol-yaml\"]\n+ \"MRs are reviewed (and rebased and reworked as needed)\": [\n+ [18, \"mrs-are-reviewed-and-rebased-and-reworked-as-needed\"]\n ],\n- \"Example YAML for the protocols\": [\n- [108, \"example-yaml-for-the-protocols\"]\n+ \"How changes get merged\": [\n+ [18, \"how-changes-get-merged\"]\n ],\n- \"Gold standard test jobs\": [\n- [101, \"gold-standard-test-jobs\"]\n+ \"Custom result handling\": [\n+ [20, \"custom-result-handling\"]\n ],\n- \"Writing MultiNode tests\": [\n- [110, \"writing-multinode-tests\"]\n+ \"Closing the CI loop\": [\n+ [20, \"closing-the-ci-loop\"]\n ],\n- \"Writing a MultiNode job file\": [\n- [110, \"writing-a-multinode-job-file\"]\n+ \"Important features of a CI loop\": [\n+ [20, \"important-features-of-a-ci-loop\"]\n ],\n- \"Defining MultiNode roles\": [\n- [110, \"defining-multinode-roles\"]\n+ \"Where LAVA fits into the testing\": [\n+ [20, \"where-lava-fits-into-the-testing\"]\n ],\n- \"Using the job context in MultiNode\": [\n- [110, \"using-the-job-context-in-multinode\"]\n+ \"Splitting the testing\": [\n+ [20, \"splitting-the-testing\"]\n ],\n- \"Using MultiNode roles\": [\n- [110, \"using-multinode-roles\"]\n+ \"Questions to ask\": [\n+ [20, \"questions-to-ask\"]\n ],\n- \"Running tests in MultiNode\": [\n- [110, \"running-tests-in-multinode\"]\n+ \"KernelCI.org\": [\n+ [20, \"kernelci-org\"]\n ],\n- \"Running different tests on different devices\": [\n- [110, \"running-different-tests-on-different-devices\"]\n+ \"SQUAD\": [\n+ [20, \"squad\"]\n ],\n- \"Allocating different device types to a group\": [\n- [110, \"allocating-different-device-types-to-a-group\"]\n+ \"Debugging LAVA test failures\": [\n+ [23, \"debugging-lava-test-failures\"]\n ],\n- \"Splitting deployment actions between roles\": [\n- [110, \"splitting-deployment-actions-between-roles\"]\n+ \"Read the logs\": [\n+ [23, \"index-1\"]\n ],\n- \"(Potentially) Splitting boot actions\": [\n- [110, \"potentially-splitting-boot-actions\"]\n+ \"Read the failure comment\": [\n+ [23, \"read-the-failure-comment\"]\n ],\n- \"Using MultiNode commands to synchronize devices\": [\n- [110, \"using-multinode-commands-to-synchronize-devices\"]\n+ \"Boot failure\": [\n+ [23, \"index-2\"]\n ],\n- \"Controlling synchronization from the test shell\": [\n- [110, \"controlling-synchronization-from-the-test-shell\"]\n+ \"Failure to find/mount the rootfs\": [\n+ [23, \"failure-to-find-mount-the-rootfs\"]\n ],\n- \"Controlling synchronization from the dispatcher\": [\n- [110, \"controlling-synchronization-from-the-dispatcher\"]\n+ \"Start simple\": [\n+ [23, \"start-simple\"]\n ],\n- \"Using the MultiNode API - further features\": [\n- [110, \"using-the-multinode-api-further-features\"]\n+ \"Change one thing at a time\": [\n+ [23, \"change-one-thing-at-a-time\"]\n ],\n- \"Using MultiNode commands to pass data between devices\": [\n- [110, \"using-multinode-commands-to-pass-data-between-devices\"]\n+ \"Make your tests and setup verbose\": [\n+ [23, \"make-your-tests-and-setup-verbose\"]\n ],\n- \"Helper tools in LAVA\": [\n- [110, \"helper-tools-in-lava\"]\n+ \"Provide debug data in all test jobs\": [\n+ [23, \"provide-debug-data-in-all-test-jobs\"]\n ],\n- \"Other MultiNode calls\": [\n- [110, \"other-multinode-calls\"]\n+ \"Common pitfalls\": [\n+ [23, \"common-pitfalls\"]\n ],\n- \"Writing jobs using the MultiNode protocol\": [\n- [110, \"writing-jobs-using-the-multinode-protocol\"]\n+ \"Handling locally built files\": [\n+ [23, \"handling-locally-built-files\"]\n ],\n- \"Writing jobs using MultiNode and LXC\": [\n- [110, \"writing-jobs-using-multinode-and-lxc\"]\n+ \"Avoid using shell operators in YAML lines\": [\n+ [23, \"avoid-using-shell-operators-in-yaml-lines\"]\n ],\n- \"Adding test actions\": [\n- [110, \"adding-test-actions\"]\n+ \"Test your result parsers\": [\n+ [23, \"test-your-result-parsers\"]\n+ ],\n+ \"Be obsessive about paths and scripts\": [\n+ [23, \"be-obsessive-about-paths-and-scripts\"]\n+ ],\n+ \"Debugging automation failures\": [\n+ [23, \"debugging-automation-failures\"]\n+ ],\n+ \"Infrastructure effects\": [\n+ [23, \"infrastructure-effects\"]\n+ ],\n+ \"Hidden assumptions in the manual operations\": [\n+ [23, \"hidden-assumptions-in-the-manual-operations\"]\n+ ],\n+ \"Differences in input speeds\": [\n+ [23, \"differences-in-input-speeds\"]\n+ ],\n+ \"Setting boot_character_delay\": [\n+ [23, \"setting-boot-character-delay\"]\n+ ],\n+ \"Setting test_character_delay\": [\n+ [23, \"setting-test-character-delay\"]\n+ ],\n+ \"Debugging MultiNode tests\": [\n+ [23, \"debugging-multinode-tests\"]\n+ ],\n+ \"Simplify your MultiNode test\": [\n+ [23, \"simplify-your-multinode-test\"]\n+ ],\n+ \"Check that your message ID labels are consistent\": [\n+ [23, \"check-that-your-message-id-labels-are-consistent\"]\n+ ],\n+ \"A failed test is not necessarily a bug in the test\": [\n+ [23, \"a-failed-test-is-not-necessarily-a-bug-in-the-test\"]\n+ ],\n+ \"Writing Tests\": [\n+ [26, \"writing-tests\"]\n+ ],\n+ \"Introduction to the LAVA Test Developer Guide\": [\n+ [26, \"introduction-to-the-lava-test-developer-guide\"]\n+ ],\n+ \"Guide Contents\": [\n+ [26, \"guide-contents\"]\n+ ],\n+ \"Assumptions at the start of this guide\": [\n+ [26, \"assumptions-at-the-start-of-this-guide\"]\n+ ],\n+ \"Checking device availability\": [\n+ [26, \"checking-device-availability\"]\n+ ],\n+ \"Finding an image to run on the device\": [\n+ [26, \"finding-an-image-to-run-on-the-device\"]\n+ ],\n+ \"Actions to be run for a LAVA test\": [\n+ [26, \"actions-to-be-run-for-a-lava-test\"]\n+ ],\n+ \"Example of Lava Test\": [\n+ [26, \"example-of-lava-test\"]\n+ ],\n+ \"Deploying a pre-built QEMU image\": [\n+ [26, \"deploying-a-pre-built-qemu-image\"]\n+ ],\n+ \"Using device tags\": [\n+ [26, \"using-device-tags\"]\n+ ],\n+ \"Using checksums\": [\n+ [26, \"using-checksums\"]\n+ ],\n+ \"Using Lava-Test Test Definition 1.0\": [\n+ [26, \"using-lava-test-test-definition-1-0\"]\n+ ],\n+ \"LAVA development\": [\n+ [27, \"lava-development\"]\n+ ],\n+ \"Run the unit tests\": [\n+ [27, \"run-the-unit-tests\"]\n+ ],\n+ \"Functional testing\": [\n+ [27, \"functional-testing\"]\n+ ],\n+ \"Make your changes\": [\n+ [27, \"make-your-changes\"]\n+ ],\n+ \"Source code formatting\": [\n+ [27, \"source-code-formatting\"]\n+ ],\n+ \"Add some unit tests\": [\n+ [27, \"add-some-unit-tests\"]\n+ ],\n+ \"lava_dispatcher\": [\n+ [27, \"lava-dispatcher\"],\n+ [27, \"id2\"]\n+ ],\n+ \"lava_scheduler_app\": [\n+ [27, \"lava-scheduler-app\"]\n+ ],\n+ \"Re-run the unit tests\": [\n+ [27, \"re-run-the-unit-tests\"]\n+ ],\n+ \"Testing local changes\": [\n+ [27, \"testing-local-changes\"]\n+ ],\n+ \"lava-server-doc\": [\n+ [27, \"lava-server-doc\"]\n+ ],\n+ \"Debugging lava-dispatcher with pdb, the Python debugger\": [\n+ [27, \"debugging-lava-dispatcher-with-pdb-the-python-debugger\"]\n+ ],\n+ \"Send your commits for review\": [\n+ [27, \"send-your-commits-for-review\"]\n+ ],\n+ \"Adding reviewers\": [\n+ [27, \"adding-reviewers\"]\n+ ],\n+ \"Handling your local branches\": [\n+ [27, \"handling-your-local-branches\"]\n+ ],\n+ \"Future proofing\": [\n+ [27, \"future-proofing\"]\n+ ],\n+ \"Use templates to generate device configuration\": [\n+ [27, \"use-templates-to-generate-device-configuration\"]\n+ ],\n+ \"Database migrations\": [\n+ [27, \"database-migrations\"]\n+ ],\n+ \"Python 3.x\": [\n+ [27, \"python-3-x\"]\n+ ],\n+ \"XML-RPC changes\": [\n+ [27, \"xml-rpc-changes\"]\n+ ],\n+ \"Instance settings\": [\n+ [27, \"instance-settings\"]\n+ ],\n+ \"Pylint3\": [\n+ [27, \"pylint3\"]\n+ ],\n+ \"pep8\": [\n+ [27, \"pep8\"]\n+ ],\n+ \"Unit-tests\": [\n+ [27, \"unit-tests\"]\n+ ],\n+ \"LAVA database model visualization\": [\n+ [27, \"lava-database-model-visualization\"]\n+ ],\n+ \"Developer access to django shell\": [\n+ [27, \"developer-access-to-django-shell\"]\n+ ],\n+ \"Guide to development within LAVA\": [\n+ [28, \"guide-to-development-within-lava\"]\n+ ],\n+ \"Dependencies required to run unit tests\": [\n+ [28, \"dependencies-required-to-run-unit-tests\"]\n+ ],\n+ \"Developing using device-type templates\": [\n+ [28, \"developing-using-device-type-templates\"]\n+ ],\n+ \"Device type templates as code\": [\n+ [28, \"device-type-templates-as-code\"]\n+ ],\n+ \"Testing new device-type templates\": [\n+ [28, \"testing-new-device-type-templates\"]\n+ ],\n+ \"Use version-control for device-type templates\": [\n+ [28, \"use-version-control-for-device-type-templates\"]\n+ ],\n+ \"Contribute device-type templates back upstream\": [\n+ [28, \"contribute-device-type-templates-back-upstream\"]\n+ ],\n+ \"Developer workflows\": [\n+ [28, \"developer-workflows\"]\n+ ],\n+ \"Code locations\": [\n+ [28, \"code-locations\"]\n+ ],\n+ \"Compatibility\": [\n+ [28, \"compatibility\"]\n+ ],\n+ \"Jinja2 support\": [\n+ [28, \"jinja2-support\"]\n+ ],\n+ \"Device dictionaries\": [\n+ [28, \"device-dictionaries\"]\n+ ],\n+ \"Dispatcher device configurations\": [\n+ [28, \"dispatcher-device-configurations\"]\n+ ],\n+ \"Contributing Upstream\": [\n+ [28, \"contributing-upstream\"]\n+ ],\n+ \"Planning\": [\n+ [28, \"planning\"]\n+ ],\n+ \"Report a Bug\": [\n+ [28, \"report-a-bug\"]\n+ ],\n+ \"Community contributions\": [\n+ [28, \"community-contributions\"]\n+ ],\n+ \"Contributing via your distribution\": [\n+ [28, \"contributing-via-your-distribution\"]\n+ ],\n+ \"Contributing via GitHub\": [\n+ [28, \"contributing-via-github\"]\n+ ],\n+ \"Permanency\": [\n+ [31, \"permanency\"]\n+ ],\n+ \"Device sub-types\": [\n+ [31, \"device-sub-types\"]\n+ ],\n+ \"Choosing a name for a device type\": [\n+ [31, \"choosing-a-name-for-a-device-type\"]\n+ ],\n+ \"Matching the template\": [\n+ [31, \"matching-the-template\"]\n+ ],\n+ \"Example device types\": [\n+ [31, \"example-device-types\"]\n+ ],\n+ \"Database elements for a device type\": [\n+ [31, \"database-elements-for-a-device-type\"]\n+ ],\n+ \"Descriptive fields\": [\n+ [31, \"descriptive-fields\"]\n+ ],\n+ \"Developing LAVA on Debian\": [\n+ [22, \"developing-lava-on-debian\"]\n+ ],\n+ \"Why Debian?\": [\n+ [22, \"why-debian\"]\n+ ],\n+ \"Options for other distributions\": [\n+ [22, \"options-for-other-distributions\"]\n+ ],\n+ \"Preparing for LAVA development\": [\n+ [22, \"preparing-for-lava-development\"]\n+ ],\n+ \"Developer package build\": [\n+ [22, \"developer-package-build\"]\n+ ],\n+ \"Changes from 2018.10 onwards\": [\n+ [22, \"changes-from-2018-10-onwards\"]\n+ ],\n+ \"Which branch to use for changes\": [\n+ [22, \"which-branch-to-use-for-changes\"]\n+ ],\n+ \"Local version strings\": [\n+ [22, \"local-version-strings\"]\n+ ],\n+ \"Distribution differences\": [\n+ [22, \"distribution-differences\"]\n+ ],\n+ \"Developer build versions\": [\n+ [22, \"developer-build-versions\"]\n+ ],\n+ \"Development using Python3\": [\n+ [22, \"development-using-python3\"]\n+ ],\n+ \"Quick fixes and testing\": [\n+ [22, \"quick-fixes-and-testing\"]\n+ ],\n+ \"Viewing changes\": [\n+ [22, \"viewing-changes\"]\n+ ],\n+ \"Migrating postgresql versions\": [\n+ [22, \"migrating-postgresql-versions\"]\n+ ],\n+ \"Determining the active cluster\": [\n+ [22, \"determining-the-active-cluster\"]\n+ ],\n+ \"Performing the migration\": [\n+ [22, \"performing-the-migration\"]\n+ ],\n+ \"Dependency Requirements\": [\n+ [22, \"dependency-requirements\"]\n+ ],\n+ \"Outputting the requirements.txt format\": [\n+ [22, \"outputting-the-requirements-txt-format\"]\n+ ],\n+ \"Outputting a list of binary package names\": [\n+ [22, \"outputting-a-list-of-binary-package-names\"]\n+ ],\n+ \"Adding packages needed for the unittests\": [\n+ [22, \"adding-packages-needed-for-the-unittests\"]\n+ ],\n+ \"Javascript handling\": [\n+ [22, \"javascript-handling\"]\n+ ],\n+ \"Javascript and security\": [\n+ [22, \"javascript-and-security\"]\n+ ],\n+ \"Javascript maintenance\": [\n+ [22, \"javascript-maintenance\"]\n+ ],\n+ \"Packaging changes\": [\n+ [22, \"packaging-changes\"]\n+ ],\n+ \"Building for other architectures\": [\n+ [22, \"building-for-other-architectures\"]\n+ ],\n+ \"Debugging Django issues\": [\n+ [22, \"debugging-django-issues\"]\n+ ],\n+ \"Installing\": [\n+ [22, \"installing\"]\n+ ],\n+ \"Performance overhead\": [\n+ [22, \"performance-overhead\"]\n+ ],\n+ \"Developing new classes for LAVA V2\": [\n+ [25, \"developing-new-classes-for-lava-v2\"]\n+ ],\n+ \"Test with simple scripts\": [\n+ [25, \"test-with-simple-scripts\"]\n+ ],\n+ \"Start with new classes\": [\n+ [25, \"start-with-new-classes\"]\n+ ],\n+ \"Add support files for unit tests\": [\n+ [25, \"add-support-files-for-unit-tests\"]\n+ ],\n+ \"Add unit tests\": [\n+ [25, \"add-unit-tests\"]\n+ ],\n+ \"Run all the unit tests\": [\n+ [25, \"run-all-the-unit-tests\"]\n+ ],\n+ \"Incorporate the test script into the classes\": [\n+ [25, \"incorporate-the-test-script-into-the-classes\"]\n+ ],\n+ \"Check the new classes\": [\n+ [25, \"check-the-new-classes\"]\n+ ],\n+ \"Startup achieved\": [\n+ [25, \"startup-achieved\"]\n+ ],\n+ \"Device Capabilities Support\": [\n+ [29, \"device-capabilities-support\"]\n+ ],\n+ \"Device owner abilities\": [\n+ [29, \"device-owner-abilities\"]\n+ ],\n+ \"Adding new device types\": [\n+ [30, \"adding-new-device-types\"]\n+ ],\n+ \"Device Requirements\": [\n+ [30, \"device-requirements\"]\n+ ],\n+ \"Reproducibility\": [\n+ [30, \"reproducibility\"]\n+ ],\n+ \"Scriptability\": [\n+ [30, \"scriptability\"]\n+ ],\n+ \"Power\": [\n+ [30, \"power\"]\n+ ],\n+ \"Reset\": [\n+ [30, \"reset\"]\n+ ],\n+ \"Networking\": [\n+ [30, \"networking\"]\n+ ],\n+ \"Serial console\": [\n+ [30, \"serial-console\"]\n+ ],\n+ \"Integration process\": [\n+ [30, \"integration-process\"]\n+ ],\n+ \"Find a similar existing device type\": [\n+ [30, \"find-a-similar-existing-device-type\"]\n+ ],\n+ \"Extend from an existing device type template\": [\n+ [30, \"extend-from-an-existing-device-type-template\"]\n+ ],\n+ \"Extend the template unit tests\": [\n+ [30, \"extend-the-template-unit-tests\"]\n+ ],\n+ \"First steps using LAVA\": [\n+ [17, \"first-steps-using-lava\"]\n+ ],\n+ \"CI with LAVA\": [\n+ [17, \"ci-with-lava\"]\n+ ],\n+ \"Writing tests for LAVA\": [\n+ [17, \"writing-tests-for-lava\"]\n+ ],\n+ \"LAVA administration guide\": [\n+ [17, \"lava-administration-guide\"]\n+ ],\n+ \"LAVA device integration guide\": [\n+ [17, \"lava-device-integration-guide\"]\n+ ],\n+ \"Migrating to V2\": [\n+ [17, \"migrating-to-v2\"]\n+ ],\n+ \"Context help\": [\n+ [17, \"context-help\"]\n+ ],\n+ \"Deploying test images using LXC\": [\n+ [24, \"deploying-test-images-using-lxc\"]\n+ ],\n+ \"Using LXC as Device Type\": [\n+ [24, \"using-lxc-as-device-type\"]\n+ ],\n+ \"Sample Job Definition\": [\n+ [24, \"sample-job-definition\"],\n+ [24, \"id3\"]\n+ ],\n+ \"Namespaces\": [\n+ [24, \"namespaces\"]\n+ ],\n+ \"Using the LXC protocol to support Android\": [\n+ [24, \"using-the-lxc-protocol-to-support-android\"]\n+ ],\n+ \"LAVA Android Naming Conventions\": [\n+ [24, \"lava-android-naming-conventions\"]\n+ ],\n+ \"Requirements and Limitations\": [\n+ [24, \"requirements-and-limitations\"]\n+ ],\n+ \"Feedback from the device\": [\n+ [24, \"feedback-from-the-device\"]\n+ ],\n+ \"Differences between LXC releases\": [\n+ [24, \"differences-between-lxc-releases\"]\n+ ],\n+ \"Media limitations of test devices\": [\n+ [96, \"media-limitations-of-test-devices\"]\n+ ],\n+ \"Primary media and primary bootloaders\": [\n+ [96, \"primary-media-and-primary-bootloaders\"]\n+ ],\n+ \"Bootloader limitations\": [\n+ [96, \"bootloader-limitations\"]\n+ ],\n+ \"Occasional debugging\": [\n+ [96, \"occasional-debugging\"]\n+ ],\n+ \"Installer testing\": [\n+ [96, \"installer-testing\"]\n+ ],\n+ \"Secondary media deployment of images\": [\n+ [96, \"secondary-media-deployment-of-images\"]\n+ ],\n+ \"Principles and Requirements\": [\n+ [96, \"principles-and-requirements\"]\n+ ],\n+ \"Test Writer steps\": [\n+ [96, \"test-writer-steps\"]\n+ ],\n+ \"Deploy commands\": [\n+ [96, \"deploy-commands\"]\n+ ],\n+ \"Boot commands\": [\n+ [96, \"boot-commands\"]\n+ ],\n+ \"Gold standard test jobs\": [\n+ [101, \"gold-standard-test-jobs\"]\n ],\n \"Writing a Lava-Test Test Definition 1.0\": [\n [111, \"writing-a-lava-test-test-definition-1-0\"]\n ],\n \"Writing a test definition YAML file\": [\n [111, \"writing-a-test-definition-yaml-file\"]\n ],\n@@ -10230,34 +9602,217 @@\n ],\n \"Problems with output\": [\n [111, \"problems-with-output\"]\n ],\n \"Control the number of test cases reported\": [\n [111, \"control-the-number-of-test-cases-reported\"]\n ],\n- \"User notifications in LAVA\": [\n- [107, \"user-notifications-in-lava\"]\n+ \"Using tables in LAVA\": [\n+ [103, \"using-tables-in-lava\"]\n ],\n- \"Notification recipients\": [\n- [107, \"notification-recipients\"]\n+ \"Table search support\": [\n+ [103, \"table-search-support\"]\n ],\n- \"Notification callbacks\": [\n- [107, \"notification-callbacks\"]\n+ \"Simple text search\": [\n+ [103, \"simple-text-search\"]\n ],\n- \"Debugging notification callbacks\": [\n- [107, \"debugging-notification-callbacks\"]\n+ \"Custom table queries\": [\n+ [103, \"custom-table-queries\"]\n ],\n- \"Using profile settings\": [\n- [107, \"using-profile-settings\"]\n+ \"Exclusive table searches\": [\n+ [103, \"exclusive-table-searches\"]\n ],\n- \"Direct listing of recipients\": [\n- [107, \"direct-listing-of-recipients\"]\n+ \"Other filters\": [\n+ [103, \"other-filters\"]\n ],\n- \"Result comparison in notifications\": [\n- [107, \"result-comparison-in-notifications\"]\n+ \"Resetting a table\": [\n+ [103, \"resetting-a-table\"]\n+ ],\n+ \"Unavailable entries\": [\n+ [103, \"unavailable-entries\"]\n+ ],\n+ \"Standard test job for beaglebone-black\": [\n+ [98, \"standard-test-job-for-beaglebone-black\"],\n+ [98, \"standard-armmp-bbb\"]\n+ ],\n+ \"Standard test jobs for other devices\": [\n+ [98, \"standard-test-jobs-for-other-devices\"]\n+ ],\n+ \"Features of a ramdisk test job\": [\n+ [98, \"features-of-a-ramdisk-test-job\"]\n+ ],\n+ \"Features of an NFS test job\": [\n+ [98, \"features-of-an-nfs-test-job\"]\n+ ],\n+ \"Specific options\": [\n+ [98, \"specific-options\"]\n+ ],\n+ \"Test\": [\n+ [98, \"test\"],\n+ [100, \"test\"],\n+ [70, \"test\"]\n+ ],\n+ \"VLANd support in LAVA test jobs\": [\n+ [108, \"vland-support-in-lava-test-jobs\"]\n+ ],\n+ \"What is a VLAN?\": [\n+ [108, \"what-is-a-vlan\"]\n+ ],\n+ \"VLANd and LAVA\": [\n+ [108, \"vland-and-lava\"]\n+ ],\n+ \"VLANd test shell helpers\": [\n+ [108, \"vland-test-shell-helpers\"]\n+ ],\n+ \"lava-vland-self\": [\n+ [108, \"lava-vland-self\"]\n+ ],\n+ \"lava-vland-tags\": [\n+ [108, \"lava-vland-tags\"]\n+ ],\n+ \"lava-vland-names\": [\n+ [108, \"lava-vland-names\"]\n+ ],\n+ \"Identifying interface names\": [\n+ [108, \"vland-identify-interface-names\"]\n+ ],\n+ \"VLANd Restrictions\": [\n+ [108, \"vland-restrictions\"]\n+ ],\n+ \"VLANd Design goals and considerations\": [\n+ [108, \"vland-design-goals-and-considerations\"]\n+ ],\n+ \"LAVA and VLANd Device considerations\": [\n+ [108, \"lava-and-vland-device-considerations\"]\n+ ],\n+ \"Requirement for multiple interfaces\": [\n+ [108, \"requirement-for-multiple-interfaces\"]\n+ ],\n+ \"LAVA and locked switch/port combinations\": [\n+ [108, \"lava-and-locked-switch-port-combinations\"]\n+ ],\n+ \"VLANd and MultiNode\": [\n+ [108, \"vland-and-multinode\"]\n+ ],\n+ \"LAVA VLANd database support\": [\n+ [108, \"lava-vland-database-support\"]\n+ ],\n+ \"Interfaces and link speeds\": [\n+ [108, \"interfaces-and-link-speeds\"]\n+ ],\n+ \"VLANd and interface tags in LAVA\": [\n+ [108, \"vland-and-interface-tags-in-lava\"]\n+ ],\n+ \"Assigning roles to a VLAN\": [\n+ [108, \"assigning-roles-to-a-vlan\"]\n+ ],\n+ \"Example vland protocol YAML\": [\n+ [108, \"example-vland-protocol-yaml\"]\n+ ],\n+ \"Example YAML for the protocols\": [\n+ [108, \"example-yaml-for-the-protocols\"]\n+ ],\n+ \"Administering VLANd support in LAVA\": [\n+ [109, \"administering-vland-support-in-lava\"]\n+ ],\n+ \"Mandatory Constraints\": [\n+ [109, \"mandatory-constraints\"]\n+ ],\n+ \"Single set of switches\": [\n+ [109, \"single-set-of-switches\"]\n+ ],\n+ \"Switches must have drivers in vland\": [\n+ [109, \"switches-must-have-drivers-in-vland\"]\n+ ],\n+ \"Accurate map of network topology\": [\n+ [109, \"accurate-map-of-network-topology\"]\n+ ],\n+ \"Identification of primary interfaces\": [\n+ [109, \"identify-primary-interfaces\"]\n+ ],\n+ \"Additional advice\": [\n+ [109, \"additional-advice\"]\n+ ],\n+ \"Example device dictionary\": [\n+ [109, \"example-device-dictionary\"]\n+ ],\n+ \"Viewing the network map\": [\n+ [109, \"viewing-the-network-map\"]\n+ ],\n+ \"Writing MultiNode tests\": [\n+ [110, \"writing-multinode-tests\"]\n+ ],\n+ \"Writing a MultiNode job file\": [\n+ [110, \"writing-a-multinode-job-file\"]\n+ ],\n+ \"Defining MultiNode roles\": [\n+ [110, \"defining-multinode-roles\"]\n+ ],\n+ \"Using the job context in MultiNode\": [\n+ [110, \"using-the-job-context-in-multinode\"]\n+ ],\n+ \"Using MultiNode roles\": [\n+ [110, \"using-multinode-roles\"]\n+ ],\n+ \"Running tests in MultiNode\": [\n+ [110, \"running-tests-in-multinode\"]\n+ ],\n+ \"Running different tests on different devices\": [\n+ [110, \"running-different-tests-on-different-devices\"]\n+ ],\n+ \"Allocating different device types to a group\": [\n+ [110, \"allocating-different-device-types-to-a-group\"]\n+ ],\n+ \"Splitting deployment actions between roles\": [\n+ [110, \"splitting-deployment-actions-between-roles\"]\n+ ],\n+ \"(Potentially) Splitting boot actions\": [\n+ [110, \"potentially-splitting-boot-actions\"]\n+ ],\n+ \"Using MultiNode commands to synchronize devices\": [\n+ [110, \"using-multinode-commands-to-synchronize-devices\"]\n+ ],\n+ \"Controlling synchronization from the test shell\": [\n+ [110, \"controlling-synchronization-from-the-test-shell\"]\n+ ],\n+ \"Controlling synchronization from the dispatcher\": [\n+ [110, \"controlling-synchronization-from-the-dispatcher\"]\n+ ],\n+ \"Using the MultiNode API - further features\": [\n+ [110, \"using-the-multinode-api-further-features\"]\n+ ],\n+ \"Using MultiNode commands to pass data between devices\": [\n+ [110, \"using-multinode-commands-to-pass-data-between-devices\"]\n+ ],\n+ \"Helper tools in LAVA\": [\n+ [110, \"helper-tools-in-lava\"]\n+ ],\n+ \"Other MultiNode calls\": [\n+ [110, \"other-multinode-calls\"]\n+ ],\n+ \"Writing jobs using the MultiNode protocol\": [\n+ [110, \"writing-jobs-using-the-multinode-protocol\"]\n+ ],\n+ \"Writing jobs using MultiNode and LXC\": [\n+ [110, \"writing-jobs-using-multinode-and-lxc\"]\n+ ],\n+ \"Adding test actions\": [\n+ [110, \"adding-test-actions\"]\n+ ],\n+ \"Standard test job for QEMU - Stretch amd64\": [\n+ [100, \"standard-test-job-for-qemu-stretch-amd64\"]\n+ ],\n+ \"arch\": [\n+ [100, \"arch\"]\n+ ],\n+ \"netdevice\": [\n+ [100, \"netdevice\"]\n+ ],\n+ \"Next steps\": [\n+ [100, \"next-steps\"]\n ],\n \"Simple Administration\": [\n [97, \"simple-administration\"]\n ],\n \"Outline\": [\n [97, \"outline\"]\n ],\n@@ -10305,14 +9860,18 @@\n ],\n \"Problems affecting test jobs\": [\n [97, \"problems-affecting-test-jobs\"]\n ],\n \"Power up failures\": [\n [97, \"power-up-failures\"]\n ],\n+ \"Compatibility failures\": [\n+ [97, \"compatibility-failures\"],\n+ [65, \"compatibility-failures\"]\n+ ],\n \"Checking for MultiNode issues\": [\n [97, \"checking-for-multinode-issues\"]\n ],\n \"Where to find debug information\": [\n [97, \"where-to-find-debug-information\"]\n ],\n \"Jinja2 Templates\": [\n@@ -10350,14 +9909,95 @@\n ],\n \"Owners and physical access\": [\n [97, \"owners-and-physical-access\"]\n ],\n \"Setting owners and physical access\": [\n [97, \"setting-owners-and-physical-access\"]\n ],\n+ \"User notifications in LAVA\": [\n+ [107, \"user-notifications-in-lava\"]\n+ ],\n+ \"Notification recipients\": [\n+ [107, \"notification-recipients\"]\n+ ],\n+ \"Notification callbacks\": [\n+ [107, \"notification-callbacks\"]\n+ ],\n+ \"Debugging notification callbacks\": [\n+ [107, \"debugging-notification-callbacks\"]\n+ ],\n+ \"Using profile settings\": [\n+ [107, \"using-profile-settings\"]\n+ ],\n+ \"Direct listing of recipients\": [\n+ [107, \"direct-listing-of-recipients\"]\n+ ],\n+ \"Result comparison in notifications\": [\n+ [107, \"result-comparison-in-notifications\"]\n+ ],\n+ \"Standard test job for QEMU - Sid arm64\": [\n+ [99, \"standard-test-job-for-qemu-sid-arm64\"]\n+ ],\n+ \"QEMU with kernel and initramfs\": [\n+ [99, \"qemu-with-kernel-and-initramfs\"]\n+ ],\n+ \"Job context\": [\n+ [99, \"job-context\"]\n+ ],\n+ \"Deploying the kernel\": [\n+ [99, \"deploying-the-kernel\"]\n+ ],\n+ \"Automation and Timeouts\": [\n+ [106, \"automation-and-timeouts\"]\n+ ],\n+ \"Why must timeouts exist?\": [\n+ [106, \"why-must-timeouts-exist\"]\n+ ],\n+ \"How long should an operation wait?\": [\n+ [106, \"how-long-should-an-operation-wait\"]\n+ ],\n+ \"Operations involving third party services\": [\n+ [106, \"operations-involving-third-party-services\"]\n+ ],\n+ \"Duration of actions\": [\n+ [106, \"duration-of-actions\"]\n+ ],\n+ \"Test shell timeouts\": [\n+ [106, \"test-shell-timeouts\"]\n+ ],\n+ \"Defining timeouts\": [\n+ [106, \"defining-timeouts\"]\n+ ],\n+ \"Job timeouts\": [\n+ [106, \"job-timeouts\"]\n+ ],\n+ \"Summary of the example job timeouts\": [\n+ [106, \"summary-of-the-example-job-timeouts\"]\n+ ],\n+ \"Default action timeouts\": [\n+ [106, \"default-action-timeouts\"]\n+ ],\n+ \"Default connection timeouts\": [\n+ [106, \"default-connection-timeouts\"]\n+ ],\n+ \"Inheriting timeouts from the device configuration\": [\n+ [106, \"inheriting-timeouts-from-the-device-configuration\"]\n+ ],\n+ \"Individual action overrides\": [\n+ [106, \"individual-action-overrides\"]\n+ ],\n+ \"Individual connection overrides\": [\n+ [106, \"individual-connection-overrides\"]\n+ ],\n+ \"Action block overrides\": [\n+ [106, \"action-block-overrides\"]\n+ ],\n+ \"Skipping a test shell timeout\": [\n+ [106, \"skipping-a-test-shell-timeout\"]\n+ ],\n \"Getting support\": [\n [102, \"getting-support\"]\n ],\n \"Guidelines\": [\n [102, \"guidelines\"]\n ],\n \"Mailing lists\": [\n@@ -10374,41 +10014,14 @@\n ],\n \"IRC\": [\n [102, \"irc\"]\n ],\n \"Pastebins\": [\n [102, \"pastebins\"]\n ],\n- \"Administering VLANd support in LAVA\": [\n- [109, \"administering-vland-support-in-lava\"]\n- ],\n- \"Mandatory Constraints\": [\n- [109, \"mandatory-constraints\"]\n- ],\n- \"Single set of switches\": [\n- [109, \"single-set-of-switches\"]\n- ],\n- \"Switches must have drivers in vland\": [\n- [109, \"switches-must-have-drivers-in-vland\"]\n- ],\n- \"Accurate map of network topology\": [\n- [109, \"accurate-map-of-network-topology\"]\n- ],\n- \"Identification of primary interfaces\": [\n- [109, \"identify-primary-interfaces\"]\n- ],\n- \"Additional advice\": [\n- [109, \"additional-advice\"]\n- ],\n- \"Example device dictionary\": [\n- [109, \"example-device-dictionary\"]\n- ],\n- \"Viewing the network map\": [\n- [109, \"viewing-the-network-map\"]\n- ],\n \"Using Jinja2 to generate LAVA test job submissions\": [\n [104, \"using-jinja2-to-generate-lava-test-job-submissions\"]\n ],\n \"Starting with templates\": [\n [104, \"starting-with-templates\"]\n ],\n \"Output\": [\n@@ -10425,61 +10038,448 @@\n ],\n \"Template best practice\": [\n [104, \"template-best-practice\"]\n ],\n \"Using templates for test jobs\": [\n [104, \"using-templates-for-test-jobs\"]\n ],\n- \"Automation and Timeouts\": [\n- [106, \"automation-and-timeouts\"]\n+ \"Test definitions in version control\": [\n+ [105, \"test-definitions-in-version-control\"]\n ],\n- \"Why must timeouts exist?\": [\n- [106, \"why-must-timeouts-exist\"]\n+ \"Job definitions in version control\": [\n+ [105, \"job-definitions-in-version-control\"]\n ],\n- \"How long should an operation wait?\": [\n- [106, \"how-long-should-an-operation-wait\"]\n+ \"Using specific branch of a test definition repository\": [\n+ [105, \"using-specific-branch-of-a-test-definition-repository\"]\n ],\n- \"Operations involving third party services\": [\n- [106, \"operations-involving-third-party-services\"]\n+ \"Using specific revisions of a test definition\": [\n+ [105, \"using-specific-revisions-of-a-test-definition\"]\n ],\n- \"Duration of actions\": [\n- [106, \"duration-of-actions\"]\n+ \"Shallow clones in GIT\": [\n+ [105, \"shallow-clones-in-git\"]\n ],\n- \"Test shell timeouts\": [\n- [106, \"test-shell-timeouts\"]\n+ \"Removing git history\": [\n+ [105, \"removing-git-history\"]\n ],\n- \"Defining timeouts\": [\n- [106, \"defining-timeouts\"]\n+ \"Sharing the contents of test definitions\": [\n+ [105, \"sharing-the-contents-of-test-definitions\"]\n ],\n- \"Job timeouts\": [\n- [106, \"job-timeouts\"]\n+ \"Test repository for functional tests in LAVA\": [\n+ [105, \"test-repository-for-functional-tests-in-lava\"]\n ],\n- \"Summary of the example job timeouts\": [\n- [106, \"summary-of-the-example-job-timeouts\"]\n+ \"Using kernel messages in a test shell\": [\n+ [105, \"using-kernel-messages-in-a-test-shell\"]\n ],\n- \"Default action timeouts\": [\n- [106, \"default-action-timeouts\"]\n+ \"Syntax\": [\n+ [105, \"syntax\"]\n ],\n- \"Default connection timeouts\": [\n- [106, \"default-connection-timeouts\"]\n+ \"Login\": [\n+ [105, \"login\"]\n ],\n- \"Inheriting timeouts from the device configuration\": [\n- [106, \"inheriting-timeouts-from-the-device-configuration\"]\n+ \"stdout\": [\n+ [105, \"stdout\"]\n ],\n- \"Individual action overrides\": [\n- [106, \"individual-action-overrides\"]\n+ \"Worked example of migrating a known device\": [\n+ [70, \"worked-example-of-migrating-a-known-device\"]\n ],\n- \"Individual connection overrides\": [\n- [106, \"individual-connection-overrides\"]\n+ \"Writing a device configuration in YAML\": [\n+ [70, \"writing-a-device-configuration-in-yaml\"]\n ],\n- \"Action block overrides\": [\n- [106, \"action-block-overrides\"]\n+ \"Migrating a mustang\": [\n+ [70, \"migrating-a-mustang\"]\n ],\n- \"Skipping a test shell timeout\": [\n- [106, \"skipping-a-test-shell-timeout\"]\n+ \"Complete device YAML\": [\n+ [70, \"complete-device-yaml\"]\n+ ],\n+ \"Writing a job submission in YAML\": [\n+ [70, \"writing-a-job-submission-in-yaml\"]\n+ ],\n+ \"Migrating a job for the mustang\": [\n+ [70, \"migrating-a-job-for-the-mustang\"]\n+ ],\n+ \"Identifying the elements of the job\": [\n+ [70, \"identifying-the-elements-of-the-job\"]\n+ ],\n+ \"Complete YAML submission\": [\n+ [70, \"complete-yaml-submission\"]\n+ ],\n+ \"Writing a device type template\": [\n+ [70, \"writing-a-device-type-template\"]\n+ ],\n+ \"Starting a new device type template\": [\n+ [70, \"starting-a-new-device-type-template\"]\n+ ],\n+ \"Completed mustang template\": [\n+ [70, \"completed-mustang-template\"]\n+ ],\n+ \"Creating a device dictionary for the device\": [\n+ [70, \"creating-a-device-dictionary-for-the-device\"],\n+ [79, \"creating-a-device-dictionary-for-the-device\"]\n+ ],\n+ \"Testing the template and dictionary\": [\n+ [70, \"testing-the-template-and-dictionary\"]\n+ ],\n+ \"Adapting the base commands to the device type\": [\n+ [70, \"adapting-the-base-commands-to-the-device-type\"]\n+ ],\n+ \"Completing the migration\": [\n+ [70, \"completing-the-migration\"]\n+ ],\n+ \"Packaging lava-server for distributions\": [\n+ [77, \"packaging-lava-server-for-distributions\"]\n+ ],\n+ \"Apache distribution support\": [\n+ [77, \"apache-distribution-support\"]\n+ ],\n+ \"Instance name\": [\n+ [77, \"instance-name\"]\n+ ],\n+ \"LAVA Components\": [\n+ [77, \"lava-components\"]\n+ ],\n+ \"Package dependencies\": [\n+ [77, \"package-dependencies\"]\n+ ],\n+ \"Daemon renaming\": [\n+ [77, \"daemon-renaming\"]\n+ ],\n+ \"MultiNode LAVA\": [\n+ [73, \"multinode-lava\"]\n+ ],\n+ \"Using LAVA MultiNode synchronization\": [\n+ [73, \"using-lava-multinode-synchronization\"]\n+ ],\n+ \"MultiNode Results\": [\n+ [73, \"multinode-results\"]\n+ ],\n+ \"LAVA MultiNode timeout behavior\": [\n+ [73, \"lava-multinode-timeout-behavior\"]\n+ ],\n+ \"Recommendations on timeouts for MultiNode\": [\n+ [73, \"recommendations-on-timeouts-for-multinode\"]\n+ ],\n+ \"Running a server on the device-under-test\": [\n+ [73, \"running-a-server-on-the-device-under-test\"]\n+ ],\n+ \"Making use of third party servers\": [\n+ [73, \"making-use-of-third-party-servers\"]\n+ ],\n+ \"Using wrapper scripts\": [\n+ [73, \"using-wrapper-scripts\"]\n+ ],\n+ \"Naming conventions and LAVA architecture\": [\n+ [75, \"naming-conventions-and-lava-architecture\"]\n+ ],\n+ \"Continuous Integration\": [\n+ [67, \"continuous-integration\"]\n+ ],\n+ \"Summary of CI best practices\": [\n+ [67, \"summary-of-ci-best-practices\"]\n+ ],\n+ \"LAVA and CI\": [\n+ [67, \"lava-and-ci\"]\n+ ],\n+ \"Automation & CI\": [\n+ [67, \"automation-ci\"]\n+ ],\n+ \"How does this affect testing with LAVA?\": [\n+ [67, \"how-does-this-affect-testing-with-lava\"]\n+ ],\n+ \"LAVA job failures, errors, comments and tags\": [\n+ [65, \"lava-job-failures-errors-comments-and-tags\"]\n+ ],\n+ \"Dispatcher error or test failure\": [\n+ [65, \"dispatcher-error-or-test-failure\"]\n+ ],\n+ \"Job failure tags\": [\n+ [65, \"job-failure-tags\"]\n+ ],\n+ \"Job failure comment\": [\n+ [65, \"job-failure-comment\"]\n+ ],\n+ \"LAVA Failure messages\": [\n+ [65, \"lava-failure-messages\"]\n+ ],\n+ \"Missing methods\": [\n+ [65, \"missing-methods\"]\n+ ],\n+ \"Python traceback messages\": [\n+ [65, \"python-traceback-messages\"]\n+ ],\n+ \"Commenting on or tagging a job failure\": [\n+ [65, \"commenting-on-or-tagging-a-job-failure\"]\n+ ],\n+ \"Viewing reports of job failures\": [\n+ [65, \"viewing-reports-of-job-failures\"]\n+ ],\n+ \"Unreported test failures\": [\n+ [65, \"unreported-test-failures\"]\n+ ],\n+ \"MultiNode API\": [\n+ [74, \"multinode-api\"]\n+ ],\n+ \"Guidance in using the API\": [\n+ [74, \"guidance-in-using-the-api\"]\n+ ],\n+ \"lava-self\": [\n+ [74, \"lava-self\"]\n+ ],\n+ \"Usage:\": [\n+ [74, \"usage\"],\n+ [74, \"id4\"],\n+ [74, \"id5\"],\n+ [74, \"id7\"],\n+ [74, \"id8\"],\n+ [74, \"id10\"],\n+ [74, \"id12\"],\n+ [74, \"id15\"]\n+ ],\n+ \"lava-role\": [\n+ [74, \"lava-role\"]\n+ ],\n+ \"lava-group\": [\n+ [74, \"lava-group\"]\n+ ],\n+ \"lava-send\": [\n+ [74, \"lava-send\"]\n+ ],\n+ \"lava-wait\": [\n+ [74, \"lava-wait\"]\n+ ],\n+ \"lava-wait-all\": [\n+ [74, \"lava-wait-all\"]\n+ ],\n+ \"lava-wait-all \": [\n+ [74, \"lava-wait-all-message-id\"]\n+ ],\n+ \"lava-wait-all \": [\n+ [74, \"lava-wait-all-message-id-role\"]\n+ ],\n+ \"lava-sync\": [\n+ [74, \"lava-sync\"]\n+ ],\n+ \"Example 1: Simple client-server MultiNode test\": [\n+ [74, \"example-1-simple-client-server-multinode-test\"]\n+ ],\n+ \"Example 2: iperf client-server test\": [\n+ [74, \"example-2-iperf-client-server-test\"]\n+ ],\n+ \"Example 3: variable number of clients\": [\n+ [74, \"example-3-variable-number-of-clients\"]\n+ ],\n+ \"Example 4: peer-to-peer application\": [\n+ [74, \"example-4-peer-to-peer-application\"]\n+ ],\n+ \"Using a flow table to plan the job\": [\n+ [74, \"using-a-flow-table-to-plan-the-job\"]\n+ ],\n+ \"Migrating to LAVA V2\": [\n+ [71, \"migrating-to-lava-v2\"]\n+ ],\n+ \"Basics\": [\n+ [71, \"basics\"]\n+ ],\n+ \"Specific information and guides\": [\n+ [71, \"specific-information-and-guides\"]\n+ ],\n+ \"Test Writers\": [\n+ [71, \"test-writers\"]\n+ ],\n+ \"Administrators\": [\n+ [71, \"administrators\"]\n+ ],\n+ \"Understanding test job objectives\": [\n+ [71, \"understanding-test-job-objectives\"]\n+ ],\n+ \"Pipeline support\": [\n+ [71, \"pipeline-support\"]\n+ ],\n+ \"Viewing the available support\": [\n+ [71, \"viewing-the-available-support\"]\n+ ],\n+ \"Deployments\": [\n+ [71, \"deployments\"]\n+ ],\n+ \"Protocol support\": [\n+ [71, \"protocol-support\"]\n+ ],\n+ \"Other Topics\": [\n+ [76, \"other-topics\"]\n+ ],\n+ \"Lava-Test Test Definition 1.0\": [\n+ [68, \"lava-test-test-definition-1-0\"]\n+ ],\n+ \"Quick start to Test Definition 1.0\": [\n+ [68, \"quick-start-to-test-definition-1-0\"]\n+ ],\n+ \"Versioned test definitions\": [\n+ [68, \"versioned-test-definitions\"]\n+ ],\n+ \"How a lava test shell is run\": [\n+ [68, \"how-a-lava-test-shell-is-run\"]\n+ ],\n+ \"Writing a test for lava-test-shell\": [\n+ [68, \"writing-a-test-for-lava-test-shell\"]\n+ ],\n+ \"lava-test-case\": [\n+ [68, \"lava-test-case\"]\n+ ],\n+ \"Specifying results directly\": [\n+ [68, \"specifying-results-directly\"]\n+ ],\n+ \"Using the exit status of a command\": [\n+ [68, \"using-the-exit-status-of-a-command\"]\n+ ],\n+ \"Using parameters in the job to update the definition\": [\n+ [68, \"using-parameters-in-the-job-to-update-the-definition\"]\n+ ],\n+ \"lava-background-process-start\": [\n+ [68, \"lava-background-process-start\"]\n+ ],\n+ \"lava-background-process-stop\": [\n+ [68, \"lava-background-process-stop\"]\n+ ],\n+ \"Handling test attachments\": [\n+ [68, \"handling-test-attachments\"]\n+ ],\n+ \"Deprecated elements\": [\n+ [68, \"deprecated-elements\"]\n+ ],\n+ \"Handling Dependencies (Debian)\": [\n+ [68, \"handling-dependencies-debian\"]\n+ ],\n+ \"Adding Git Repositories\": [\n+ [68, \"adding-git-repositories\"]\n+ ],\n+ \"git-repos\": [\n+ [68, \"git-repos\"]\n+ ],\n+ \"Install Steps\": [\n+ [68, \"install-steps\"]\n+ ],\n+ \"Parse patterns\": [\n+ [68, \"parse-patterns\"]\n+ ],\n+ \"lavacli\": [\n+ [69, \"lavacli\"]\n+ ],\n+ \"Installing lavacli\": [\n+ [69, \"installing-lavacli\"]\n+ ],\n+ \"Using lavacli\": [\n+ [69, \"using-lavacli\"],\n+ [79, \"using-lavacli\"]\n+ ],\n+ \"Writing a monitors test action\": [\n+ [72, \"writing-a-monitors-test-action\"]\n+ ],\n+ \"Restrictions\": [\n+ [72, \"restrictions\"]\n+ ],\n+ \"Example test monitors job\": [\n+ [72, \"example-test-monitors-job\"]\n+ ],\n+ \"PDUDaemon\": [\n+ [78, \"pdudaemon\"]\n+ ],\n+ \"Understanding the Pipeline - an administrator guide\": [\n+ [79, \"understanding-the-pipeline-an-administrator-guide\"]\n+ ],\n+ \"Device type templates\": [\n+ [79, \"device-type-templates\"]\n+ ],\n+ \"Checking your templates\": [\n+ [79, \"checking-your-templates\"]\n+ ],\n+ \"Finding your way around the files\": [\n+ [79, \"finding-your-way-around-the-files\"]\n+ ],\n+ \"Information sources\": [\n+ [79, \"information-sources\"]\n+ ],\n+ \"The functional tests repository\": [\n+ [79, \"the-functional-tests-repository\"]\n+ ],\n+ \"The lava-server unit test support\": [\n+ [79, \"the-lava-server-unit-test-support\"]\n+ ],\n+ \"Extra device configuration\": [\n+ [79, \"extra-device-configuration\"]\n+ ],\n+ \"Providing permanent IPv4 addresses\": [\n+ [79, \"providing-permanent-ipv4-addresses\"]\n+ ],\n+ \"Providing temporary filesystem storage\": [\n+ [79, \"providing-temporary-filesystem-storage\"]\n+ ],\n+ \"Extra dispatcher configuration\": [\n+ [79, \"extra-dispatcher-configuration\"]\n+ ],\n+ \"Per dispatcher environment settings\": [\n+ [79, \"per-dispatcher-environment-settings\"]\n+ ],\n+ \"Requirements for a LAVA device\": [\n+ [79, \"requirements-for-a-lava-device\"]\n+ ],\n+ \"Adding support for a device of a known type\": [\n+ [79, \"adding-support-for-a-device-of-a-known-type\"]\n+ ],\n+ \"Obtaining configuration of a known device\": [\n+ [79, \"obtaining-configuration-of-a-known-device\"]\n+ ],\n+ \"Creating a new device entry for a known device type\": [\n+ [79, \"creating-a-new-device-entry-for-a-known-device-type\"]\n+ ],\n+ \"Based upon an existing device\": [\n+ [79, \"based-upon-an-existing-device\"]\n+ ],\n+ \"Viewing current device dictionary content\": [\n+ [79, \"viewing-current-device-dictionary-content\"]\n+ ],\n+ \"Updating a device dictionary\": [\n+ [79, \"updating-a-device-dictionary\"]\n+ ],\n+ \"Using the command line\": [\n+ [79, \"using-the-command-line\"]\n+ ],\n+ \"Using XML-RPC\": [\n+ [79, \"using-xml-rpc\"]\n+ ],\n+ \"Device type information in LAVA Scheduler\": [\n+ [64, \"device-type-information-in-lava-scheduler\"]\n+ ],\n+ \"Static device-type information\": [\n+ [64, \"static-device-type-information\"]\n+ ],\n+ \"Device type template\": [\n+ [64, \"device-type-template\"]\n+ ],\n+ \"Dynamic device-type information\": [\n+ [64, \"dynamic-device-type-information\"]\n+ ],\n+ \"Device-type metadata\": [\n+ [64, \"device-type-metadata\"]\n+ ],\n+ \"Health Job Summary\": [\n+ [64, \"health-job-summary\"]\n+ ],\n+ \"Devices Overview\": [\n+ [64, \"devices-overview\"]\n+ ],\n+ \"Jobs for devices of this type\": [\n+ [64, \"jobs-for-devices-of-this-type\"]\n+ ],\n+ \"Job submission failure help\": [\n+ [66, \"job-submission-failure-help\"]\n+ ],\n+ \"Device type X is not available\": [\n+ [66, \"device-type-x-is-not-available\"]\n+ ],\n+ \"No devices of type X are currently available to user Y\": [\n+ [66, \"no-devices-of-type-x-are-currently-available-to-user-y\"]\n ]\n },\n \"indexentries\": {\n \"auto login\": [\n [0, \"index-0\"]\n ],\n \"auto login login commands\": [\n"}]}]}]}]}]}