*** Settings ***
Documentation Test suite for SFC Service Functions, Operates functions from Restconf APIs.
+Suite Setup Init Variables
Suite Teardown Delete All Sessions
Library RequestsLibrary
Library SSHLibrary
Variables ../../../variables/Variables.py
Resource ../../../libraries/Utils.robot
-*** Variables ***
-${SFC_API} /restconf/config/service-function:service-functions
-${SFC_FUNCTIONS_FILE} ${CURDIR}/../../../variables/sfc/service-functions.json
-
*** Test Cases ***
Add Service Functions To First Node
[Documentation] Add service functions from JSON file
${body} OperatingSystem.Get File ${filepath}
${jsonbody} To Json ${body}
[Return] ${jsonbody}
+
+Init Variables
+ [Documentation] Initialize ODL version specific variables
+ log ${ODL_VERSION}
+ Run Keyword If '${ODL_VERSION}' == 'stable-lithium' Init Variables Lithium
+ ... ELSE Init Variables Master
+
+Init Variables Master
+ [Documentation] Sets variables specific to latest(master) version
+ Set Suite Variable ${SFC_API} /restconf/config/service-function:service-functions
+ Set Suite Variable ${SFC_FUNCTIONS_FILE} ${CURDIR}/../../../variables/sfc/master/service-functions.json
+
+Init Variables Lithium
+ [Documentation] Sets variables specific to Lithium version
+ Set Suite Variable ${SFC_API} /restconf/config/service-function:service-functions
+ Set Suite Variable ${SFC_FUNCTIONS_FILE} ${CURDIR}/../../../variables/sfc/lithium/service-functions.json
--- /dev/null
+{
+ "service-function-chains": {
+ "service-function-chain": [
+ {
+ "name": "SFC1",
+ "sfc-service-function": [
+ {
+ "name": "dpi-abstract1",
+ "type": "service-function-type:dpi",
+ "order" : 0
+ },
+ {
+ "name": "napt44-abstract1",
+ "type": "service-function-type:napt44",
+ "order" : 1
+ },
+ {
+ "name": "firewall-abstract1",
+ "type": "service-function-type:firewall",
+ "order" : 2
+ }
+ ]
+ },
+ {
+ "name": "SFC2",
+ "sfc-service-function": [
+ {
+ "name": "firewall-abstract2",
+ "type": "service-function-type:firewall",
+ "order" : 0
+ },
+ {
+ "name": "napt44-abstract2",
+ "type": "service-function-type:napt44",
+ "order" : 1
+ }
+ ]
+ }
+ ]
+ }
+}
--- /dev/null
+{
+ "service-function-forwarders": {
+ "service-function-forwarder": [
+ {
+ "name": "SFF-bootstrap",
+ "service-node": "OVSDB1",
+ "rest-uri": "http://localhost:5000",
+ "sff-data-plane-locator": [
+ {
+ "name": "eth0",
+ "data-plane-locator": {
+ "port": 5000,
+ "ip": "192.168.1.1",
+ "transport": "service-locator:vxlan-gpe"
+ }
+ }
+ ],
+ "service-function-dictionary": [
+ {
+ "sff-sf-data-plane-locator": {
+ "port": 5000,
+ "ip": "10.1.1.1"
+ },
+ "name": "SF1",
+ "type": "service-function-type:dpi"
+ },
+ {
+ "sff-sf-data-plane-locator": {
+ "port": 5000,
+ "ip": "10.1.1.2"
+ },
+ "name": "SF2",
+ "type": "service-function-type:firewall"
+ }
+ ],
+ "connected-sff-dictionary": [
+ {
+ "sff-sff-data-plane-locator": {
+ "port": 5000,
+ "ip": "192.168.1.2"
+ },
+ "name": "br-int-ovs-2"
+ }
+ ]
+ },
+ {
+ "name": "br-int-ovs-2",
+ "service-node": "OVSDB2",
+ "rest-uri": "http://localhost:5000",
+ "sff-data-plane-locator": [
+ {
+ "name": "eth0",
+ "data-plane-locator": {
+ "port": 5000,
+ "ip": "192.168.1.2",
+ "transport": "service-locator:vxlan-gpe"
+ }
+ }
+ ],
+ "service-function-dictionary": [
+ {
+ "sff-sf-data-plane-locator": {
+ "port": 5000,
+ "ip": "10.1.1.5"
+ },
+ "name": "SF5",
+ "type": "service-function-type:dpi"
+ },
+ {
+ "sff-sf-data-plane-locator": {
+ "port": 5000,
+ "ip": "10.1.1.6"
+ },
+ "name": "SF6",
+ "type": "service-function-type:napt44"
+ }
+ ],
+ "connected-sff-dictionary": [
+ {
+ "sff-sff-data-plane-locator": {
+ "port": 5000,
+ "ip": "10.1.1.2"
+ },
+ "name": "SFF-bootstrap"
+ }
+ ]
+ }
+ ]
+ }
+}
--- /dev/null
+{
+ "service-functions": {
+ "service-function": [
+ {
+ "rest-uri": "http://localhost:10002",
+ "ip-mgmt-address": "10.3.1.103",
+ "sf-data-plane-locator": [
+ {
+ "name": "preferred",
+ "port": 10002,
+ "ip": "10.3.1.103",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "name": "napt44-103-2",
+ "type": "service-function-type:napt44",
+ "nsh-aware": true
+ },
+ {
+ "rest-uri": "http://localhost:10001",
+ "ip-mgmt-address": "10.3.1.103",
+ "sf-data-plane-locator": [
+ {
+ "name": "master",
+ "port": 10001,
+ "ip": "10.3.1.103",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "name": "napt44-103-1",
+ "type": "service-function-type:napt44",
+ "nsh-aware": true
+ },
+ {
+ "rest-uri": "http://localhost:10002",
+ "ip-mgmt-address": "10.3.1.102",
+ "sf-data-plane-locator": [
+ {
+ "name": "1",
+ "port": 10002,
+ "ip": "10.3.1.102",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "name": "dpi-102-2",
+ "type": "service-function-type:dpi",
+ "nsh-aware": true
+ },
+ {
+ "rest-uri": "http://localhost:10002",
+ "ip-mgmt-address": "10.3.1.101",
+ "sf-data-plane-locator": [
+ {
+ "name": "2",
+ "port": 10002,
+ "ip": "10.3.1.101",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "name": "firewall-101-2",
+ "type": "service-function-type:firewall",
+ "nsh-aware": true
+ },
+ {
+ "rest-uri": "http://localhost:10002",
+ "ip-mgmt-address": "10.3.1.104",
+ "sf-data-plane-locator": [
+ {
+ "name": "3",
+ "port": 10020,
+ "ip": "10.3.1.104",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "name": "napt44-104",
+ "type": "service-function-type:napt44",
+ "nsh-aware": true
+ },
+ {
+ "rest-uri": "http://localhost:10001",
+ "ip-mgmt-address": "10.3.1.102",
+ "sf-data-plane-locator": [
+ {
+ "name": "4",
+ "port": 10001,
+ "ip": "10.3.1.102",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "name": "dpi-102-1",
+ "type": "service-function-type:dpi",
+ "nsh-aware": true
+ },
+ {
+ "rest-uri": "http://localhost:10001",
+ "ip-mgmt-address": "10.3.1.104",
+ "sf-data-plane-locator": [
+ {
+ "name": "my-locator",
+ "port": 10001,
+ "ip": "10.3.1.104",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "name": "firewall-104",
+ "type": "service-function-type:firewall",
+ "nsh-aware": true
+ },
+ {
+ "rest-uri": "http://localhost:10003",
+ "ip-mgmt-address": "10.3.1.102",
+ "sf-data-plane-locator": [
+ {
+ "name": "101",
+ "port": 10003,
+ "ip": "10.3.1.102",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "name": "dpi-102-3",
+ "type": "service-function-type:dpi",
+ "nsh-aware": true
+ },
+ {
+ "rest-uri": "http://localhost:10001",
+ "ip-mgmt-address": "10.3.1.101",
+ "sf-data-plane-locator": [
+ {
+ "name": "007",
+ "port": 10001,
+ "ip": "10.3.1.101",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "name": "firewall-101-1",
+ "type": "service-function-type:firewall",
+ "nsh-aware": true
+ }
+ ]
+ }
+}
--- /dev/null
+{
+ "service-function": [
+ {
+ "name": "dpi-102-100",
+ "type": "service-function-type:dpi",
+ "nsh-aware": true,
+ "sf-data-plane-locator": [
+ {
+ "name": "dpl-100",
+ "port": 10100,
+ "ip": "10.3.1.102",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ],
+ "ip-mgmt-address": "10.3.1.102",
+ "rest-uri": "http://localhost:10100"
+ }
+ ]
+}
--- /dev/null
+{
+ "service-function-chain": [
+ {
+ "name": "SFC100",
+ "sfc-service-function": [
+ {
+ "name": "dpi-abstract100",
+ "order": 0,
+ "type": "service-function-type:firewall"
+ },
+ {
+ "name": "napt44-abstract100",
+ "order": 1,
+ "type": "service-function-type:dpi"
+ },
+ {
+ "name": "firewall-abstract100",
+ "order": 2,
+ "type": "service-function-type:napt44"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "sfc-service-function": [
+ {
+ "name": "ids-abstract100",
+ "order": 3,
+ "type": "service-function-type:ids"
+ }
+ ]
+}
--- /dev/null
+{
+ "service-function-forwarder": [
+ {
+ "name": "ovs-100",
+ "service-node": "OVSDB2",
+ "rest-uri": "http://localhost:6000",
+ "sff-data-plane-locator": [
+ {
+ "name": "eth0",
+ "data-plane-locator": {
+ "port": 6000,
+ "ip": "192.168.1.2",
+ "transport": "service-locator:vxlan-gpe"
+ }
+ }
+ ],
+ "service-function-dictionary": [
+ {
+ "sff-sf-data-plane-locator": {
+ "port": 6000,
+ "ip": "10.1.1.7"
+ },
+ "name": "SF7",
+ "type": "service-function-type:dpi"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "sff-sf-data-plane-locator": {
+ "port": 6000,
+ "ip": "10.1.1.1"
+ }
+}
--- /dev/null
+{
+ "service-function-dictionary": [
+ {
+ "name": "SF100",
+ "sff-sf-data-plane-locator": {
+ "port": 5100,
+ "ip": "10.1.1.1"
+ },
+ "type": "service-function-type:napt44"
+ }
+ ]
+}
--- /dev/null
+{
+ "service-function-paths": {
+ "service-function-path": [
+ {
+ "name": "SFC1-100",
+ "service-chain-name": "SFC1"
+ },
+ {
+ "name": "SFC1-200",
+ "service-chain-name": "SFC1"
+ },
+ {
+ "name": "SFC1-300",
+ "service-chain-name": "SFC1"
+ },
+ {
+ "name": "SFC2-100",
+ "service-chain-name": "SFC2"
+ },
+ {
+ "name": "SFC2-200",
+ "service-chain-name": "SFC2"
+ }
+ ]
+ }
+}
--- /dev/null
+{
+ "service-function-scheduler-type": [
+ {
+ "type": "service-function-scheduler-type:load-balance",
+ "enabled": true,
+ "name": "load-balance"
+ }
+ ]
+}
--- /dev/null
+{
+ "service-nodes": {
+ "service-node": [
+ {
+ "name": "node-101",
+ "service-function": [
+ "firewall-101-2",
+ "firewall-101-1"
+ ],
+ "ip-mgmt-address": "10.3.1.101"
+ },
+ {
+ "name": "node-102",
+ "service-function": [
+ "dpi-102-1",
+ "dpi-102-2",
+ "dpi-102-3"
+ ],
+ "ip-mgmt-address": "10.3.1.102"
+ },
+ {
+ "name": "node-103",
+ "service-function": [
+ "napt44-103-1",
+ "napt44-103-2"
+ ],
+ "ip-mgmt-address": "10.3.1.103"
+ },
+ {
+ "name": "node-104",
+ "service-function": [
+ "firewall-104",
+ "napt44-104"
+ ],
+ "ip-mgmt-address": "10.3.1.104"
+ }
+ ]
+ }
+}
\ No newline at end of file
--- /dev/null
+{
+ "service-function-scheduler-type": [
+ {
+ "type": "service-function-scheduler-type:random",
+ "enabled": true,
+ "name": "random"
+ }
+ ]
+}
--- /dev/null
+{
+ "service-function-scheduler-type": [
+ {
+ "type": "service-function-scheduler-type:round-robin",
+ "enabled": true,
+ "name": "round-robin"
+ }
+ ]
+}
--- /dev/null
+{
+ "service-function-scheduler-types": {
+ "service-function-scheduler-type": [
+ {
+ "name": "random",
+ "type": "service-function-scheduler-type:random",
+ "enabled": false
+ },
+ {
+ "name": "round-robin",
+ "type": "service-function-scheduler-type:round-robin",
+ "enabled": true
+ },
+ {
+ "name": "load-balance",
+ "type": "service-function-scheduler-type:load-balance",
+ "enabled": false
+ },
+ {
+ "name": "shortest-path",
+ "type": "service-function-scheduler-type:shortest-path",
+ "enabled": false
+ }
+ ]
+ }
+}
+
--- /dev/null
+{
+ "service-function-scheduler-type": [
+ {
+ "type": "service-function-scheduler-type:shortest-path",
+ "enabled": true,
+ "name": "shortest-path"
+ }
+ ]
+}
--- /dev/null
+{
+ "service-function-scheduler-type": [
+ {
+ "type": "service-function-scheduler-type:weighted-shortest-path",
+ "enabled": false,
+ "name": "weighted-shortest-path"
+ }
+ ]
+}
--- /dev/null
+{
+ "sf-data-plane-locator": [
+ {
+ "name": "dpl-101",
+ "port": 10101,
+ "ip": "10.3.1.102",
+ "service-function-forwarder": "SFF-bootstrap"
+ }
+ ]
+}
--- /dev/null
+{
+ "sff-sff-data-plane-locator": {
+ "ip": "10.1.1.1",
+ "port": 6000
+ }
+}
--- /dev/null
+{
+ "connected-sff-dictionary": [
+ {
+ "name": "SFF100",
+ "sff-interfaces": [
+ {
+ "sff-interface": "dpl-100"
+ }
+ ],
+ "sff-sff-data-plane-locator": {
+ "port": 6000,
+ "ip": "10.1.1.2"
+ },
+ "failmode": "service-function-forwarder:open"
+ }
+ ]
+}
--- /dev/null
+{
+ "sff-data-plane-locator": [
+ {
+ "name": "dpl-101",
+ "data-plane-locator": {
+ "ip": "192.168.1.1",
+ "port": 6101,
+ "transport": "service-locator:vxlan-gpe"
+ }
+ }
+ ]
+}
--- /dev/null
+{
+ "data-plane-locator": {
+ "ip": "192.168.1.1",
+ "port": 5000,
+ "transport": "service-locator:vxlan-gpe"
+ }
+}
--- /dev/null
+{
+ "service-function-path": [
+ {
+ "name": "SFC1-400",
+ "service-chain-name": "SFC1"
+ }
+ ]
+}
--- /dev/null
+{
+ "service-node": [
+ {
+ "name": "node-100",
+ "ip-mgmt-address": "10.3.1.100",
+ "service-function": [
+ "dpi-100-1",
+ "firewall-102-1"
+ ]
+ }
+ ]
+}