
{#
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: Setup a generic slice on the pod

imports:
   - custom_types/xos.yaml

topology_template:
  node_templates:

    management:
      type: tosca.nodes.network.Network.XOS
      properties:
          no-create: true
          no-delete: true
          no-update: true

    public:
      type: tosca.nodes.network.Network.XOS
      properties:
          no-create: true
          no-delete: true
          no-update: true

    {{ local_site }}:
      type: tosca.nodes.Site

    {{ image }}:
      type: tosca.nodes.Image

    {{ local_site }}_{{ slice_name }}:
      description: {{ slice_description }}
      type: tosca.nodes.Slice
      properties:
          network: noauto
      requirements:
          - site:
              node: {{ local_site }}
              relationship: tosca.relationships.MemberOfSite
          - management:
              node: management
              relationship: tosca.relationships.ConnectsToNetwork
          - public:
              node: public
              relationship: tosca.relationships.ConnectsToNetwork
          - image:
              node: {{ image }}
              relationship: tosca.relationships.DefaultImage
