boot

GET

The following schema covers the data that is available with a GET request.

{
    "$schema": "http://api.kernelci.org/json-schema/1.1/get_boot.json",
    "id": "http://api.kernelci.org/json-schema/1.1/get_boot.json",
    "title": "boot",
    "description": "A boot report object",
    "type": "object",
    "properties": {
        "_id": {
            "type": "object",
            "description": "The ID of ths object",
            "properties": {
                "$oid": {
                    "type": "string",
                    "description": "The actual ID value"
                }
            }
        },
        "created_on": {
            "type": "object",
            "description": "Creation date of the object",
            "properties": {
                "$date": {
                    "type": "number",
                    "description": "Milliseconds from epoch time",
                    "format": "utc-millisec"
                }
            }
        },
        "board": {
            "type": "string",
            "description": "The name of the board"
        },
        "board_instance": {
            "type": "string",
            "description": "The instance identifier for the board"
        },
        "job": {
            "type": "string",
            "description": "The job associated with this object"
        },
        "job_id": {
            "type": "object",
            "description": "The ID of the associated job",
            "properties": {
                "$oid": {
                    "type": "string",
                    "description": "The actual ID value"
                }
            }
        },
        "kernel": {
            "type": "string",
            "description": "The kernel associated with this object"
        },
        "defconfig": {
            "type": "string",
            "description": "The name of the defconfig as reported by the CI loop"
        },
        "defconfig_full": {
            "type": "string",
            "description": "The full name of the defconfig, can contain also config fragments information",
            "default": "The defconfig value"
        },
        "build_id": {
            "type": "object",
            "description": "The ID of the associated build report",
            "properties": {
                "$oid": {
                    "type": "string",
                    "description": "The actual ID value"
                }
            }
        },
        "arch" : {
            "type": "string",
            "description": "The architecture type of this board",
            "enum": ["arm", "arm64", "mips", "x86"]
        },
        "git_branch": {
            "type": "string",
            "description": "The branch used for boot testing"
        },
        "git_commit": {
            "type": "string",
            "description": "The git SHA of the commit used for boot testing"
        },
        "git_describe": {
            "type": "string",
            "description": "The name of the git describe command"
        },
        "lab_name": {
            "type": "string",
            "description": "The name of the lab that is doing the boot tests"
        },
        "time": {
            "type": "object",
            "description": "Time taken to boot the board",
            "properties": {
                "$date": {
                    "type": "number",
                    "description": "Milliseconds from epoch time",
                    "format": "utc-millisec"
                }
            }
        },
        "status": {
            "type": "string",
            "description": "The status of the boot report",
            "enum": ["FAIL", "OFFLINE", "PASS", "UNTRIED"]
        },
        "warnings": {
            "type": "number",
            "description": "Number of warnings in the boot phase"
        },
        "boot_log": {
            "type": "string",
            "description": "Name of the boot log text file"
        },
        "boot_log_html": {
            "type": "string",
            "description": "Name of the boot log HTML file"
        },
        "initrd_addr": {
            "type": "string",
            "description": "Initrd address used"
        },
        "initrd": {
            "type": "string",
            "description": "Initrd path"
        },
        "load_addr": {
            "type": "string",
            "description": "Load address used"
        },
        "kernel_image": {
            "type": "string",
            "description": "The kernel image used to boot"
        },
        "kernel_image_size": {
            "type": "integer",
            "description": "Size in bytes of the kernel image file"
        },
        "dtb_addr": {
            "type": "string",
            "description": "The DTB address used"
        },
        "dtb": {
            "type": "string",
            "description": "The DTB file or directory used"
        },
        "endian": {
            "type": "string",
            "description": "Endianness of the board"
        },
        "fastboot": {
            "type": "boolean",
            "description": "If it was a fastboot"
        },
        "fastboot_cmd": {
            "type": "string",
            "description": "The fastboot command used"
        },
        "boot_result_description": {
            "type": "string",
            "description": "The description of the boot result, useful to provide a cause of a failure"
        },
        "retries": {
            "type": "integer",
            "description": "The number of boot retries that have been performed",
            "default": 0
        },
        "version": {
            "type": "string",
            "description": "The version of this JSON schema: depends on the POST request"
        },
        "file_server_url": {
            "type": "string",
            "description": "The URL where boot log files, or other related files, are stored"
        },
        "file_server_resource": {
            "type": "string",
            "description": "The server path where the boot related files are stored"
        },
        "mach": {
            "type": "string",
            "description": "The machine (SoC) family"
        },
        "metadata": {
            "type": "object",
            "description": "A free form object that can contain different properties"
        },
        "uimage": {
            "type": "string",
            "description": "Path to the uImage used"
        },
        "uimage_addr": {
            "type": "string",
            "description": "uImage load address"
        },
        "qemu": {
            "type": "string",
            "description": "qemu binary used"
        },
        "qemu_command": {
            "type": "string",
            "description": "Full command line used to start qemu"
        },
        "filesystem": {
            "type": "string",
            "description": "Type of filesystem used"
        },
        "chainloader": {
            "type": "string",
            "description": "Description of the chainloader used, if any"
        },
        "bootloader": {
            "type": "string",
            "description": "The name of the bootloader used"
        },
        "bootloader_version": {
            "type": "string",
            "description": "The version of the bootloader used"
        },
        "boot_job_url": {
            "type": "string",
            "description": "The URL of the boot test executor; this should include the schema and authority parts of the URI"
        },
        "boot_job_path": {
            "type": "string",
            "description": "The path where the boot test job can be found; this should be the path part of the URI"
        },
        "boot_job_id": {
            "type": "string",
            "description": "The ID of the job that ran the boot test as reported by the boot test executor"
        },
        "compiler": {
            "type": "string",
            "description": "The name of the compiler used"
        },
        "compiler_version": {
            "type": "string",
            "description": "The version of the compiler used"
        },
        "compiler_version_ext": {
            "type": "string",
            "description": "Concatenation of compiler and compiler_version"
        },
        "compiler_version_full": {
            "type": "string",
            "description": "Full string of the compiler used (compiler, version, vendor numbering, ...)"
        }
    }
}

