# ============LICENSE_START==========================================
# ===================================================================
# Copyright (c) 2017 AT&T
#
# 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.
#============LICENSE_END============================================

tosca_definitions_version: cloudify_dsl_1_3

imports:
  - http://www.getcloudify.org/spec/cloudify/3.4.2/types.yaml
  - http://www.getcloudify.org/spec/fabric-plugin/1.5/plugin.yaml

inputs:
  # For agent, toggle to true.
  install_method:
    default: none # For fabric use false.
  ip:
  user:
    default: centos
  namespace_perfix:
    default: onap

node_types:
  cloudify.nodes.Helm:
    derived_from: cloudify.nodes.SoftwareComponent
    properties:
      cwd:
        default: /home/centos/oom/kubernetes/oneclick
      args:
        default:
        - onap
        - mso
    interfaces:
      cloudify.interfaces.lifecycle:
        # This is for fabric: # Run Anywhere.
        start:
          implementation: fabric.fabric_plugin.tasks.run_script
          inputs:
            script_path:
              default: helminstall.sh # Relative to the blueprint file.
            process:
              default: &process_vars
                cwd: { get_property: [ SELF, cwd ] }
                args: { get_property: [ SELF, args ] }
            fabric_env:
              default: &fabric_env
                user: { get_property: [ k8s_master, agent_config, user ] }
                host_string: { get_property: [ k8s_master, ip ] }
                key: { get_property: [ k8s_master, agent_config, key ] }
        stop:
          implementation: fabric.fabric_plugin.tasks.run_script
          inputs:
            script_path:
              default: helmdelete.sh
            process:
              default: *process_vars
            fabric_env:
              default: *fabric_env

node_templates:

  k8s_master:
     type: cloudify.nodes.Compute
     properties:
       ip: { get_input: ip }
       agent_config:
         install_method: { get_input: install_method } # False for Fabric.
         key: { get_secret: agent_key_private }
         user: { get_input: user }

  consul:
     type: cloudify.nodes.Helm
     properties:
       args:
       - { get_input: namespace_perfix }
       - consul
     relationships:
       - type: cloudify.relationships.connected_to
         target: k8s_master

  msb:
     type: cloudify.nodes.Helm
     properties:
       args:
       - { get_input: namespace_perfix }
       - msb
     relationships:
       - type: cloudify.relationships.connected_to
         target: k8s_master


  mso:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - mso
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  appc:
     type: cloudify.nodes.Helm
     properties:
       args:
       - { get_input: namespace_perfix }
       - appc
     relationships:
       - type: cloudify.relationships.connected_to
         target: k8s_master

  message-router:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - message-router
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  sdnc:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - sdnc
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  vid:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - vid
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  robot:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - robot
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  policy:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - policy
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  portal:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - portal
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  aai:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - aai
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  sdc:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - sdc
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  log:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - log
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  cli:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - cli
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  multicloud:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - multicloud
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  clamp:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - clamp
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  vnfsdk:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - vnfsdk
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  uui:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - uui
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  aaf:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - aaf
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master

  vfc:
    type: cloudify.nodes.Helm
    properties:
      args:
      - { get_input: namespace_perfix }
      - vfc
    relationships:
      - type: cloudify.relationships.connected_to
        target: k8s_master
