tosca_definitions_version: tosca_simple_yaml_1_0

description: Setup CORD-related services -- vOLT, vCPE, vBNG.

imports:
   - custom_types/xos.yaml

topology_template:
  node_templates:
    ONOS:
      type: tosca.nodes.ONOSService
      requirements:
      properties:
          kind: onos
          view_url: /admin/onos/onosservice/$id$/
          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
      artifacts:
          pubkey: /opt/xos/synchronizers/onos/onos_key.pub

    vBNG:
      type: tosca.nodes.ONOSvBNGApp
      requirements:
          - onos_tenant:
              node: ONOS
              relationship: tosca.relationships.TenantOfService
      properties:
          dependencies: org.onosproject.proxyarp, org.onosproject.virtualbng, org.onosproject.openflow, org.onosproject.fwd
          config_addresses.json: >
            {
                "addresses" : [
                            {
                                "dpid" : "00:00:00:00:00:00:00:a1",
                                "port" : "2",
                                "ips" : ["192.0.0.1/24"],
                                "mac" : "00:00:00:00:00:99"

                            },
                            {
                                "dpid" : "00:00:00:00:00:00:00:a5",
                                "port" : "4",
                                "ips" : ["200.0.0.5/24"],
                                "mac" : "00:00:00:00:00:98"
                            }
                ]
            }
          config_virtualbng.json: >
            {
                "localPublicIpPrefixes" : [
                    "200.0.0.0/32",
                    "201.0.0.0/30",
                    "202.0.0.0/30"
                ],
                "nextHopIpAddress" : "200.0.0.5",
                "publicFacingMac" : "00:00:00:00:00:66",
                "xosIpAddress" : "10.11.10.1",
                "xosRestPort" : "9999"
            }

    vOLT:
      type: tosca.nodes.ONOSvOLTApp
      requirements:
          - onos_tenant:
              node: ONOS
              relationship: tosca.relationships.TenantOfService
      properties:
          dependencies: org.onosproject.olt

    mysite:
      type: tosca.nodes.Site

    mysite_onos:
      description: ONOS Controller Slice
      type: tosca.nodes.Slice
      requirements:
          - ONOS:
              node: ONOS
              relationship: tosca.relationships.MemberOfService
          - site:
              node: mysite
              relationship: tosca.relationships.MemberOfSite

    my_server:
      type: tosca.nodes.Compute
      capabilities:
        # Host container properties
        host:
         properties:
           num_cpus: 1
           disk_size: 10 GB
           mem_size: 4 MB
        # Guest Operating System properties
        os:
          properties:
            # host Operating System image properties
            architecture: x86_64
            type: linux
            distribution: Ubuntu
            version: 14.10
      requirements:
          - slice:
                node: mysite_onos
                relationship: tosca.relationships.MemberOfSlice
