# 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: "0.12.0" # BROOKLYN_VERSION
    itemType: entity
    items:
    - id: org.apache.brooklyn.entity.nosql.redis.RedisStore
      item:
        type: org.apache.brooklyn.entity.nosql.redis.RedisStore
        name: Redis Server
        description: Redis is an open-source, networked, in-memory, key-value data store with optional durability
    - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBRouterCluster
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBRouterCluster
        name: MongoDB Router Cluster
    - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraDatacenter
      item:
        type: org.apache.brooklyn.entity.nosql.cassandra.CassandraDatacenter
        name: Apache Cassandra Datacenter Cluster
        description: Cassandra is a highly scalable, eventually 
    - id: org.apache.brooklyn.entity.nosql.solr.SolrServer
      item:
        type: org.apache.brooklyn.entity.nosql.solr.SolrServer
        name: Apache Solr Node
        description: Solr is the popular, blazing fast open source enterprise search 
    - id: org.apache.brooklyn.entity.nosql.couchdb.CouchDBNode
      item:
        type: org.apache.brooklyn.entity.nosql.couchdb.CouchDBNode
        name: CouchDB Node
    - id: org.apache.brooklyn.entity.nosql.redis.RedisShard
      item:
        type: org.apache.brooklyn.entity.nosql.redis.RedisShard
        name: Redis Shard
    - id: org.apache.brooklyn.entity.nosql.redis.RedisCluster
      item:
        type: org.apache.brooklyn.entity.nosql.redis.RedisCluster
        name: Redis Cluster
        description: Redis is an open-source, networked, in-memory, key-value data store with optional durability
    - id: org.apache.brooklyn.entity.nosql.hazelcast.HazelcastCluster
      item:
        type: org.apache.brooklyn.entity.nosql.hazelcast.HazelcastCluster
        name: Hazelcast Cluster
        description: Hazelcast is a clustering and highly scalable data distribution platform for Java.
    - id: org.apache.brooklyn.entity.nosql.couchdb.CouchDBCluster
      item:
        type: org.apache.brooklyn.entity.nosql.couchdb.CouchDBCluster
        name: CouchDB Cluster
    - id: org.apache.brooklyn.entity.nosql.couchbase.CouchbaseNode
      item:
        type: org.apache.brooklyn.entity.nosql.couchbase.CouchbaseNode
        name: CouchBase Node
        description: Couchbase Server is an open source, distributed (shared-nothing architecture) 
    - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardedDeployment
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardedDeployment
        name: MongoDB Sharded Deployment
    - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraNode
      item:
        type: org.apache.brooklyn.entity.nosql.cassandra.CassandraNode
        name: Apache Cassandra Node
        description: Cassandra is a highly scalable, eventually 
    - id: org.apache.brooklyn.entity.nosql.riak.RiakNode
      item:
        type: org.apache.brooklyn.entity.nosql.riak.RiakNode
        name: Riak Node
        description: Riak is a distributed NoSQL key-value data store that offers 
    - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServerCluster
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServerCluster
        name: MongoDB Config Server Cluster
    - id: org.apache.brooklyn.entity.nosql.mongodb.MongoDBServer
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.MongoDBServer
        name: MongoDB Server
    - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter
        name: MongoDB Router
    - id: org.apache.brooklyn.entity.nosql.mongodb.MongoDBReplicaSet
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.MongoDBReplicaSet
        name: MongoDB Replica Set
    - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardCluster
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardCluster
        name: MongoDB Shard Cluster
    - id: org.apache.brooklyn.entity.nosql.mongodb.MongoDBClient
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.MongoDBClient
        name: MongoDB Client
    - id: org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchNode
      item:
        type: org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchNode
        name: Elastic Search Node
        description: Elasticsearch is an open-source search server based on Lucene. 
    - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraFabric
      item:
        type: org.apache.brooklyn.entity.nosql.cassandra.CassandraFabric
        name: Apache Cassandra Database Fabric
        description: Cassandra is a highly scalable, eventually 
    - id: org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster
      item:
        type: org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster
        name: Elastic Search Cluster
        description: Elasticsearch is an open-source search server based on Lucene. 
    - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraCluster
      item:
        type: org.apache.brooklyn.entity.nosql.cassandra.CassandraCluster
        name: Cassandra Cluster
    - id: org.apache.brooklyn.entity.nosql.redis.RedisSlave
      item:
        type: org.apache.brooklyn.entity.nosql.redis.RedisSlave
        name: Redis Slave
    - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServer
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServer
        name: MongoDB Config Server
    - id: org.apache.brooklyn.entity.nosql.couchbase.CouchbaseCluster
      item:
        type: org.apache.brooklyn.entity.nosql.couchbase.CouchbaseCluster
        name: CouchBase Cluster
        description: Couchbase is an open source, distributed (shared-nothing architecture) 
    - id: org.apache.brooklyn.entity.nosql.couchbase.CouchbaseSyncGateway
      item:
        type: org.apache.brooklyn.entity.nosql.couchbase.CouchbaseSyncGateway
        name: Couchbase Sync Gateway
    - id: org.apache.brooklyn.entity.nosql.hazelcast.HazelcastNode
      item:
        type: org.apache.brooklyn.entity.nosql.hazelcast.HazelcastNode
        name: Hazelcast Node
        description: Hazelcast is a clustering and highly scalable data distribution platform for Java.
    - id: org.apache.brooklyn.entity.nosql.riak.RiakCluster
      item:
        type: org.apache.brooklyn.entity.nosql.riak.RiakCluster
        name: Riak Cluster
        description: Riak is a distributed NoSQL key-value data store that offers 
    - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.CoLocatedMongoDBRouter
      item:
        type: org.apache.brooklyn.entity.nosql.mongodb.sharding.CoLocatedMongoDBRouter
        name: Co-located MongoDB Router


    - id: bash-web-and-riak-template
      itemType: template
      name: "Template: Bash Web Server and Scaling Riak Cluster"
      description: |
        Sample YAML building on Template bash-web-server-template,
        composing that blueprint with a Riak cluster and injecting the URL
      item:
        name: Bash Web Server and Riak Cluster (Brooklyn Example)

        # this example *references* the previous one,
        # combining it with a stock blueprint for a Riak cluster,
        # and shows how a sensor from the latter can be injected

        services:

        # reference template bash-web-server-template, overriding message to point at riak
        - type:           bash-web-server-template
          brooklyn.config:
            my.message:   $brooklyn:formatString("connected to Riak at %s",
                              $brooklyn:entity("riak-cluster").attributeWhenReady("main.uri"))
          # and clear the location defined there so it is taken from this template
          locations:      []

        # use the off-the-shelf Riak cluster
        - type:           org.apache.brooklyn.entity.nosql.riak.RiakCluster
          id:             riak-cluster
          initialSize:    3
          # and add a policy to scale based on ops per minute
          brooklyn.policies:
          - type: org.apache.brooklyn.policy.autoscaling.AutoScalerPolicy
            brooklyn.config:
              metric: riak.node.ops.1m.perNode
              # more than 100 ops per second (6k/min) scales out, less than 50 scales back
              # up to a max of 8 riak nodes here (can be changed in GUI / REST API afterwards)
              metricLowerBound: 3000
              metricUpperBound: 6000
              minPoolSize: 3
              maxPoolSize: 8
              resizeUpStabilizationDelay: 30s
              resizeDownStabilizationDelay: 5m

        location:
          jclouds:aws-ec2:
            region:       eu-central-1
            # edit these (or delete if credentials specified in brooklyn.properties)
            identity:     <REPLACE>
            credential:   <REPLACE>
