Guide for AppDB Virtual Appliance Continuous Delivery File Format
Continuous delivery file contains information describing the current virtual appliance metadata.
!Currently only JSON, XML or YAML formatted files are supported. See file structure examples in the "Examples" section bellow.
The contents must be wrapped inside a 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 archs api | |||
os | object | yes | ||||
os | family | text | yes | text value from oses api | ||
os | name | text | yes | text value from oses api | ||
os | version | text | maximum 60 chars | yes | ||
format | text | maximum 20 chars | yes | |||
hypervisor | text | yes | text value from hypervisors 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 |
Βelow are some examples with pseudo values in various formats.
The examples bellow contain all of the mandatory fields of a description 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>
{ "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" } }
--- 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
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
<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>
{ "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" } ] } }
--- 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