---
apiVersion: v1
kind: ConfigMap
metadata:
  name: sfc-controller-cfg
  namespace: csit
data:
  etcd.conf: |
    insecure-transport: true
    dial-timeout: 1000000000
    endpoints:
      - "172.17.0.1:22379"

  sfc.conf: |
    sfc_controller_config_version: 2
    description: $$TEST_NAME$$

    system_parameters:
      mtu: 9000

    network_pod_to_node_map:
      - pod: vnf1
        node: vswitch
      - pod: vnf2
        node: vswitch
      - pod: vnf3
        node: vswitch
      - pod: vnf4
        node: vswitch

    network_nodes:
      - metadata:
            name: vswitch
        spec:
            node_type: host
            interfaces:
            - name: $$VSWITCH_IF1$$
              if_type: ethernet
            - name: $$VSWITCH_IF2$$
              if_type: ethernet

    network_services:
      - metadata:
            name: my-network-service
        spec:
            network_pods:

              - metadata:
                  name: vnf1
                spec:
                  pod_type: vppcontainer
                  interfaces:
                    - name: port1
                      if_type: memif
                    - name: port2
                      if_type: memif

              - metadata:
                  name: vnf2
                spec:
                  pod_type: vppcontainer
                  interfaces:
                    - name: port1
                      if_type: memif
                    - name: port2
                      if_type: memif

              - metadata:
                  name: vnf3
                spec:
                  pod_type: vppcontainer
                  interfaces:
                    - name: port1
                      if_type: memif
                    - name: port2
                      if_type: memif

              - metadata:
                  name: vnf4
                spec:
                  pod_type: vppcontainer
                  interfaces:
                    - name: port1
                      if_type: memif
                    - name: port2
                      if_type: memif

            connections:

              - conn_type: l2mp # bridge eth1 to vnf1 port 1
                pod_interfaces:
                  - vnf1/port1
                node_interfaces:
                  - vswitch/$$VSWITCH_IF1$$
                l2bd:
                  name: eth1-vnf-port1
                  bd_parms:
                    flood: true
                    unknown_unicast_flood: true
                    forward: true
                    learn: true

              - conn_type: l2pp
                pod_interfaces: # l2x the ports on vnf1
                  - vnf1/port1
                  - vnf1/port2

              - conn_type: l2pp
                conn_method: vswitch
                pod_interfaces: # memif via vswitch between vnf1 to vnf2
                  - vnf1/port2
                  - vnf2/port1

              - conn_type: l2pp
                pod_interfaces: # l2x the ports on vnf2
                  - vnf2/port1
                  - vnf2/port2

              - conn_type: l2pp
                conn_method: vswitch
                pod_interfaces: # memif via vswitch between vnf2 to vnf3
                  - vnf2/port2
                  - vnf3/port1

              - conn_type: l2pp
                pod_interfaces: # l2x the ports on vnf3
                  - vnf3/port1
                  - vnf3/port2

              - conn_type: l2pp
                conn_method: vswitch
                pod_interfaces: # memif via vswitch between vnf3 to vnf4
                  - vnf3/port2
                  - vnf4/port1

              - conn_type: l2pp
                pod_interfaces: # l2x the ports on vnf4
                  - vnf4/port1
                  - vnf4/port2

              - conn_type: l2mp # bridge eth2 to vnf4 port 2
                pod_interfaces:
                  - vnf4/port2
                node_interfaces:
                  - vswitch/$$VSWITCH_IF2$$
                l2bd:
                  name: eth2-vnf-port2
                  bd_parms:
                    flood: true
                    unknown_unicast_flood: true
                    forward: true
                    learn: true