
# 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.


tosca_definitions_version: tosca_simple_yaml_1_0

description: Some basic fixtures

imports:
  - custom_types/flavor.yaml
  - custom_types/siterole.yaml
  - custom_types/slicerole.yaml
  - custom_types/networkparametertype.yaml
  - custom_types/networktemplate.yaml

topology_template:
  node_templates:

# -----------------------------------------------------------------------------
# Network Parameter Types
# -----------------------------------------------------------------------------

    s_tag:
      type: tosca.nodes.NetworkParameterType
      properties:
        name: s_tag
    c_tag:
      type: tosca.nodes.NetworkParameterType
      properties:
        name: c_tag

    next_hop:
      type: tosca.nodes.NetworkParameterType
      properties:
        name: next_hop

    device:
      type: tosca.nodes.NetworkParameterType
      properties:
        name: device

    bridge:
      type: tosca.nodes.NetworkParameterType
      properties:
        name: bridge

    neutron_port_name:
      type: tosca.nodes.NetworkParameterType
      properties:
        name: neutron_port_name

# ----------------------------------------------------------------------------
# Roles
# ----------------------------------------------------------------------------

    siterole#admin:
      type: tosca.nodes.SiteRole
      properties:
        role: admin

    siterole#pi:
      type: tosca.nodes.SiteRole
      properties:
        role: pi

    siterole#tech:
      type: tosca.nodes.SiteRole
      properties:
        role: tech

    slicerole#admin:
      type: tosca.nodes.SliceRole
      properties:
        role: admin

    slicerole#access:
      type: tosca.nodes.SliceRole
      properties:
        role: access

# -----------------------------------------------------------------------------
# Flavors
# -----------------------------------------------------------------------------

    m1.small:
      type: tosca.nodes.Flavor
      properties:
        name: m1.small

    m1.medium:
      type: tosca.nodes.Flavor
      properties:
        name: m1.medium

    m1.large:
      type: tosca.nodes.Flavor
      properties:
        name: m1.large

    m1.xlarge:
      type: tosca.nodes.Flavor
      properties:
        name: m1.xlarge

# -----------------------------------------------------------------------------
# Network Templates
# -----------------------------------------------------------------------------

    Private:
      type: tosca.nodes.NetworkTemplate
      properties:
        name: Private
        visibility: private
        translation: none

    Public shared IPv4:
      type: tosca.nodes.NetworkTemplate
      properties:
        name: Public shared IPv4
        visibility: private
        translation: NAT
        shared_network_name: nat-net

    Public dedicated IPv4:
      type: tosca.nodes.NetworkTemplate
      properties:
        name: Public dedicated IPv4
        visibility: public
        translation: none
        shared_network_name: ext-net

