# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# curl -H "xos-username: admin@opencord.org" -H "xos-password: letmein" -X POST --data-binary @mcord-barcelona-fabric.yaml http://192.168.69.1:30007/run

tosca_definitions_version: tosca_simple_yaml_1_0
imports:
  - custom_types/switch.yaml
  - custom_types/switchport.yaml
  - custom_types/portinterface.yaml
  - custom_types/fabricipaddress.yaml
  - custom_types/site.yaml
  - custom_types/node.yaml
  - custom_types/vrouterservice.yaml
  - custom_types/vrouterserviceinstance.yaml

description: Configures the ONF SEBA POD with AT&T workflow

topology_template:
  node_templates:

    # Site deployment
    mySite:
      type: tosca.nodes.Site
      properties:
        name: mysite
        login_base: opencord
        abbreviated_name: ms
        site_url: http://opencord.org/
        hosts_nodes: true

    # compute nodes
    node#node1:
      type: tosca.nodes.Node
      properties:
        dataPlaneIntf: eth2
        dataPlaneIp: 118.0.0.201
        name: node1

    node#node2:
        type: tosca.nodes.Node
        properties:
          dataPlaneIntf: eth2
          dataPlaneIp: 118.0.0.202
          name: node2

    # static routes
    service#vrouter:
      type: tosca.nodes.VRouterService
      properties:
        name: vrouter
        must-exist: true

    vroutersi#calico:
      type: tosca.nodes.VRouterServiceInstance
      properties:
        name: calico
      requirements:
        - owner:
            node: service#vrouter
            relationship: tosca.relationships.BelongsToOne

    # Fabric configuration
    switch#leaf_1:
      type: tosca.nodes.Switch
      properties:
        driver: ofdpa3
        ipv4Loopback: 192.168.0.204
        ipv4NodeSid: 214
        isEdgeRouter: true
        name: Agg Switch
        ofId: of:0000000000000001
        routerMac: 54:87:de:ad:be:ef

    # Node1 Port
    port#node_1_port:
      type: tosca.nodes.SwitchPort
      properties:
        portId: 34
      requirements:
        - switch:
            node: switch#leaf_1
            relationship: tosca.relationships.BelongsToOne

    interface#port_1_interface:
      type: tosca.nodes.PortInterface
      properties:
        vlanUntagged: 20
        name: node_1
      requirements:
        - port:
            node: port#node_1_port
            relationship: tosca.relationships.BelongsToOne

    ip#port_1_sgi_net:
      type: tosca.nodes.FabricIpAddress
      properties:
        ip: 13.1.1.254/24
        description: node_1_sgi_net
      requirements:
        - interface:
            node: interface#port_1_interface
            relationship: tosca.relationships.BelongsToOne

    ip#port_1_s1u_net:
      type: tosca.nodes.FabricIpAddress
      properties:
        ip: 119.0.0.254/24
        description: node_1_s1u_net
      requirements:
        - interface:
            node: interface#port_1_interface
            relationship: tosca.relationships.BelongsToOne

    # Node2 Port
    port#node_2_port:
      type: tosca.nodes.SwitchPort
      properties:
        portId: 35
      requirements:
        - switch:
            node: switch#leaf_1
            relationship: tosca.relationships.BelongsToOne

    interface#port_2_interface:
      type: tosca.nodes.PortInterface
      properties:
        vlanUntagged: 20
        name: node_2
      requirements:
        - port:
            node: port#node_2_port
            relationship: tosca.relationships.BelongsToOne

    ip#port_2_sgi_net:
      type: tosca.nodes.FabricIpAddress
      properties:
        ip: 13.1.1.254/24
        description: node_2_sgi_net
      requirements:
        - interface:
            node: interface#port_2_interface
            relationship: tosca.relationships.BelongsToOne

    ip#port_2_s1u_net:
      type: tosca.nodes.FabricIpAddress
      properties:
        ip: 119.0.0.254/24
        description: node_2_s1u_net
      requirements:
        - interface:
            node: interface#port_2_interface
            relationship: tosca.relationships.BelongsToOne

    # Upstream Router Port
    port#node_ext_port:
      type: tosca.nodes.SwitchPort
      properties:
        portId: 40
      requirements:
        - switch:
            node: switch#leaf_1
            relationship: tosca.relationships.BelongsToOne

    interface#port_ext_interface:
      type: tosca.nodes.PortInterface
      properties:
        vlanUntagged: 20
        name: ext
      requirements:
        - port:
            node: port#node_ext_port
            relationship: tosca.relationships.BelongsToOne

    ip#port_ext_upstream:
      type: tosca.nodes.FabricIpAddress
      properties:
        ip: 11.0.0.254/24
        description: node_ext_upstream
      requirements:
        - interface:
            node: interface#port_ext_interface
            relationship: tosca.relationships.BelongsToOne

    ip#port_ext_sgi_net:
      type: tosca.nodes.FabricIpAddress
      properties:
        ip: 13.1.1.254/24
        description: port_ext_sgi_net
      requirements:
        - interface:
            node: interface#port_ext_interface
            relationship: tosca.relationships.BelongsToOne

    ip#port_ext_s1u_net:
      type: tosca.nodes.FabricIpAddress
      properties:
        ip: 119.0.0.254/24
        description: port_ext_s1u_net
      requirements:
        - interface:
            node: interface#port_ext_interface
            relationship: tosca.relationships.BelongsToOne
