163 lines
4.4 KiB
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."
|