# This file holds metadata about the capabilities of the tripleo-heat-templates
# repository for deployment using puppet. It groups configuration by topic,
# describes possible combinations of environments and resource capabilities.

# root_template: identifies repository's root template
# root_environment: identifies root_environment, this one is special in terms of
#   order in which the environments are merged before deploying. This one serves as
#   a base and it's parameters/resource_registry gets overridden by other environments
#   if used.

# topics:
# High Level grouping by purpose of environments
# Attributes:
#  title: (required)
#  description: (optional)
#  environment_groups: (required)

# environment_groups:
# Identifies an environment choice. If group includes multiple environments it
# indicates that environments in group are mutually exclusive.
# Attributes:
#  title: (optional)
#  description: (optional)
#  tags: a list of tags to provide additional information for e.g. filtering (optional)
#  environments: (required)

# environments:
# List of environments in environment group
# Attributes:
#  file: a file name including path within repository (required)
#  title: (required)
#  description: (optional)
#  requires: an array of environments which are required by this environment (optional)
#  resource_registry: [tbd] (optional)

# resource_registry:
# [tbd] Each environment can provide options on resource_registry level applicable
# only when that given environment is used. (resource_type of that environment can
# be implemented using multiple templates).

root_template: overcloud.yaml
root_environment: overcloud-resource-registry-puppet.yaml
topics:
  - title: Basic Configuration
    description:
    environment_groups:
      - title:
        description: Enable basic configuration required for OpenStack Deployment
        environments:
          - file: overcloud-resource-registry-puppet.yaml
            title: Default Configuration
            description:

  - title: Deployment options
    description:
    environment_groups:
      - title: High Availability
        description: Enables configuration of an Overcloud controller with Pacemaker
        environments:
          - file: environments/puppet-pacemaker.yaml
            title: Pacemaker
            description: Enable configuration of an Overcloud controller with Pacemaker
            requires:
              - overcloud-resource-registry-puppet.yaml
      - title: Docker RDO
        description: >
          Docker container with heat agents for containerized compute node
        environments:
          - file: environments/docker.yaml
            title: Docker RDO
            description:
            requires:
              - overcloud-resource-registry-puppet.yaml

  # - title: Network Interface Configuration
  #   description:
  #   environment_groups:

  - title: Overlay network Configuration
    description:
    environment_groups:
      - title: Network Isolation
        description: >
          Enable the creation of Neutron networks for
          isolated Overcloud traffic and configure each role to assign ports
          (related to that role) on these networks.
        environments:
          - file: environments/network-isolation.yaml
            title: Network Isolation
            description: Enable Network Isolation
            requires:
              - overcloud-resource-registry-puppet.yaml
      - title: Single nic or Bonding
        description: >
          Configure roles to use pair of bonded nics or to use Vlans on a
          single nic. This option assumes use of Network Isolation.
        environments:
          - file: environments/net-bond-with-vlans.yaml
            title: Bond with Vlans
            description: >
              Configure each role to use a pair of bonded nics (nic2 and
              nic3) and configures an IP address on each relevant isolated network
              for each role. This option assumes use of Network Isolation.
            requires:
              - environments/network-isolation.yaml
              - overcloud-resource-registry-puppet.yaml
          - file: environments/net-single-nic-with-vlans.yaml
            title: Single nic with Vlans
            description: >
              Configure each role to use Vlans on a single nic for
              each isolated network. This option assumes use of Network Isolation.
            requires:
              - environments/network-isolation.yaml
              - overcloud-resource-registry-puppet.yaml

  - title: Neutron Plugin Configuration
    description:
    environment_groups:
      - title: BigSwitch extensions or Cisco N1KV backend
        description:
        environments:
          - file: environments/neutron-ml2-bigswitch.yaml
            title: BigSwitch extensions
            description: >
              Enable Big Switch extensions, configured via puppet
            requires:
              - overcloud-resource-registry-puppet.yaml
          - file: environments/neutron-ml2-cisco-n1kv.yaml
            title: Cisco N1KV backend
            description: >
              Enable a Cisco N1KV backend, configured via puppet
            requires:
              - overcloud-resource-registry-puppet.yaml
      - title: Cisco Neutron plugin
        description: >
          Enable a Cisco Neutron plugin
        environments:
          - file: environments/neutron-ml2-cisco-nexus-ucsm.yaml
            title: Cisco Neutron plugin
            description:
            requires:
              - overcloud-resource-registry-puppet.yaml

  - title: Storage
    description:
    environment_groups:
      - title: Cinder NetApp backend
        description: >
          Enable a Cinder NetApp backend, configured via puppet
        environments:
          - file: environments/cinder-netapp-config.yaml
            title: Cinder NetApp backend
            description:
            requires:
              - overcloud-resource-registry-puppet.yaml
      - title: Externally managed Ceph
        description: >
          Enable the use of an externally managed Ceph cluster
        environments:
          - file: environments/puppet-ceph-external.yaml
            title: Externally managed Ceph
            description:
            requires:
              - overcloud-resource-registry-puppet.yaml
      - title: Ceph Devel
        description: >
          Enable a Ceph storage cluster using the controller and 2 ceph nodes.
          Rbd backends are enabled for Cinder, Glance, and Nova.
        environments:
          - file: environments/puppet-ceph-devel.yaml
            title: Ceph Devel
            description:
            requires:
              - overcloud-resource-registry-puppet.yaml
      - title: Storage Environment
        description: >
          Can be used to set up storage backends. Defaults to Ceph used as a
          backend for Cinder, Glance and Nova ephemeral storage. It configures
          for example which services will use Ceph, or if any of the services
          will use NFS. And more. Usually requires to be edited by user first.
        tags:
          - no-gui
        environments:
          - file: environments/storage-environment.yaml
            title: Storage Environment
            description:
            requires:
              - overcloud-resource-registry-puppet.yaml

  - title: Utilities
    description:
    environment_groups:
      - title: Config Debug
        description: Enable config management (e.g. Puppet) debugging
        environments:
          - file: environments/config-debug.yaml
            title: Config Debug
            description:
            requires:
              - overcloud-resource-registry-puppet.yaml
      - title: Disable journal in MongoDb
        description: >
          Since, when journaling is enabled, MongoDb will create big journal
          file it can take time. In a CI environment for example journaling is
          not necessary.
        environments:
          - file: environments/mongodb-nojournal.yaml
            title: Disable journal in MongoDb
            description:
            requires:
              - overcloud-resource-registry-puppet.yaml
      - title: Overcloud Steps
        description: >
          Specifies hooks/breakpoints where overcloud deployment should stop
          Allows operator validation between steps, and/or more granular control.
          Note: the wildcards relate to naming convention for some resource suffixes,
          e.g see puppet/*-post.yaml, enabling this will mean we wait for
          a user signal on every *Deployment_StepN resource defined in those files.
        tags:
          - no-gui
        environments:
          - file: environments/overcloud-steps.yaml
            title: Overcloud Steps
            description:
            requires:
              - overcloud-resource-registry-puppet.yaml