# 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-M1" # 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: "[DEPRECATED] JBoss Application Server 7"
        description: AS7 - an open source Java application server from JBoss
        deprecated: true
    - 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: "[DEPRECATED] JBoss Application Server 6"
        description: AS6 -  an open source Java application server from JBoss
        deprecated: true
    - 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
