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