tosca_definitions_version: tosca_simple_yaml_1_0_0
description: >
  This module defines a VNF Deployment Unit.

metadata:
  template_name: clearwater
  template_author: HP

dsl_definitions:
  compute_props_host_ellis: &compute_props_host_ellis
    num_cpu: 4
    mem_size: 4096
  compute_props_host_bono: &compute_props_host_bono
    num_cpu: 3
    mem_size: 2048

node_types:
  tosca.nodes.compute.ellis:
    derived_from: tosca.nodes.compute

  tosca.nodes.compute.bono:
    derived_from: tosca.nodes.compute

topology_template:
  # a description of the topology template
  description: >


  inputs:
   storage_size:
     type: scalar-unit.size
     default: 2048 M
     description: The required storage resource

   storage_location:
     type: string
     description: >
       Block storage mount point (filesystem path).

  node_templates:
    ellis:
      type: tosca.nodes.compute.ellis
      capabilities:
        host:
          properties: *compute_props_host_ellis
        scalable:
          properties:
            min_instances: 1
            default_instances: 1
      requirements:
        - local_storage:
            node: ellis_BlockStorage
            relationship:
              type: AttachesTo
                properties:
                  location: { get_input: storage_location }
      interfaces:
        Standard:
          start:
            implementation: start.sh
          delete:
            implementaion: stop.sh
          stop:
            implementaion: shutdown.sh

    ellis_BlockStorage:
      type: tosca.nodes.BlockStorage
      properties:
        size: { get_input: storage_size }

    bono:
      type: tosca.nodes.compute.bono
      capabilities:
        host:
          properties: *compute_props_host_bono
        scalable:
          properties:
            min_instances: 3
            default_instances: 3
      requirements:
        - local_storage:
            node: bono_BlockStorage
            relationship:
              type: AttachesTo
                properties:
                  location: { get_input: storage_location }
      interfaces:
        Standard:
          start:
            implementation: start.sh
          delete:
            implementaion: stop.sh
          stop:
            implementaion: shutdown.sh

    bono_BlockStorage:
      type: tosca.nodes.BlockStorage
      properties:
        size: { get_input: storage_size }

    clearwater_network1:
      type: tosca.nodes.network.Network
      properties:
        ip_version: 4

    ellis_port1:
      type: tosca.nodes.network.Port
      requirements:
        - binding:
            node: ellis
        - link:
            node: clearwater_network1

    clearwater_network2:
      type: tosca.nodes.network.Network
      properties:
        ip_version: 4

    ellis_port2:
      type: tosca.nodes.network.Port
      requirements:
        - binding:
            node: ellis
        - link:
            node: clearwater_network2

    clearwater_network1:
      type: tosca.nodes.network.Network
      properties:
        ip_version: 4

    bono_port1:
      type: tosca.nodes.network.Port
      requirements:
        - binding:
            node: bono
        - link:
            node: clearwater_network1

    clearwater_network2:
      type: tosca.nodes.network.Network
      properties:
        ip_version: 4

    bono_port2:
      type: tosca.nodes.network.Port
      requirements:
        - binding:
            node: bono
        - link:
            node: clearwater_network2