From 0e816032410debad1bf554a23ec8848316a62668 Mon Sep 17 00:00:00 2001 From: Tjaarda1 <100383348@alumnos.uc3m.es> Date: Wed, 24 Jan 2024 12:25:10 +0100 Subject: [PATCH] Dockerfiles: Updated file paths following repo restructuring Adjusted the file paths in the Dockerfiles to align with the recent repository restructuring. This ensures that the Docker images now correctly reference the files in their new locations. This change was necessary to maintain consistency and compatibility with the updated repository structure. It ensures that the Docker images can be built successfully and reflects the latest organization of project files. --- build/controller/Dockerfile | 2 +- build/operator/Dockerfile | 2 +- build/switch/Dockerfile | 14 +- build/switch/build-go.sh | 12 + build/switch/vswitch.ovsschema | 731 --------------------------------- 5 files changed, 20 insertions(+), 741 deletions(-) create mode 100644 build/switch/build-go.sh delete mode 100644 build/switch/vswitch.ovsschema diff --git a/build/controller/Dockerfile b/build/controller/Dockerfile index c75bec1..48b59f7 100644 --- a/build/controller/Dockerfile +++ b/build/controller/Dockerfile @@ -1,6 +1,6 @@ FROM onosproject/onos:2.7-latest -COPY . ./ +COPY ./src/controller ./ RUN apt-get update && \ apt-get install wget && \ diff --git a/build/operator/Dockerfile b/build/operator/Dockerfile index e816270..47f6bff 100644 --- a/build/operator/Dockerfile +++ b/build/operator/Dockerfile @@ -1,4 +1,4 @@ FROM python:3.11.6 RUN pip install kopf kubernetes PyMySQL cryptography requests -COPY l2sm-operator.py /l2sm-operator.py +COPY ./src/operator/l2sm-operator.py /l2sm-operator.py CMD kopf run --standalone --all-namespaces /l2sm-operator.py diff --git a/build/switch/Dockerfile b/build/switch/Dockerfile index 38374b6..3d62217 100644 --- a/build/switch/Dockerfile +++ b/build/switch/Dockerfile @@ -1,28 +1,26 @@ FROM golang:1.20 AS build -WORKDIR /usr/src/bin +WORKDIR /usr/src/l2sm-switch -COPY ./main.go ./go.mod ./ +COPY ./src/switch/ ./build/switch/build-go.sh ./ -RUN go build -v -o /usr/local/bin/l2sm-br ./... +RUN ./build-go.sh FROM ubuntu:latest WORKDIR /usr/local/bin -COPY --from=build /usr/local/bin/ . +COPY ./src/switch/vswitch.ovsschema /tmp/ -COPY ./vswitch.ovsschema /tmp/ +COPY --from=build /usr/local/bin/ . RUN apt-get update && \ apt-get install -y net-tools iproute2 netcat-openbsd dnsutils curl iputils-ping iptables nmap tcpdump openvswitch-switch && \ mkdir /var/run/openvswitch && mkdir -p /etc/openvswitch && ovsdb-tool create /etc/openvswitch/conf.db /tmp/vswitch.ovsschema -COPY ./setup_switch.sh . +COPY ./src/switch/setup_switch.sh . RUN chmod +x ./setup_switch.sh && \ mkdir /etc/l2sm/ - - CMD [ "./setup_switch.sh" ] \ No newline at end of file diff --git a/build/switch/build-go.sh b/build/switch/build-go.sh new file mode 100644 index 0000000..8301f17 --- /dev/null +++ b/build/switch/build-go.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -e + +DEST_DIR="/usr/local/bin" + + +if [ ! -d ${DEST_DIR} ]; then + mkdir ${DEST_DIR} +fi + +go build -v -o "${DEST_DIR}"/l2sm-init ./cmd/l2sm-init +go build -v -o "${DEST_DIR}"/l2sm-vxlans ./cmd/l2sm-vxlans diff --git a/build/switch/vswitch.ovsschema b/build/switch/vswitch.ovsschema deleted file mode 100644 index 2d395ff..0000000 --- a/build/switch/vswitch.ovsschema +++ /dev/null @@ -1,731 +0,0 @@ -{"name": "Open_vSwitch", - "version": "8.4.0", - "cksum": "2738838700 27127", - "tables": { - "Open_vSwitch": { - "columns": { - "datapaths": { - "type": {"key": {"type": "string"}, - "value": {"type": "uuid", - "refTable": "Datapath"}, - "min": 0, "max": "unlimited"}}, - "bridges": { - "type": {"key": {"type": "uuid", - "refTable": "Bridge"}, - "min": 0, "max": "unlimited"}}, - "manager_options": { - "type": {"key": {"type": "uuid", - "refTable": "Manager"}, - "min": 0, "max": "unlimited"}}, - "ssl": { - "type": {"key": {"type": "uuid", - "refTable": "SSL"}, - "min": 0, "max": 1}}, - "other_config": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "next_cfg": { - "type": "integer"}, - "cur_cfg": { - "type": "integer"}, - "statistics": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "ovs_version": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "db_version": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "system_type": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "system_version": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "datapath_types": { - "type": {"key": {"type": "string"}, - "min": 0, "max": "unlimited"}}, - "iface_types": { - "type": {"key": {"type": "string"}, - "min": 0, "max": "unlimited"}}, - "dpdk_initialized": { - "type": "boolean"}, - "dpdk_version": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}}, - "isRoot": true, - "maxRows": 1}, - "Bridge": { - "columns": { - "name": { - "type": "string", - "mutable": false}, - "datapath_type": { - "type": "string"}, - "datapath_version": { - "type": "string"}, - "datapath_id": { - "type": {"key": "string", "min": 0, "max": 1}, - "ephemeral": true}, - "stp_enable": { - "type": "boolean"}, - "rstp_enable": { - "type": "boolean"}, - "mcast_snooping_enable": { - "type": "boolean"}, - "ports": { - "type": {"key": {"type": "uuid", - "refTable": "Port"}, - "min": 0, "max": "unlimited"}}, - "mirrors": { - "type": {"key": {"type": "uuid", - "refTable": "Mirror"}, - "min": 0, "max": "unlimited"}}, - "netflow": { - "type": {"key": {"type": "uuid", - "refTable": "NetFlow"}, - "min": 0, "max": 1}}, - "sflow": { - "type": {"key": {"type": "uuid", - "refTable": "sFlow"}, - "min": 0, "max": 1}}, - "ipfix": { - "type": {"key": {"type": "uuid", - "refTable": "IPFIX"}, - "min": 0, "max": 1}}, - "controller": { - "type": {"key": {"type": "uuid", - "refTable": "Controller"}, - "min": 0, "max": "unlimited"}}, - "protocols": { - "type": {"key": {"type": "string", - "enum": ["set", ["OpenFlow10", - "OpenFlow11", - "OpenFlow12", - "OpenFlow13", - "OpenFlow14", - "OpenFlow15"]]}, - "min": 0, "max": "unlimited"}}, - "fail_mode": { - "type": {"key": {"type": "string", - "enum": ["set", ["standalone", "secure"]]}, - "min": 0, "max": 1}}, - "status": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "rstp_status": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "other_config": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "flood_vlans": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4095}, - "min": 0, "max": 4096}}, - "flow_tables": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 254}, - "value": {"type": "uuid", - "refTable": "Flow_Table"}, - "min": 0, "max": "unlimited"}}, - "auto_attach": { - "type": {"key": {"type": "uuid", - "refTable": "AutoAttach"}, - "min": 0, "max": 1}}}, - "indexes": [["name"]]}, - "Port": { - "columns": { - "name": { - "type": "string", - "mutable": false}, - "interfaces": { - "type": {"key": {"type": "uuid", - "refTable": "Interface"}, - "min": 1, "max": "unlimited"}}, - "trunks": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4095}, - "min": 0, "max": 4096}}, - "cvlans": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4095}, - "min": 0, "max": 4096}}, - "tag": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4095}, - "min": 0, "max": 1}}, - "vlan_mode": { - "type": {"key": {"type": "string", - "enum": ["set", ["trunk", "access", "native-tagged", - "native-untagged", "dot1q-tunnel"]]}, - "min": 0, "max": 1}}, - "qos": { - "type": {"key": {"type": "uuid", - "refTable": "QoS"}, - "min": 0, "max": 1}}, - "mac": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "bond_mode": { - "type": {"key": {"type": "string", - "enum": ["set", ["balance-tcp", "balance-slb", "active-backup"]]}, - "min": 0, "max": 1}}, - "lacp": { - "type": {"key": {"type": "string", - "enum": ["set", ["active", "passive", "off"]]}, - "min": 0, "max": 1}}, - "bond_updelay": { - "type": "integer"}, - "bond_downdelay": { - "type": "integer"}, - "bond_active_slave": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "bond_fake_iface": { - "type": "boolean"}, - "fake_bridge": { - "type": "boolean"}, - "status": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "rstp_status": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "rstp_statistics": { - "type": {"key": "string", "value": "integer", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "statistics": { - "type": {"key": "string", "value": "integer", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "protected": { - "type": "boolean"}, - "other_config": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}, - "indexes": [["name"]]}, - "Interface": { - "columns": { - "name": { - "type": "string", - "mutable": false}, - "type": { - "type": "string"}, - "options": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "ingress_policing_rate": { - "type": {"key": {"type": "integer", - "minInteger": 0}}}, - "ingress_policing_burst": { - "type": {"key": {"type": "integer", - "minInteger": 0}}}, - "ingress_policing_kpkts_rate": { - "type": {"key": {"type": "integer", - "minInteger": 0}}}, - "ingress_policing_kpkts_burst": { - "type": {"key": {"type": "integer", - "minInteger": 0}}}, - "mac_in_use": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}, - "ephemeral": true}, - "mac": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "ifindex": { - "type": { - "key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4294967295}, - "min": 0, - "max": 1}, - "ephemeral": true}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "ofport": { - "type": {"key": "integer", "min": 0, "max": 1}}, - "ofport_request": { - "type": { - "key": {"type": "integer", - "minInteger": 1, - "maxInteger": 65279}, - "min": 0, - "max": 1}}, - "bfd": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "bfd_status": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "cfm_mpid": { - "type": { - "key": {"type": "integer"}, - "min": 0, - "max": 1}}, - "cfm_remote_mpids": { - "type": { - "key": {"type": "integer"}, - "min": 0, - "max": "unlimited"}, - "ephemeral": true}, - "cfm_flap_count": { - "type": { - "key": {"type": "integer"}, - "min": 0, - "max": 1}}, - "cfm_fault": { - "type": { - "key": { "type": "boolean"}, - "min": 0, - "max": 1}, - "ephemeral": true}, - "cfm_fault_status": { - "type": { - "key": "string", "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "cfm_remote_opstate": { - "type": {"key": {"type": "string", - "enum": ["set", ["up", "down"]]}, - "min": 0, "max": 1}, - "ephemeral": true}, - "cfm_health": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 100}, - "min": 0, "max": 1}, - "ephemeral": true}, - "lacp_current": { - "type": {"key": {"type": "boolean"}, - "min": 0, "max": 1}, - "ephemeral": true}, - "lldp": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "other_config": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "statistics": { - "type": {"key": "string", "value": "integer", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "status": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "admin_state": { - "type": {"key": {"type": "string", - "enum": ["set", ["up", "down"]]}, - "min": 0, "max": 1}, - "ephemeral": true}, - "link_state": { - "type": {"key": {"type": "string", - "enum": ["set", ["up", "down"]]}, - "min": 0, "max": 1}, - "ephemeral": true}, - "link_resets": { - "type": {"key": {"type": "integer"}, - "min": 0, "max": 1}, - "ephemeral": true}, - "link_speed": { - "type": {"key": "integer", "min": 0, "max": 1}, - "ephemeral": true}, - "duplex": { - "type": {"key": {"type": "string", - "enum": ["set", ["half", "full"]]}, - "min": 0, "max": 1}, - "ephemeral": true}, - "mtu": { - "type": {"key": "integer", "min": 0, "max": 1}, - "ephemeral": true}, - "mtu_request": { - "type": { - "key": {"type": "integer", - "minInteger": 1}, - "min": 0, - "max": 1}}, - "error": { - "type": {"key": "string", "min": 0, "max": 1}}}, - "indexes": [["name"]]}, - "Flow_Table": { - "columns": { - "name": { - "type": {"key": "string", "min": 0, "max": 1}}, - "flow_limit": { - "type": {"key": {"type": "integer", "minInteger": 0}, - "min": 0, "max": 1}}, - "overflow_policy": { - "type": {"key": {"type": "string", - "enum": ["set", ["refuse", "evict"]]}, - "min": 0, "max": 1}}, - "groups": { - "type": {"key": "string", "min": 0, "max": "unlimited"}}, - "prefixes": { - "type": {"key": "string", "min": 0, "max": 3}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}}, - "QoS": { - "columns": { - "type": { - "type": "string"}, - "queues": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4294967295}, - "value": {"type": "uuid", - "refTable": "Queue"}, - "min": 0, "max": "unlimited"}}, - "other_config": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}, - "isRoot": true}, - "Queue": { - "columns": { - "dscp": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 63}, - "min": 0, "max": 1}}, - "other_config": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}, - "isRoot": true}, - "Mirror": { - "columns": { - "name": { - "type": "string"}, - "select_all": { - "type": "boolean"}, - "select_src_port": { - "type": {"key": {"type": "uuid", - "refTable": "Port", - "refType": "weak"}, - "min": 0, "max": "unlimited"}}, - "select_dst_port": { - "type": {"key": {"type": "uuid", - "refTable": "Port", - "refType": "weak"}, - "min": 0, "max": "unlimited"}}, - "select_vlan": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4095}, - "min": 0, "max": 4096}}, - "output_port": { - "type": {"key": {"type": "uuid", - "refTable": "Port", - "refType": "weak"}, - "min": 0, "max": 1}}, - "output_vlan": { - "type": {"key": {"type": "integer", - "minInteger": 1, - "maxInteger": 4095}, - "min": 0, "max": 1}}, - "snaplen": { - "type": {"key": {"type": "integer", - "minInteger": 14, - "maxInteger": 65535}, - "min": 0, "max": 1}}, - "statistics": { - "type": {"key": "string", "value": "integer", - "min": 0, "max": "unlimited"}, - "ephemeral": true}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}}, - "NetFlow": { - "columns": { - "targets": { - "type": {"key": {"type": "string"}, - "min": 1, "max": "unlimited"}}, - "engine_type": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 255}, - "min": 0, "max": 1}}, - "engine_id": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 255}, - "min": 0, "max": 1}}, - "add_id_to_interface": { - "type": "boolean"}, - "active_timeout": { - "type": {"key": {"type": "integer", - "minInteger": -1}}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}}, - "sFlow": { - "columns": { - "targets": { - "type": {"key": "string", "min": 1, "max": "unlimited"}}, - "sampling": { - "type": {"key": "integer", "min": 0, "max": 1}}, - "polling": { - "type": {"key": "integer", "min": 0, "max": 1}}, - "header": { - "type": {"key": "integer", "min": 0, "max": 1}}, - "agent": { - "type": {"key": "string", "min": 0, "max": 1}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}}, - "IPFIX": { - "columns": { - "targets": { - "type": {"key": "string", "min": 0, "max": "unlimited"}}, - "sampling": { - "type": {"key": {"type": "integer", - "minInteger": 1, - "maxInteger": 4294967295}, - "min": 0, "max": 1}}, - "obs_domain_id": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4294967295}, - "min": 0, "max": 1}}, - "obs_point_id": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4294967295}, - "min": 0, "max": 1}}, - "cache_active_timeout": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4200}, - "min": 0, "max": 1}}, - "cache_max_flows": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4294967295}, - "min": 0, "max": 1}}, - "stats_interval": { - "type": {"key": {"type": "integer", - "minInteger": 1, - "maxInteger": 3600}, - "min": 0, "max": 1}}, - "template_interval": { - "type": {"key": {"type": "integer", - "minInteger": 1, - "maxInteger": 3600}, - "min": 0, "max": 1}}, - "other_config": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}}, - "Flow_Sample_Collector_Set": { - "columns": { - "id": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 4294967295}, - "min": 1, "max": 1}}, - "bridge": { - "type": {"key": {"type": "uuid", - "refTable": "Bridge"}, - "min": 1, "max": 1}}, - "ipfix": { - "type": {"key": {"type": "uuid", - "refTable": "IPFIX"}, - "min": 0, "max": 1}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}, - "isRoot": true, - "indexes": [["id", "bridge"]]}, - "Controller": { - "columns": { - "type": { - "type": {"key": {"type": "string", - "enum": ["set", ["primary", "service"]]}, - "min": 0, "max": 1}}, - "target": { - "type": "string"}, - "max_backoff": { - "type": {"key": {"type": "integer", - "minInteger": 1000}, - "min": 0, "max": 1}}, - "inactivity_probe": { - "type": {"key": "integer", "min": 0, "max": 1}}, - "connection_mode": { - "type": {"key": {"type": "string", - "enum": ["set", ["in-band", "out-of-band"]]}, - "min": 0, "max": 1}}, - "local_ip": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "local_netmask": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "local_gateway": { - "type": {"key": {"type": "string"}, - "min": 0, "max": 1}}, - "enable_async_messages": { - "type": {"key": {"type": "boolean"}, - "min": 0, "max": 1}}, - "controller_queue_size": { - "type": {"key": {"type": "integer", - "minInteger": 1, - "maxInteger": 512}, - "min": 0, "max": 1}}, - "controller_rate_limit": { - "type": {"key": {"type": "integer", - "minInteger": 100}, - "min": 0, "max": 1}}, - "controller_burst_limit": { - "type": {"key": {"type": "integer", - "minInteger": 25}, - "min": 0, "max": 1}}, - "other_config": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "is_connected": { - "type": "boolean", - "ephemeral": true}, - "role": { - "type": {"key": {"type": "string", - "enum": ["set", ["other", "master", "slave"]]}, - "min": 0, "max": 1}, - "ephemeral": true}, - "status": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}, - "ephemeral": true}}}, - "Manager": { - "columns": { - "target": { - "type": "string"}, - "max_backoff": { - "type": {"key": {"type": "integer", - "minInteger": 1000}, - "min": 0, "max": 1}}, - "inactivity_probe": { - "type": {"key": "integer", "min": 0, "max": 1}}, - "connection_mode": { - "type": {"key": {"type": "string", - "enum": ["set", ["in-band", "out-of-band"]]}, - "min": 0, "max": 1}}, - "other_config": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "is_connected": { - "type": "boolean", - "ephemeral": true}, - "status": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}, - "ephemeral": true}}, - "indexes": [["target"]]}, - "Datapath": { - "columns": { - "datapath_version": { - "type": "string"}, - "ct_zones": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 65535}, - "value": {"type": "uuid", - "refTable": "CT_Zone"}, - "min": 0, "max": "unlimited"}}, - "capabilities": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}}, - "CT_Zone": { - "columns": { - "timeout_policy": { - "type": {"key": {"type": "uuid", - "refTable": "CT_Timeout_Policy"}, - "min": 0, "max": 1}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}}, - "CT_Timeout_Policy": { - "columns": { - "timeouts": { - "type": {"key": {"type" : "string", - "enum": ["set", ["tcp_syn_sent", "tcp_syn_recv", - "tcp_established", "tcp_fin_wait", - "tcp_close_wait", "tcp_last_ack", - "tcp_time_wait", "tcp_close", - "tcp_syn_sent2", "tcp_retransmit", - "tcp_unack", "udp_first", - "udp_single", "udp_multiple", - "icmp_first", "icmp_reply"]]}, - "value": {"type" : "integer", - "minInteger" : 0, - "maxInteger" : 4294967295}, - "min": 0, "max": "unlimited"}}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}}, - "SSL": { - "columns": { - "private_key": { - "type": "string"}, - "certificate": { - "type": "string"}, - "ca_cert": { - "type": "string"}, - "bootstrap_ca_cert": { - "type": "boolean"}, - "external_ids": { - "type": {"key": "string", "value": "string", - "min": 0, "max": "unlimited"}}}, - "maxRows": 1}, - "AutoAttach": { - "columns": { - "system_name": { - "type": "string"}, - "system_description": { - "type": "string"}, - "mappings": { - "type": {"key": {"type": "integer", - "minInteger": 0, - "maxInteger": 16777215}, - "value": {"type": "integer", - "minInteger": 0, - "maxInteger": 4095}, - "min": 0, "max": "unlimited"}}}}}} -- GitLab