gluon/gluon/models/net-l3vpn/api.yaml

163 lines
4.4 KiB
YAML

file_version: "1.0"
imports: base/base.yaml
info:
name: net-l3vpn
version: 1.0
description: "L3VPN API Specification"
author:
name: "Gluon Team"
url: https://wiki.openstack.org/wiki/Gluon
email: bh526r@att.com
objects:
Port:
api:
name: port
plural_name: ports
extends: BasePort
Interface:
api:
name: interface
plural_name: interfaces
parent: Port
parent_key: port_id
extends: BaseInterface
attributes:
port_id:
type: Port # Override from base object for specific Service type
VpnService:
api:
name: vpn
plural_name: vpns
extends: BaseService
attributes:
ipv4_family:
type: string
length: 255
description: "Comma separated list of route target strings"
ipv6_family:
type: string
length: 255
description: "Comma separated list of route target strings"
route_distinguishers:
type: string
length: 32
description: "Route distinguisher for this VPN"
VpnBinding:
extends: BaseServiceBinding
api:
name: vpnbinding
plural_name: vpnbindings
attributes:
service_id: # Override from base object for specific Service type
type: VpnService
interface_id: # Override from base object for specific Interface type
type: Interface
ipaddress:
type: string
length: 16
description: "IP Address of port"
format: ipv4
subnet_prefix:
type: integer
description: "Subnet mask"
format: int32
min: 1
max: 31
gateway:
type: string
length: 16
description: "Default gateway"
format: ipv4
VpnAfConfig:
api:
name: vpnafconfig
plural_name: vpnafconfigs
attributes:
tenant_id:
type: uuid
required: true
description: "UUID of Tenant"
vrf_rt_value:
required: true
type: string
length: 32
primary: true
description: "Route target string"
vrf_rt_type:
type: enum
required: true
description: "Route target type"
values:
- export_extcommunity
- import_extcommunity
- both
import_route_policy:
type: string
length: 32
description: "Route target import policy"
export_route_policy:
type: string
length: 32
description: "Route target export policy"
policies:
create:
role: "rule:admin_or_owner"
delete:
role: "rule:admin_or_owner"
get:
role: "rule:admin_or_owner"
list:
role: "rule:admin"
update:
role: "rule:admin_or_owner"
BGPPeering:
api:
name: bgppeering
plural_name: bgppeerings
extends: BaseObject
attributes:
local_ip_address:
required: true
type: string
format: ipv4
length: 16
description: "Local IP of the SDN controller which is supposed to
create a new BGP peering with a remote SDN controller
or data center gateway. This local IP is used as a
unique identifier to allow the SDN controllers / shim
layers to determine if a new peering which has been
pushed to etcd is meant for them."
peer_ip_address:
required: true
type: string
format: ipv4
length: 16
description: "IP of the BGP neighbor to establish a peering with."
as_number:
required: true
type: integer
format: int32
description: "Autonomous system number used by the local BGP stack."
DataplaneTunnel:
api:
name: dataplanetunnel
plural_name: dataplanetunnels
extends: BaseObject
attributes:
local_tunnel_endpoint:
required: true
type: string
format: ipv4
length: 16
description: "Local tunnel endpoint IP. This IP is used as a unique
identifier to allow the SDN controller / shim layer to
determine if this dataplane tunnel is supposed to be
handled by them."
remote_tunnel_endpoint:
required: true
type: string
format: ipv4
length: 16
description: "Remote tunnel endpoint IP of the virtual switch or data
center gateway."