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

# Default values for the base-openstack profile.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

replicaCount: 1

nameOverride: ""
fullnameOverride: ""

imagePullPolicy: 'Always'

httpieImage: "clue/httpie:latest"

xosAdminUser: "admin@opencord.org"
xosAdminPassword: "letmein"

cordSiteName:  &site "mysite"
cordDeploymentName: &deployment "mydeployment"

keystoneAdminUser: "admin"
keystoneAdminPassword: "password"
keystoneAdminTenant: "admin"
keystoneDomain: "Default"

# TOSCA recipes for the tosca-loader
toscaRecipes:
  openstackCompute:
    tosca_definitions_version: tosca_simple_yaml_1_0

    imports:
      - custom_types/deployment.yaml
      - custom_types/node.yaml
      - custom_types/site.yaml
      - custom_types/sitedeployment.yaml

    description: Adds OpenStack compute nodes

    topology_template:
      node_templates:

    # Site/Deployment, fully defined in deployment.yaml
        site:
          type: tosca.nodes.Site
          properties:
            name: *site
            must-exist: true

        deployment:
          type: tosca.nodes.Deployment
          properties:
            name: *deployment
            must-exist: true

        site_deployment:
          type: tosca.nodes.SiteDeployment
          requirements:
            - site:
                node: site
                relationship: tosca.relationships.BelongsToOne
            - deployment:
                node: deployment
                relationship: tosca.relationships.BelongsToOne

    # OpenStack compute nodes

        head1:
          type: tosca.nodes.Node
          properties:
            name: head1
            bridgeId: of:00000000abcdef01
            dataPlaneIntf: fabricbridge
            dataPlaneIp: 10.6.1.1/24
          requirements:
            - site_deployment:
                node:  site_deployment
                relationship: tosca.relationships.BelongsToOne

        compute1:
          type: tosca.nodes.Node
          properties:
            name: compute1
            bridgeId: of:00000000abcdef02
            dataPlaneIntf: fabricbond
            dataPlaneIp: 10.6.1.17/24
          requirements:
            - site_deployment:
                node:  site_deployment
                relationship: tosca.relationships.BelongsToOne

        compute2:
          type: tosca.nodes.Node
          properties:
            name: compute2
            bridgeId: of:00000000abcdef03
            dataPlaneIntf: fabricbond
            dataPlaneIp: 10.6.1.18/24
          requirements:
            - site_deployment:
                node:  site_deployment
                relationship: tosca.relationships.BelongsToOne
