---

# Copyright 2018-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 recipe for adding a sample R-CORD subscriber
#
# http POST $(minikube service xos-tosca --url)/run \
#  xos-username:admin@opencord.org xos-password:letmein \
#  @./openstack-tosca.yaml

tosca_definitions_version: tosca_simple_yaml_1_0

imports:
  - custom_types/controller.yaml
  - custom_types/controllersite.yaml
  - custom_types/deployment.yaml
  - custom_types/flavor.yaml
  - custom_types/image.yaml
  - custom_types/site.yaml
  - custom_types/networktemplate.yaml
  - custom_types/network.yaml
  - custom_types/networkslice.yaml
  - custom_types/slice.yaml
  - custom_types/sitedeployment.yaml

description: openstack extensions to deployment

topology_template:
  node_templates:

# Images and flavors
    Cirros-0.3.5:
      type: tosca.nodes.Image
      properties:
        name: "Cirros 0.3.5 64-bit"
        disk_format: QCOW2
        container_format: BARE

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

    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


    MyDeployment:
      type: tosca.nodes.Deployment
      properties:
        name: MyDeployment

# OpenStack Controller
    mysite_MyDeployment_openstack:
      type: tosca.nodes.Controller
      requirements:
        - deployment:
            node: MyDeployment
            relationship: tosca.relationships.BelongsToOne
      properties:
          name: mysite_MyDeployment_openstack
          backend_type: OpenStack
          version: Newton
          auth_url: http://keystone.openstack.svc.cluster.local/v3
          admin_user: admin
          admin_password: password
          admin_tenant: admin
          domain: Default

# Site - adds openstack controller to site defined in deployment.yaml
    mysite:
      type: tosca.nodes.Site
      properties:
          name: mysite
          must-exist: true
          site_url: http://mysite.opencloud.us/
          hosts_nodes: true

    mysite_deployment_MyDeployment:
        type: tosca.nodes.SiteDeployment
        requirements:
            - site:
                node: mysite
                relationship: tosca.relationships.BelongsToOne
            - deployment:
                node: MyDeployment
                relationship: tosca.relationships.BelongsToOne
            - controller:
                node: mysite_MyDeployment_openstack
                relationship: tosca.relationships.BelongsToOne

    mysite_openstack_controller:
        type: tosca.nodes.ControllerSite
        requirements:
            - site:
                node: mysite
                relationship: tosca.relationships.BelongsToOne
            - controller:
                node: mysite_MyDeployment_openstack
                relationship: tosca.relationships.BelongsToOne


# For creating a test VM
    mysite_test:
      description: Test Slice
      type: tosca.nodes.Slice
      properties:
        # network: noauto
        name: mysite_test
      requirements:
        - site:
            node: mysite
            relationship: tosca.relationships.BelongsToOne
        - default_image:
            node: Cirros-0.3.5
            relationship: tosca.relationships.BelongsToOne


# For private networks (e.g., per-slice)
    private_template:
      type: tosca.nodes.NetworkTemplate
      properties:
        name: Private
        visibility: private
        translation: none
        vtn_kind: PRIVATE
