$schema: http://json-schema.org/draft-04/schema#
type: object
properties:
capabilities:
type: array
items:
type: string
interfaces:
type: array
items:
type: object
required:
- name
allOf:
- $ref: "#/definitions/interface-base/rw"
- $ref: "#/definitions/interface-base/ro"
- $ref: "#/definitions/interface-ip/all"
- $ref: "#/definitions/lldp/rw"
- $ref: "#/definitions/lldp/ro"
- oneOf:
- "$ref": "#/definitions/interface-unknown/rw"
- "$ref": "#/definitions/interface-ethernet/rw"
- "$ref": "#/definitions/interface-bond/rw"
- "$ref": "#/definitions/interface-linux-bridge/all"
- "$ref": "#/definitions/interface-ovs-bridge/all"
- "$ref": "#/definitions/interface-ovs-interface/rw"
- "$ref": "#/definitions/interface-dummy/rw"
- "$ref": "#/definitions/interface-vlan/rw"
- "$ref": "#/definitions/interface-vxlan/rw"
- "$ref": "#/definitions/interface-team/rw"
- "$ref": "#/definitions/interface-other/rw"
routes:
type: object
properties:
config:
type: array
items:
$ref: "#/definitions/route"
running:
type: array
items:
$ref: "#/definitions/route"
route-rules:
type: object
properties:
config:
type: array
items:
$ref: "#/definitions/route-rule"
dns-resolver:
type: object
properties:
config:
items:
$ref: "#/definitions/dns"
running:
items:
$ref: "#/definitions/dns"
definitions:
types:
status:
type: string
enum:
- up
- down
mac-address:
type: string
pattern: "^([a-fA-F0-9]{2}:){3,31}[a-fA-F0-9]{2}$"
bridge-vlan-tag:
type: integer
minimum: 0
maximum: 4095
# Interface types
interface-base:
all:
allOf:
- $ref: "#/definitions/interface-base/rw"
- $ref: "#/definitions/interface-base/ro"
rw:
properties:
description:
type: string
name:
type: string
state:
type: string
enum:
- absent
- up
- down
mac-address:
$ref: "#/definitions/types/mac-address"
mtu:
type: integer
minimum: 0
ro:
properties:
if-index:
type: integer
minimum: 0
admin-status:
$ref: "#/definitions/types/status"
link-status:
$ref: "#/definitions/types/status"
phys-address:
$ref: "#/definitions/types/mac-address"
higher-layer-if:
type: string
lower-layer-if:
type: string
statistics:
properties:
in-broadcast-pkts:
type: integer
minimum: 0
in-discards:
type: integer
minimum: 0
in-errors:
type: integer
minimum: 0
in-multicast-pkts:
type: integer
minimum: 0
in-octets:
type: integer
minimum: 0
in-unicast-pkts:
type: integer
minimum: 0
out-broadcast-pkts:
type: integer
minimum: 0
out-discards:
type: integer
minimum: 0
out-errors:
type: integer
minimum: 0
out-multicast-pkts:
type: integer
minimum: 0
out-octets:
type: integer
minimum: 0
out-unicast-pkts:
type: integer
minimum: 0
interface-unknown:
rw:
properties:
type:
type: string
enum:
- unknown
interface-ethernet:
rw:
properties:
type:
type: string
enum:
- ethernet
auto-negotiation:
type: boolean
duplex:
type: string
enum:
- full
- half
speed:
type: integer
minimum: 0
flow-control:
type: boolean
sr-iov:
type: object
properties:
total-vfs:
type: integer
minimum: 0
vfs:
type: array
items:
type: object
properties:
id:
type: integer
minimum: 0
mac-address:
$ref: "#/definitions/types/mac-address"
spoof-check:
type: boolean
trust:
type: boolean
min-tx-rate:
type: integer
minimum: 0
max-tx-rate:
type: integer
minimum: 0
required:
- id
interface-vlan:
rw:
properties:
type:
type: string
enum:
- vlan
vlan:
type: object
properties:
id:
type: integer
minimum: 0
maximum: 4095
base-iface:
type: string
required:
- id
- base-iface
interface-vxlan:
rw:
properties:
type:
type: string
enum:
- vxlan
vxlan:
type: object
properties:
id:
type: integer
minimum: 0
maximum: 16777215
remote:
type: string
destination-port:
type: integer
base-iface:
type: string
interface-bond:
rw:
properties:
type:
type: string
enum:
- bond
link-aggregation:
type: object
properties:
mode:
type: string
slaves:
type: array
items:
type: string
options:
type: object
interface-linux-bridge:
all:
allOf:
- $ref: "#/definitions/interface-linux-bridge/rw"
- $ref: "#/definitions/interface-linux-bridge/ro"
ro:
properties:
bridge:
type: object
properties:
options:
type: object
properties:
gc-timer:
type: integer
hello-timer:
type: integer
rw:
properties:
type:
type: string
enum:
- linux-bridge
bridge:
type: object
properties:
port:
type: array
items:
type: object
properties:
name:
type: string
stp-priority:
type: integer
stp-path-cost:
type: integer
stp-hairpin-mode:
type: boolean
vlan:
type: object
properties:
mode:
type: string
enum:
- trunk
- access
trunk-tags:
type: array
items:
$ref: "#/definitions/bridge-port-vlan"
tag:
$ref: "#/definitions/types/bridge-vlan-tag"
enable-native:
type: boolean
options:
type: object
properties:
mac-ageing-time:
type: integer
group-forward-mask:
type: integer
group-addr:
$ref: "#/definitions/types/mac-address"
hash-max:
type: integer
multicast-snooping:
type: boolean
multicast-router:
type: integer
multicast-last-member-count:
type: integer
multicast-last-member-interval:
type: integer
multicast-membership-interval:
type: integer
multicast-querier:
type: boolean
multicast-querier-interval:
type: integer
multicast-query-use-ifaddr:
type: boolean
multicast-query-interval:
type: integer
multicast-query-response-interval:
type: integer
multicast-router:
type: integer
multicast-startup-query-count:
type: integer
multicast-startup-query-interval:
type: integer
stp:
type: object
properties:
enabled:
type: boolean
priority:
type: integer
forward-delay:
type: integer
hello-time:
type: integer
max-age:
type: integer
interface-ovs-bridge:
all:
allOf:
- $ref: "#/definitions/interface-ovs-bridge/rw"
- $ref: "#/definitions/interface-ovs-bridge/ro"
rw:
properties:
type:
type: string
enum:
- ovs-bridge
ovs-db:
type: object
bridge:
type: object
properties:
port:
type: array
items:
type: object
properties:
name:
type: string
vlan:
type: object
properties:
mode:
type: string
enum:
- trunk
- access
trunk-tags:
type: array
items:
$ref: "#/definitions/bridge-port-vlan"
tag:
$ref: "#/definitions/types/bridge-vlan-tag"
enable-native:
type: boolean
link-aggregation:
type: object
properties:
mode:
type: string
slaves:
type: array
items:
type: object
properties:
name:
type: string
options:
type: object
properties:
stp:
type: boolean
rstp:
type: boolean
fail-mode:
type: string
mcast-snooping-enable:
type: boolean
ro:
properties:
bridge:
type: object
properties:
port:
type: array
items:
type: object
properties:
learned-mac-address:
type: array
items:
$ref: "#/definitions/types/mac-address"
interface-ovs-interface:
rw:
properties:
type:
type: string
enum:
- ovs-interface
ovs-db:
type: object
patch:
type: object
properties:
peer:
type: string
interface-dummy:
rw:
properties:
type:
type: string
enum:
- dummy
interface-ip:
all:
allOf:
- $ref: "#/definitions/interface-ip/rw"
- $ref: "#/definitions/interface-ip/ro"
rw:
properties:
ipv4:
type: object
properties:
enabled:
type: boolean
dhcp:
type: boolean
auto-routes:
type: boolean
auto-gateway:
type: boolean
auto-dns:
type: boolean
address:
type: array
items:
type: object
properties:
ip:
type: string
prefix-length:
type: integer
netmask:
type: string
neighbor:
type: array
items:
type: object
properties:
ip:
type: string
link-layer-address:
type: string
forwarding:
type: boolean
ipv6:
type: object
properties:
enabled:
type: boolean
autoconf:
type: boolean
dhcp:
type: boolean
auto-routes:
type: boolean
auto-gateway:
type: boolean
auto-dns:
type: boolean
address:
type: array
items:
type: object
properties:
ip:
type: string
prefix-length:
type: integer
neighbor:
type: array
items:
type: object
properties:
ip:
type: string
link-layer-address:
type: string
forwarding:
type: boolean
dup-addr-detect-transmits:
type: integer
ro:
properties:
ipv4:
type: object
properties:
address:
type: array
items:
type: object
properties:
origin:
type: string
neighbor:
type: array
items:
type: object
properties:
origin:
type: string
ipv6:
type: object
properties:
address:
type: array
items:
type: object
properties:
origin:
type: string
status:
type: string
neighbor:
type: array
items:
type: object
properties:
origin:
type: string
is-router:
type: boolean
state:
type: string
interface-team:
rw:
properties:
type:
type: string
enum:
- team
team:
type: object
properties:
ports:
type: array
items:
type: object
properties:
name:
type: string
runner:
type: object
properties:
name:
type: string
interface-other:
rw:
properties:
type:
type: string
enum:
- other
route:
type: object
properties:
state:
type: string
enum:
- absent
table-id:
type: integer
metric:
type: integer
destination:
type: string
next-hop-interface:
type: string
next-hop-address:
type: string
dns:
type: object
properties:
server:
type: array
items:
type: string
search:
type: array
items:
type: string
bridge-port-vlan:
type: object
properties:
id:
$ref: "#/definitions/types/bridge-vlan-tag"
id-range:
type: object
properties:
min:
$ref: "#/definitions/types/bridge-vlan-tag"
max:
$ref: "#/definitions/types/bridge-vlan-tag"
route-rule:
type: object
properties:
from:
type: string
to:
type: string
priority:
type: integer
route-table:
type: integer
lldp:
ro:
properties:
neighbors:
type: array
items:
type: object
rw:
properties:
enabled:
type: boolean