Continuous Delivery File Format

The continuous delivery file contains information describing the current virtual appliance metadata.

Note: Currently only JSON, XML or YAML formatted files are supported. See file structure examples in the “Examples” section bellow.

Schema

The contents must be wrapped inside an appdb field.

Fields Type Constraints Mandatory Defaults Accepted Values
version text maximum 20 chars yes
exspireson number yes 12 3, 6, 9, 12 (note: value represent months)
notes text maximum 1000 chars yes
url text any valid http(s) url yes
sha512 text any valid sha-512 hash value no note: if this value is provided, the system will compare it with the sha-512 result of the integrity check process. If the values do not match the process will fail and the VA version won’t be published. This is meant as a security enhancement to prevent publishing tampered VM images to production.
arch text yes text value from REST API
os object yes
os family text yes text value from REST API
os name text yes text value from REST API
os version text maximum 60 chars yes
format text maximum 20 chars yes
hypervisor text yes text value from REST API
cores object no
cores minimum number < =recommended no 1, 2, 4, 8, 16, 32
cores recommended number > =minimum no 1, 2, 4, 8, 16, 32
ram object no
ram minimum number <=recommended no 64MB, 128MB, 256MB, 512MB, 1GB, 2GB, 3GB, 4GB, 5GB, 6GB, 8GB, 10GB, 12GB, 14GB, 16GB, 24GB, 32GB
ram recommended number > =minimum no 64MB, 128MB, 256MB, 512MB, 1GB, 2GB, 3GB, 4GB, 5GB, 6GB, 8GB, 10GB, 12GB, 14GB, 16GB, 24GB, 32GB
network_traffic object[] no
network_traffic direction text no inbound, outbound
network_traffic protocols text no tcp, udp, icmp
network_traffic port_range text format “<port_from>:<port_to>” no eg “80:80”, “3000:3010”
accelerator object no
accelerator type text no GPU
accelerator minimum number < =recommended no 0 1, 2, 4, 8, 16, 32
accelerator recommended number > =minimum no 0 1, 2, 4, 8, 16, 32

Examples

Βelow are some examples with pseudo values in various formats.

Example 1: Basic configuration

The examples bellow contain all of the mandatory fields of a description file

XML File

<appdb>
  <version>1.0.0</version>
  <expireson>3</expireson>
  <notes>This version will expire in 3 months</notes>
  <url>https://mydomain.com/images/myvmimagefile.iso</url>
  <arch>x86_64</arch>
  <os>
    <family>Linux</family>
    <name>Fedora</name>
    <version>25</version>
  </os>
  <format>ISO</format>
  <hypervisor>Xen</hypervisor>
</appdb>

JSON File

{
  "appdb": {
    "version": "1.0.0",
    "expireson": 3,
    "notes": "This version will expire in 3 months",
    "url": "https://mydomain.com/images/myvmimagefile.iso",
    "arch": "x86_64",
    "os": {
      "family": "Linux",
      "name": "Fedora",
      "version": "25"
    },
    "format": "ISO",
    "hypervisor": "Xen"
  }
}

YAML File

---
appdb:
  version: 1.0.0
  expireson: 3
  notes: This version will expire in 3 months
  url: https://mydomain.com/images/myvmimagefile.iso
  arch: x86_64
  os:
    family: Linux
    name: Fedora
    version: '25'
  format: ISO
  hypervisor: Xen

Example 2: Extended configuration

The examples bellow contain all of the mandatory and all of the optional fields of a descriptions file, such as number of cores, size of ram etc

XML File

<appdb>
  <version>1.0.0</version>
  <expireson>3</expireson>
  <notes>This version will expire in 3 months</notes>
  <url>https://mydomain.com/images/myvmimagefile.iso</url>
  <arch>x86_64</arch>
  <os>
    <family>Linux</family>
    <name>Fedora</name>
    <version>25</version>
  </os>
  <format>ISO</format>
  <hypervisor>Xen</hypervisor>
  <cores>
    <minimum>2</minimum>
    <recommended>4</recommended>
  </cores>
  <ram>
    <minimum>1GB</minimum>
    <recommended>4GB</recommended>
  </ram>
  <accelerator>
    <type>GPU</type>
    <minimum>1</minimum>
    <recommended>2</recommended>
  </accelerator>
  <network_traffic>
    <direction>inbound</direction>
    <protocols>TCP</protocols>
    <port_range>80:80</port_range>
  </network_traffic>
  <network_traffic>
    <direction>outbound</direction>
    <protocols>TCP</protocols>
    <port_range>80:80</port_range>
  </network_traffic>
</appdb>

JSON File

{
  "appdb": {
    "version": "1.0.0",
    "expireson": 3,
    "notes": "This version will expire in 3 months",
    "url": "https://mydomain.com/images/myvmimagefile.iso",
    "arch": "x86_64",
    "os": {
      "family": "Linux",
      "name": "Fedora",
      "version": "25"
    },
    "format": "ISO",
    "hypervisor": "Xen",
    "cores": {
      "minimum": 2,
      "recommended": 4
    },
    "ram": {
      "minimum": "1GB",
      "recommended": "4GB"
    },
    "accelerator": {
      "type": "GPU",
      "minimum": 1,
      "recommended": 2
    },
    "network_traffic": [
      {
        "direction": "inbound",
        "protocols": "TCP",
        "port_range": "80:80"
      },
      {
        "direction": "outbound",
        "protocols": "TCP",
        "port_range": "80:80"
      }
    ]
  }
}

YAML File

---
appdb:
  version: 1.0.0
  expireson: 3
  notes: This version will expire in 3 months
  url: https://mydomain.com/images/myvmimagefile.iso
  sha512: f524df5c15c80650143f1b9431f3bdf73c6ccfef0c34294253e651c102053a253efc53804a733052afb26061b792aaca0ce70a62ade84268f285533b5b583bba
  arch: x86_64
  os:
    family: Linux
    name: Fedora
    version: '25'
  format: ISO
  hypervisor: Xen
  cores:
    minimum: 2
    recommended: 4
  ram:
    minimum: 1GB
    recommended: 4GB
  accelerator:
    type: GPU
    minimum: 1
    recommended: 2
  network_traffic:
  - direction: inbound
    protocols: TCP
    port_range: 80:80
  - direction: outbound
    protocols: TCP
    port_range: 80:80