POST

The following schema defines the valid fields that a boot report document should have when sent to the server.

{
    "$schema": "http://api.kernelci.org/json-schema/1.1/post_boot.json",
    "id": "http://api.kernelci.org/json-schema/1.1/post_boot.json",
    "title": "boot",
    "description": "A boot POST request object",
    "type": "object",
    "properties": {
        "version": {
            "type": "string",
            "description": "The version number of this JSON schema",
            "enum": ["1.0", "1.1"]
        },
        "lab_name": {
            "type": "string",
            "description": "The name of the lab that is doing the boot tests"
        },
        "job": {
            "type": "string",
            "description": "The job associated with this boot report"
        },
        "kernel": {
            "type": "string",
            "description": "The kernel associated with this boot report"
        },
        "defconfig": {
            "type": "string",
            "description": "The name of the defconfig as reported by the CI loop"
        },
        "defconfig_full": {
            "type": "string",
            "description": "The full name of the defconfig with config fragments information",
            "default": "The defconfig value"
        },
        "board": {
            "type": "string",
            "description": "The name of the board: it must be a valid and recognized name"
        },
        "board_instance": {
            "type": "string",
            "description": "The instance identifier for the board"
        },
        "arch" : {
            "type": "string",
            "description": "The architecture type of this board",
            "enum": ["arm", "arm64", "mips", "x86"],
            "default": "arm"
        },
        "git_branch": {
            "type": "string",
            "description": "The branch used for boot testing"
        },
        "git_commit": {
            "type": "string",
            "description": "The git SHA of the commit used for boot testing"
        },
        "git_describe": {
            "type": "string",
            "description": "The name of the git describe command"
        },
        "boot_retries": {
            "type": "integer",
            "description": "The number of boot retries that have been performed",
            "default": 0
        },
        "boot_result": {
            "type": "string",
            "description": "The final status of the boot test",
            "enum": ["FAIL", "OFFLINE", "PASS", "UNTRIED"]
        },
        "boot_result_description": {
            "type": "string",
            "description": "The description of the boot result, useful to provide a cause of a failure"
        },
        "boot_log": {
            "type": "string",
            "description": "The name of the boot log file in text format"
        },
        "boot_log_html": {
            "type": "string",
            "description": "The name of the boot log file in HTML format"
        },
        "boot_time": {
            "type": "number",
            "description": "The number of seconds it took to boot the board: iternally it will be converted into milliseconds from the epoch time"
        },
        "boot_warnings": {
            "type": "integer",
            "description": "The number of warnings detected during the boot",
            "default": 0
        },
        "dtb": {
            "type": "string",
            "description": "The DTB file or directory used"
        },
        "dtb_addr": {
            "type": "string",
            "description": "The DTB address used"
        },
        "dtb_append": {
            "type": "boolean",
            "default": "false"
        },
        "endian": {
            "type": "string",
            "description": "Endianness of the board"
        },
        "fastboot": {
            "type": "boolean",
            "description": "If it was a fastboot",
            "default": "false"
        },
        "initrd_addr": {
            "type": "string",
            "description": "Initrd address used"
        },
        "initrd": {
            "type": "string",
            "description": "Initrd path"
        },
        "kernel_image": {
            "type": "string",
            "description": "The kernel image used to boot"
        },
        "loadaddr": {
            "type": "string",
            "description": "Load address used"
        },
        "email": {
            "type": "string",
            "description": "Optional email address to be notified if the boot report import fails"
        },
        "file_server_url": {
            "type": "string",
            "description": "The URL where boot log files, or other related files, are stored"
        },
        "file_server_resource": {
            "type": "string",
            "description": "The server path where the boot related files are stored"
        },
        "mach": {
            "type": "string",
            "description": "The machine (SoC) family"
        },
        "mach_alias": {
            "type": "string",
            "description": "The alternative machine (SoC) family; when defined it will override the 'mach' field"
        },
        "metadata": {
            "type": "object",
            "description": "A free form object that can contain different properties"
        },
        "uimage": {
            "type": "string",
            "description": "Path to the uImage used"
        },
        "uimage_addr": {
            "type": "string",
            "description": "uImage load address"
        },
        "qemu": {
            "type": "string",
            "description": "qemu binary used"
        },
        "qemu_command": {
            "type": "string",
            "description": "Full command line used to start qemu"
        },
        "filesystem": {
            "type": "string",
            "description": "Type of file system used"
        },
        "chainloader": {
            "type": "string",
            "description": "Description of the chainloader used, if any"
        },
        "bootloader": {
            "type": "string",
            "description": "The name of the bootloader used"
        },
        "bootloader_version": {
            "type": "string",
            "description": "The version of the bootloader used"
        },
        "boot_job_url": {
            "type": "string",
            "description": "The URL of the boot test executor; this should include the schema and authority parts of the URI"
        },
        "boot_job_path": {
            "type": "string",
            "description": "The path where the boot test job can be found; this should be the path part of the URI"
        },
        "boot_job_id": {
            "type": "string",
            "description": "The ID of the job that ran the boot test as reported by the boot test executor"
        }
    },
    "required": ["version", "lab_name", "job", "kernel", "defconfig", "board", "arch", "git_branch"]
}

Notes

  • defconfig_full: This field should be used to specify the full defconfig name if config fragments have been used. It should not contain the architecture (arch) value. If not defined, the defconfig value will be used. Its value should conform to: defconfig[+fragment[+fragment ... ]].
  • file_server_url, file_server_resource: These field should be used to provide the base URL and the actual path where boot related files (i.e. boot logs) are stored. file_server_url defines the base path, like http://storage.kernelci.org/, file_server_resource defines the path on the server, like kernel-ci/next/. When both resources are available, they should be joined together with the file names to form the actual URL. Implementation and default values are left to the user or the visualization tool using the data.
  • boot_job_path: The path of the boot test job executor URI should contain the job ID. The boot_job_id field is used for searching and visualization.