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

brooklyn.catalog:
    version: "1.0.0-SNAPSHOT" # BROOKLYN_VERSION
    itemType: entity
    items:
    - id: org.apache.brooklyn.entity.webapp.nodejs.NodeJsWebAppService
      iconUrl: classpath:///nodejs-logo.png
      item:
        type: org.apache.brooklyn.entity.webapp.nodejs.NodeJsWebAppService
        name: Node.JS Application
    - id: org.apache.brooklyn.entity.webapp.jboss.JBoss7Server
      iconUrl: classpath:///jboss_logo.png
      item:
        type: org.apache.brooklyn.entity.webapp.jboss.JBoss7Server
        name: JBoss Application Server 7
        description: AS7 - an open source Java application server from JBoss
    - id: org.apache.brooklyn.entity.proxy.nginx.UrlMapping
      item:
        type: org.apache.brooklyn.entity.proxy.nginx.UrlMapping
        name: URL Mapping
    - id: org.apache.brooklyn.entity.webapp.DynamicWebAppFabric
      item:
        type: org.apache.brooklyn.entity.webapp.DynamicWebAppFabric
        name: Dynamic Web App Fabric
    - id: org.apache.brooklyn.entity.proxy.nginx.NginxController
      iconUrl: classpath:///nginx-logo.jpeg
      item:
        type: org.apache.brooklyn.entity.proxy.nginx.NginxController
        name: Nginx Server
        description: A single Nginx server. Provides HTTP and reverse proxy services
    - id: org.apache.brooklyn.entity.webapp.jboss.JBoss6Server
      iconUrl: classpath:///jboss_logo.png
      item:
        type: org.apache.brooklyn.entity.webapp.jboss.JBoss6Server
        name: JBoss Application Server 6
        description: AS6 -  an open source Java application server from JBoss
    - id: org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server
      iconUrl: classpath:///tomcat-logo.png
      item:
        type: org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server
        name: Tomcat 8 Server
    - id: org.apache.brooklyn.entity.proxy.LoadBalancerCluster
      item:
        type: org.apache.brooklyn.entity.proxy.LoadBalancerCluster
        name: Load-balanced Cluster
        description: |
          A cluster of load balancers; configuring the cluster (through the LoadBalancer interface)
          will configure all load balancers in the cluster.
    - id: org.apache.brooklyn.entity.webapp.jetty.Jetty6Server
      iconUrl: classpath:///jetty-logo.png
      item:
        type: org.apache.brooklyn.entity.webapp.jetty.Jetty6Server
        name: Jetty6 Server
        description: Old version (v6 @ Mortbay) of the popular Jetty webapp container
    - id: org.apache.brooklyn.entity.webapp.DynamicWebAppCluster
      item:
        type: org.apache.brooklyn.entity.webapp.DynamicWebAppCluster
        name: Dynamic Web-app Cluster
        description: A cluster of web-apps, which can be dynamically re-sized; this does not include a load-balancer
    - id: org.apache.brooklyn.entity.webapp.tomcat.TomcatServer
      iconUrl: classpath:///tomcat-logo.png
      item:
        type: org.apache.brooklyn.entity.webapp.tomcat.TomcatServer
        name: Tomcat 7 Server
    - id: org.apache.brooklyn.entity.dns.geoscaling.GeoscalingDnsService
      iconUrl: classpath:///geoscaling-logo.gif
      item:
        type: org.apache.brooklyn.entity.dns.geoscaling.GeoscalingDnsService
        name: Geoscaling DNS Service
        description: A geo-DNS service using geoscaling.com
    - id: org.apache.brooklyn.entity.webapp.ControlledDynamicWebAppCluster
      item:
        type: org.apache.brooklyn.entity.webapp.ControlledDynamicWebAppCluster
        name: Controlled Dynamic Web-app Cluster
        description: A cluster of load-balanced web-apps, which can be dynamically re-sized
