# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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.

# this catalog bom contains some convenient aliases for simple usage.
brooklyn.catalog:
  version: "1.0.0-SNAPSHOT"  # BROOKLYN_VERSION
  itemType: entity

  items:
  - id: server
    iconUrl: classpath://brooklyn/icons/server.svg
    description: |
      Provision a server, with customizable provisioning.properties and credentials installed,
      but no other special software process or scripts executed.
    item:
      type: org.apache.brooklyn.entity.software.base.EmptySoftwareProcess
      name: Server
      iconUrl: classpath://brooklyn/icons/server.svg

  - id: vanilla-bash-server
    description: |
      Provision a server, with customizable provisioning.properties and credentials installed,
      but no other special software process or scripts executed.
      The script should be supplied in "launch.command" as per docs on
      org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess.
    item:
      type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
      name: Server with Launch Script (bash)

  - id: load-balancer
    description: |
      Create a load balancer which will point at members in the group entity
      referred to by the config key "serverPool".
      The sensor advertising the port can be configured with the "member.sensor.portNumber" config key,
      defaulting to `http.port`; all member entities which have published "service.up" will then be picked up.
    item:
      type: org.apache.brooklyn.entity.proxy.nginx.NginxController
      name: Load Balancer (nginx)

  - id: cluster
    iconUrl: classpath://brooklyn/icons/cluster.svg
    description: |
      Create a cluster of entities, resizable, with starting size "initialSize",
      and using a spec supplied in the "memberSpec" key.
    item:
      type: org.apache.brooklyn.entity.group.DynamicCluster
      iconUrl: classpath://brooklyn/icons/cluster.svg

