http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-2.0.yaml
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-2.0.yaml
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-2.0.yaml
new file mode 100644
index 0000000..518379c
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-2.0.yaml
@@ -0,0 +1,688 @@
+[#ftl]
+#
+# Cassandra storage config YAML 
+
+# NOTE:
+#   See http://wiki.apache.org/cassandra/StorageConfiguration for
+#   full explanations of configuration directives
+# /NOTE
+
+# The name of the cluster. This is mainly used to prevent machines in
+# one logical cluster from joining another.
+cluster_name: '${entity.clusterName}'
+
+# This defines the number of tokens randomly assigned to this node on the ring
+# The more tokens, relative to other nodes, the larger the proportion of data
+# that this node will store. You probably want all nodes to have the same 
number
+# of tokens assuming they have equal hardware capability.
+#
+# If you leave this unspecified, Cassandra will use the default of 1 token for 
legacy compatibility,
+# and will use the initial_token as described below.
+#
+# Specifying initial_token will override this setting.
+#
+# If you already have a cluster with 1 token per node, and wish to migrate to 
+# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations
+num_tokens: ${entity.numTokensPerNode?c}
+
+# initial_token allows you to specify tokens manually.  While you can use it 
with
+# vnodes (num_tokens > 1, above) -- in which case you should provide a 
+# comma-separated list -- it's primarily used when adding nodes to legacy 
clusters 
+# that do not have vnodes enabled.
+# initial_token: ${entity.tokensAsString}
+
+# May either be "true" or "false" to enable globally, or contain a list
+# of data centers to enable per-datacenter.
+# hinted_handoff_enabled: DC1,DC2
+# See http://wiki.apache.org/cassandra/HintedHandoff
+hinted_handoff_enabled: true
+# this defines the maximum amount of time a dead host will have hints
+# generated.  After it has been dead this long, new hints for it will not be
+# created until it has been seen alive and gone down again.
+max_hint_window_in_ms: 10800000 # 3 hours
+# Maximum throttle in KBs per second, per delivery thread.  This will be
+# reduced proportionally to the number of nodes in the cluster.  (If there
+# are two nodes in the cluster, each delivery thread will use the maximum
+# rate; if there are three, each will throttle to half of the maximum,
+# since we expect two nodes to be delivering hints simultaneously.)
+hinted_handoff_throttle_in_kb: 1024
+# Number of threads with which to deliver hints;
+# Consider increasing this number when you have multi-dc deployments, since
+# cross-dc handoff tends to be slower
+max_hints_delivery_threads: 2
+
+# Maximum throttle in KBs per second, total. This will be
+# reduced proportionally to the number of nodes in the cluster.
+batchlog_replay_throttle_in_kb: 1024
+
+# Authentication backend, implementing IAuthenticator; used to identify users
+# Out of the box, Cassandra provides 
org.apache.cassandra.auth.{AllowAllAuthenticator,
+# PasswordAuthenticator}.
+#
+# - AllowAllAuthenticator performs no checks - set it to disable 
authentication.
+# - PasswordAuthenticator relies on username/password pairs to authenticate
+#   users. It keeps usernames and hashed passwords in system_auth.credentials 
table.
+#   Please increase system_auth keyspace replication factor if you use this 
authenticator.
+authenticator: AllowAllAuthenticator
+
+# Authorization backend, implementing IAuthorizer; used to limit 
access/provide permissions
+# Out of the box, Cassandra provides 
org.apache.cassandra.auth.{AllowAllAuthorizer,
+# CassandraAuthorizer}.
+#
+# - AllowAllAuthorizer allows any action to any user - set it to disable 
authorization.
+# - CassandraAuthorizer stores permissions in system_auth.permissions table. 
Please
+#   increase system_auth keyspace replication factor if you use this 
authorizer.
+authorizer: AllowAllAuthorizer
+
+# Validity period for permissions cache (fetching permissions can be an
+# expensive operation depending on the authorizer, CassandraAuthorizer is
+# one example). Defaults to 2000, set to 0 to disable.
+# Will be disabled automatically for AllowAllAuthorizer.
+permissions_validity_in_ms: 2000
+
+# The partitioner is responsible for distributing groups of rows (by
+# partition key) across nodes in the cluster.  You should leave this
+# alone for new clusters.  The partitioner can NOT be changed without
+# reloading all data, so when upgrading you should set this to the
+# same partitioner you were already using.
+#
+# Besides Murmur3Partitioner, partitioners included for backwards
+# compatibility include RandomPartitioner, ByteOrderedPartitioner, and
+# OrderPreservingPartitioner.
+#
+partitioner: org.apache.cassandra.dht.Murmur3Partitioner
+
+# Directories where Cassandra should store data on disk.  Cassandra
+# will spread data evenly across them, subject to the granularity of
+# the configured compaction strategy.
+data_file_directories:
+    - ${driver.runDir}/data
+
+# commit log
+commitlog_directory: ${driver.runDir}/commitlog
+
+# policy for data disk failures:
+# stop_paranoid: shut down gossip and Thrift even for single-sstable errors.
+# stop: shut down gossip and Thrift, leaving the node effectively dead, but
+#       can still be inspected via JMX.
+# best_effort: stop using the failed disk and respond to requests based on
+#              remaining available sstables.  This means you WILL see obsolete
+#              data at CL.ONE!
+# ignore: ignore fatal errors and let requests fail, as in pre-1.2 Cassandra
+disk_failure_policy: stop
+
+# policy for commit disk failures:
+# stop: shut down gossip and Thrift, leaving the node effectively dead, but
+#       can still be inspected via JMX.
+# stop_commit: shutdown the commit log, letting writes collect but 
+#              continuing to service reads, as in pre-2.0.5 Cassandra
+# ignore: ignore fatal errors and let the batches fail
+commit_failure_policy: stop
+
+# Maximum size of the key cache in memory.
+#
+# Each key cache hit saves 1 seek and each row cache hit saves 2 seeks at the
+# minimum, sometimes more. The key cache is fairly tiny for the amount of
+# time it saves, so it's worthwhile to use it at large numbers.
+# The row cache saves even more time, but must contain the entire row,
+# so it is extremely space-intensive. It's best to only use the
+# row cache if you have hot rows or static rows.
+#
+# NOTE: if you reduce the size, you may not get you hottest keys loaded on 
startup.
+#
+# Default value is empty to make it "auto" (min(5% of Heap (in MB), 100MB)). 
Set to 0 to disable key cache.
+key_cache_size_in_mb:
+
+# Duration in seconds after which Cassandra should
+# save the key cache. Caches are saved to saved_caches_directory as
+# specified in this configuration file.
+#
+# Saved caches greatly improve cold-start speeds, and is relatively cheap in
+# terms of I/O for the key cache. Row cache saving is much more expensive and
+# has limited use.
+#
+# Default is 14400 or 4 hours.
+key_cache_save_period: 14400
+
+# Number of keys from the key cache to save
+# Disabled by default, meaning all keys are going to be saved
+# key_cache_keys_to_save: 100
+
+# Maximum size of the row cache in memory.
+# NOTE: if you reduce the size, you may not get you hottest keys loaded on 
startup.
+#
+# Default value is 0, to disable row caching.
+row_cache_size_in_mb: 0
+
+# Duration in seconds after which Cassandra should
+# safe the row cache. Caches are saved to saved_caches_directory as specified
+# in this configuration file.
+#
+# Saved caches greatly improve cold-start speeds, and is relatively cheap in
+# terms of I/O for the key cache. Row cache saving is much more expensive and
+# has limited use.
+#
+# Default is 0 to disable saving the row cache.
+row_cache_save_period: 0
+
+# Number of keys from the row cache to save
+# Disabled by default, meaning all keys are going to be saved
+# row_cache_keys_to_save: 100
+
+# The off-heap memory allocator.  Affects storage engine metadata as
+# well as caches.  Experiments show that JEMAlloc saves some memory
+# than the native GCC allocator (i.e., JEMalloc is more
+# fragmentation-resistant).
+# 
+# Supported values are: NativeAllocator, JEMallocAllocator
+#
+# If you intend to use JEMallocAllocator you have to install JEMalloc as 
library and
+# modify cassandra-env.sh as directed in the file.
+#
+# Defaults to NativeAllocator
+# memory_allocator: NativeAllocator
+
+# saved caches
+saved_caches_directory: ${driver.runDir}/saved_caches
+
+# commitlog_sync may be either "periodic" or "batch." 
+# When in batch mode, Cassandra won't ack writes until the commit log
+# has been fsynced to disk.  It will wait up to
+# commitlog_sync_batch_window_in_ms milliseconds for other writes, before
+# performing the sync.
+#
+# commitlog_sync: batch
+# commitlog_sync_batch_window_in_ms: 50
+#
+# the other option is "periodic" where writes may be acked immediately
+# and the CommitLog is simply synced every commitlog_sync_period_in_ms
+# milliseconds.  By default this allows 1024*(CPU cores) pending
+# entries on the commitlog queue.  If you are writing very large blobs,
+# you should reduce that; 16*cores works reasonably well for 1MB blobs.
+# It should be at least as large as the concurrent_writes setting.
+commitlog_sync: periodic
+commitlog_sync_period_in_ms: 10000
+# commitlog_periodic_queue_size:
+
+# The size of the individual commitlog file segments.  A commitlog
+# segment may be archived, deleted, or recycled once all the data
+# in it (potentially from each columnfamily in the system) has been
+# flushed to sstables.  
+#
+# The default size is 32, which is almost always fine, but if you are
+# archiving commitlog segments (see commitlog_archiving.properties),
+# then you probably want a finer granularity of archiving; 8 or 16 MB
+# is reasonable.
+commitlog_segment_size_in_mb: 32
+
+# any class that implements the SeedProvider interface and has a
+# constructor that takes a Map<String, String> of parameters will do.
+seed_provider:
+    # Addresses of hosts that are deemed contact points. 
+    # Cassandra nodes use this list of hosts to find each other and learn
+    # the topology of the ring.  You must change this if you are running
+    # multiple nodes!
+    - class_name: org.apache.cassandra.locator.SimpleSeedProvider
+      parameters:
+          # seeds is actually a comma-delimited list of addresses.
+          # Ex: "<ip1>,<ip2>,<ip3>"
+          - seeds: "${entity.seeds}"
+
+# For workloads with more data than can fit in memory, Cassandra's
+# bottleneck will be reads that need to fetch data from
+# disk. "concurrent_reads" should be set to (16 * number_of_drives) in
+# order to allow the operations to enqueue low enough in the stack
+# that the OS and drives can reorder them.
+#
+# On the other hand, since writes are almost never IO bound, the ideal
+# number of "concurrent_writes" is dependent on the number of cores in
+# your system; (8 * number_of_cores) is a good rule of thumb.
+concurrent_reads: 32
+concurrent_writes: 32
+
+# Total memory to use for sstable-reading buffers.  Defaults to
+# the smaller of 1/4 of heap or 512MB.
+# file_cache_size_in_mb: 512
+
+# Total memory to use for memtables.  Cassandra will flush the largest
+# memtable when this much memory is used.
+# If omitted, Cassandra will set it to 1/4 of the heap.
+# memtable_total_space_in_mb: 2048
+
+# Total space to use for commitlogs.  Since commitlog segments are
+# mmapped, and hence use up address space, the default size is 32
+# on 32-bit JVMs, and 1024 on 64-bit JVMs.
+#
+# If space gets above this value (it will round up to the next nearest
+# segment multiple), Cassandra will flush every dirty CF in the oldest
+# segment and remove it.  So a small total commitlog space will tend
+# to cause more flush activity on less-active columnfamilies.
+# commitlog_total_space_in_mb: 4096
+
+# This sets the amount of memtable flush writer threads.  These will
+# be blocked by disk io, and each one will hold a memtable in memory
+# while blocked. If you have a large heap and many data directories,
+# you can increase this value for better flush performance.
+# By default this will be set to the amount of data directories defined.
+#memtable_flush_writers: 1
+
+# the number of full memtables to allow pending flush, that is,
+# waiting for a writer thread.  At a minimum, this should be set to
+# the maximum number of secondary indexes created on a single CF.
+memtable_flush_queue_size: 4
+
+# Whether to, when doing sequential writing, fsync() at intervals in
+# order to force the operating system to flush the dirty
+# buffers. Enable this to avoid sudden dirty buffer flushing from
+# impacting read latencies. Almost always a good idea on SSDs; not
+# necessarily on platters.
+trickle_fsync: false
+trickle_fsync_interval_in_kb: 10240
+
+# TCP port, for commands and data
+storage_port: ${entity.gossipPort?c}
+
+# SSL port, for encrypted communication.  Unused unless enabled in
+# encryption_options
+ssl_storage_port: ${entity.sslGossipPort?c}
+
+# Address to bind to and tell other Cassandra nodes to connect to. You
+# _must_ change this if you want multiple nodes to be able to
+# communicate!
+# 
+# Leaving it blank leaves it up to InetAddress.getLocalHost(). This
+# will always do the Right Thing _if_ the node is properly configured
+# (hostname, name resolution, etc), and the Right Thing is to use the
+# address associated with the hostname (it might not be).
+#
+# Setting this to 0.0.0.0 is always wrong.
+listen_address: ${entity.listenAddress}
+
+# Address to broadcast to other Cassandra nodes
+# Leaving this blank will set it to the same value as listen_address
+broadcast_address: ${entity.broadcastAddress}
+
+# Internode authentication backend, implementing IInternodeAuthenticator;
+# used to allow/disallow connections from peer nodes.
+# internode_authenticator: 
org.apache.cassandra.auth.AllowAllInternodeAuthenticator
+
+# Whether to start the native transport server.
+# Please note that the address on which the native transport is bound is the
+# same as the rpc_address. The port however is different and specified below.
+start_native_transport: true
+# port for the CQL native transport to listen for clients on
+native_transport_port: ${entity.nativeTransportPort?c}
+# The maximum threads for handling requests when the native transport is used.
+# This is similar to rpc_max_threads though the default differs slightly (and
+# there is no native_transport_min_threads, idle threads will always be stopped
+# after 30 seconds).
+# native_transport_max_threads: 128
+#
+# The maximum size of allowed frame. Frame (requests) larger than this will
+# be rejected as invalid. The default is 256MB.
+# native_transport_max_frame_size_in_mb: 256
+
+# Whether to start the thrift rpc server.
+start_rpc: true
+
+# The address to bind the Thrift RPC service and native transport
+# server -- clients connect here.
+#
+# Leaving this blank has the same effect it does for ListenAddress,
+# (i.e. it will be based on the configured hostname of the node).
+#
+# Note that unlike ListenAddress above, it is allowed to specify 0.0.0.0
+# here if you want to listen on all interfaces, but that will break clients 
+# that rely on node auto-discovery.
+rpc_address: ${entity.rpcAddress}
+# port for Thrift to listen for clients on
+rpc_port: ${entity.thriftPort?c}
+
+# enable or disable keepalive on rpc connections
+rpc_keepalive: true
+
+# Cassandra provides two out-of-the-box options for the RPC Server:
+#
+# sync  -> One thread per thrift connection. For a very large number of 
clients, memory
+#          will be your limiting factor. On a 64 bit JVM, 180KB is the minimum 
stack size
+#          per thread, and that will correspond to your use of virtual memory 
(but physical memory
+#          may be limited depending on use of stack space).
+#
+# hsha  -> Stands for "half synchronous, half asynchronous." All thrift 
clients are handled
+#          asynchronously using a small number of threads that does not vary 
with the amount
+#          of thrift clients (and thus scales well to many clients). The rpc 
requests are still
+#          synchronous (one thread per active request).
+#
+# The default is sync because on Windows hsha is about 30% slower.  On Linux,
+# sync/hsha performance is about the same, with hsha of course using less 
memory.
+#
+# Alternatively,  can provide your own RPC server by providing the 
fully-qualified class name
+# of an o.a.c.t.TServerFactory that can create an instance of it.
+rpc_server_type: sync
+
+# Uncomment rpc_min|max_thread to set request pool size limits.
+#
+# Regardless of your choice of RPC server (see above), the number of maximum 
requests in the
+# RPC thread pool dictates how many concurrent requests are possible (but if 
you are using the sync
+# RPC server, it also dictates the number of clients that can be connected at 
all).
+#
+# The default is unlimited and thus provides no protection against clients 
overwhelming the server. You are
+# encouraged to set a maximum that makes sense for you in production, but do 
keep in mind that
+# rpc_max_threads represents the maximum number of client requests this server 
may execute concurrently.
+#
+# rpc_min_threads: 16
+# rpc_max_threads: 2048
+
+# uncomment to set socket buffer sizes on rpc connections
+# rpc_send_buff_size_in_bytes:
+# rpc_recv_buff_size_in_bytes:
+
+# Uncomment to set socket buffer size for internode communication
+# Note that when setting this, the buffer size is limited by net.core.wmem_max
+# and when not setting it it is defined by net.ipv4.tcp_wmem
+# See:
+# /proc/sys/net/core/wmem_max
+# /proc/sys/net/core/rmem_max
+# /proc/sys/net/ipv4/tcp_wmem
+# /proc/sys/net/ipv4/tcp_wmem
+# and: man tcp
+# internode_send_buff_size_in_bytes:
+# internode_recv_buff_size_in_bytes:
+
+# Frame size for thrift (maximum message length).
+thrift_framed_transport_size_in_mb: 15
+
+# Set to true to have Cassandra create a hard link to each sstable
+# flushed or streamed locally in a backups/ subdirectory of the
+# keyspace data.  Removing these links is the operator's
+# responsibility.
+incremental_backups: false
+
+# Whether or not to take a snapshot before each compaction.  Be
+# careful using this option, since Cassandra won't clean up the
+# snapshots for you.  Mostly useful if you're paranoid when there
+# is a data format change.
+snapshot_before_compaction: false
+
+# Whether or not a snapshot is taken of the data before keyspace truncation
+# or dropping of column families. The STRONGLY advised default of true 
+# should be used to provide data safety. If you set this flag to false, you 
will
+# lose data on truncation or drop.
+auto_snapshot: true
+
+# When executing a scan, within or across a partition, we need to keep the
+# tombstones seen in memory so we can return them to the coordinator, which
+# will use them to make sure other replicas also know about the deleted rows.
+# With workloads that generate a lot of tombstones, this can cause performance
+# problems and even exaust the server heap.
+# 
(http://www.datastax.com/dev/blog/cassandra-anti-patterns-queues-and-queue-like-datasets)
+# Adjust the thresholds here if you understand the dangers and want to
+# scan more tombstones anyway.  These thresholds may also be adjusted at 
runtime
+# using the StorageService mbean.
+tombstone_warn_threshold: 1000
+tombstone_failure_threshold: 100000
+
+# Add column indexes to a row after its contents reach this size.
+# Increase if your column values are large, or if you have a very large
+# number of columns.  The competing causes are, Cassandra has to
+# deserialize this much of the row to read a single column, so you want
+# it to be small - at least if you do many partial-row reads - but all
+# the index data is read for each access, so you don't want to generate
+# that wastefully either.
+column_index_size_in_kb: 64
+
+
+# Log WARN on any batch size exceeding this value. 5kb per batch by default.
+# Caution should be taken on increasing the size of this threshold as it can 
lead to node instability.
+batch_size_warn_threshold_in_kb: 5
+
+# Size limit for rows being compacted in memory.  Larger rows will spill
+# over to disk and use a slower two-pass compaction process.  A message
+# will be logged specifying the row key.
+in_memory_compaction_limit_in_mb: 64
+
+# Number of simultaneous compactions to allow, NOT including
+# validation "compactions" for anti-entropy repair.  Simultaneous
+# compactions can help preserve read performance in a mixed read/write
+# workload, by mitigating the tendency of small sstables to accumulate
+# during a single long running compactions. The default is usually
+# fine and if you experience problems with compaction running too
+# slowly or too fast, you should look at
+# compaction_throughput_mb_per_sec first.
+#
+# concurrent_compactors defaults to the number of cores.
+# Uncomment to make compaction mono-threaded, the pre-0.8 default.
+#concurrent_compactors: 1
+
+# Multi-threaded compaction. When enabled, each compaction will use
+# up to one thread per core, plus one thread per sstable being merged.
+# This is usually only useful for SSD-based hardware: otherwise, 
+# your concern is usually to get compaction to do LESS i/o (see:
+# compaction_throughput_mb_per_sec), not more.
+multithreaded_compaction: false
+
+# Throttles compaction to the given total throughput across the entire
+# system. The faster you insert data, the faster you need to compact in
+# order to keep the sstable count down, but in general, setting this to
+# 16 to 32 times the rate you are inserting data is more than sufficient.
+# Setting this to 0 disables throttling. Note that this account for all types
+# of compaction, including validation compaction.
+compaction_throughput_mb_per_sec: 16
+
+# Track cached row keys during compaction, and re-cache their new
+# positions in the compacted sstable.  Disable if you use really large
+# key caches.
+compaction_preheat_key_cache: true
+
+# Throttles all outbound streaming file transfers on this node to the
+# given total throughput in Mbps. This is necessary because Cassandra does
+# mostly sequential IO when streaming data during bootstrap or repair, which
+# can lead to saturating the network connection and degrading rpc performance.
+# When unset, the default is 200 Mbps or 25 MB/s.
+# stream_throughput_outbound_megabits_per_sec: 200
+
+# How long the coordinator should wait for read operations to complete
+read_request_timeout_in_ms: 5000
+# How long the coordinator should wait for seq or index scans to complete
+range_request_timeout_in_ms: 10000
+# How long the coordinator should wait for writes to complete
+write_request_timeout_in_ms: 2000
+# How long a coordinator should continue to retry a CAS operation
+# that contends with other proposals for the same row
+cas_contention_timeout_in_ms: 1000
+# How long the coordinator should wait for truncates to complete
+# (This can be much longer, because unless auto_snapshot is disabled
+# we need to flush first so we can snapshot before removing the data.)
+truncate_request_timeout_in_ms: 60000
+# The default timeout for other, miscellaneous operations
+request_timeout_in_ms: 10000
+
+# Enable operation timeout information exchange between nodes to accurately
+# measure request timeouts.  If disabled, replicas will assume that requests
+# were forwarded to them instantly by the coordinator, which means that
+# under overload conditions we will waste that much extra time processing 
+# already-timed-out requests.
+#
+# Warning: before enabling this property make sure to ntp is installed
+# and the times are synchronized between the nodes.
+cross_node_timeout: false
+
+# Enable socket timeout for streaming operation.
+# When a timeout occurs during streaming, streaming is retried from the start
+# of the current file. This _can_ involve re-streaming an important amount of
+# data, so you should avoid setting the value too low.
+# Default value is 0, which never timeout streams.
+# streaming_socket_timeout_in_ms: 0
+
+# phi value that must be reached for a host to be marked down.
+# most users should never need to adjust this.
+# phi_convict_threshold: 8
+
+# endpoint_snitch -- Set this to a class that implements
+# IEndpointSnitch.  The snitch has two functions:
+# - it teaches Cassandra enough about your network topology to route
+#   requests efficiently
+# - it allows Cassandra to spread replicas around your cluster to avoid
+#   correlated failures. It does this by grouping machines into
+#   "datacenters" and "racks."  Cassandra will do its best not to have
+#   more than one replica on the same "rack" (which may not actually
+#   be a physical location)
+#
+# IF YOU CHANGE THE SNITCH AFTER DATA IS INSERTED INTO THE CLUSTER,
+# YOU MUST RUN A FULL REPAIR, SINCE THE SNITCH AFFECTS WHERE REPLICAS
+# ARE PLACED.
+#
+# Out of the box, Cassandra provides
+#  - SimpleSnitch:
+#    Treats Strategy order as proximity. This can improve cache
+#    locality when disabling read repair.  Only appropriate for
+#    single-datacenter deployments.
+#  - GossipingPropertyFileSnitch
+#    This should be your go-to snitch for production use.  The rack
+#    and datacenter for the local node are defined in
+#    cassandra-rackdc.properties and propagated to other nodes via
+#    gossip.  If cassandra-topology.properties exists, it is used as a
+#    fallback, allowing migration from the PropertyFileSnitch.
+#  - PropertyFileSnitch:
+#    Proximity is determined by rack and data center, which are
+#    explicitly configured in cassandra-topology.properties.
+#  - Ec2Snitch:
+#    Appropriate for EC2 deployments in a single Region. Loads Region
+#    and Availability Zone information from the EC2 API. The Region is
+#    treated as the datacenter, and the Availability Zone as the rack.
+#    Only private IPs are used, so this will not work across multiple
+#    Regions.
+#  - Ec2MultiRegionSnitch:
+#    Uses public IPs as broadcast_address to allow cross-region
+#    connectivity.  (Thus, you should set seed addresses to the public
+#    IP as well.) You will need to open the storage_port or
+#    ssl_storage_port on the public IP firewall.  (For intra-Region
+#    traffic, Cassandra will switch to the private IP after
+#    establishing a connection.)
+#  - RackInferringSnitch:
+#    Proximity is determined by rack and data center, which are
+#    assumed to correspond to the 3rd and 2nd octet of each node's IP
+#    address, respectively.  Unless this happens to match your
+#    deployment conventions, this is best used as an example of
+#    writing a custom Snitch class and is provided in that spirit.
+#
+# You can use a custom Snitch by setting this to the full class name
+# of the snitch, which will be assumed to be on your classpath.
+endpoint_snitch: ${driver.endpointSnitchName}
+
+# controls how often to perform the more expensive part of host score
+# calculation
+dynamic_snitch_update_interval_in_ms: 100 
+# controls how often to reset all host scores, allowing a bad host to
+# possibly recover
+dynamic_snitch_reset_interval_in_ms: 600000
+# if set greater than zero and read_repair_chance is < 1.0, this will allow
+# 'pinning' of replicas to hosts in order to increase cache capacity.
+# The badness threshold will control how much worse the pinned host has to be
+# before the dynamic snitch will prefer other replicas over it.  This is
+# expressed as a double which represents a percentage.  Thus, a value of
+# 0.2 means Cassandra would continue to prefer the static snitch values
+# until the pinned host was 20% worse than the fastest.
+dynamic_snitch_badness_threshold: 0.1
+
+# request_scheduler -- Set this to a class that implements
+# RequestScheduler, which will schedule incoming client requests
+# according to the specific policy. This is useful for multi-tenancy
+# with a single Cassandra cluster.
+# NOTE: This is specifically for requests from the client and does
+# not affect inter node communication.
+# org.apache.cassandra.scheduler.NoScheduler - No scheduling takes place
+# org.apache.cassandra.scheduler.RoundRobinScheduler - Round robin of
+# client requests to a node with a separate queue for each
+# request_scheduler_id. The scheduler is further customized by
+# request_scheduler_options as described below.
+request_scheduler: org.apache.cassandra.scheduler.NoScheduler
+
+# Scheduler Options vary based on the type of scheduler
+# NoScheduler - Has no options
+# RoundRobin
+#  - throttle_limit -- The throttle_limit is the number of in-flight
+#                      requests per client.  Requests beyond 
+#                      that limit are queued up until
+#                      running requests can complete.
+#                      The value of 80 here is twice the number of
+#                      concurrent_reads + concurrent_writes.
+#  - default_weight -- default_weight is optional and allows for
+#                      overriding the default which is 1.
+#  - weights -- Weights are optional and will default to 1 or the
+#               overridden default_weight. The weight translates into how
+#               many requests are handled during each turn of the
+#               RoundRobin, based on the scheduler id.
+#
+# request_scheduler_options:
+#    throttle_limit: 80
+#    default_weight: 5
+#    weights:
+#      Keyspace1: 1
+#      Keyspace2: 5
+
+# request_scheduler_id -- An identifier based on which to perform
+# the request scheduling. Currently the only valid option is keyspace.
+# request_scheduler_id: keyspace
+
+# Enable or disable inter-node encryption
+# Default settings are TLS v1, RSA 1024-bit keys (it is imperative that
+# users generate their own keys) TLS_RSA_WITH_AES_128_CBC_SHA as the cipher
+# suite for authentication, key exchange and encryption of the actual data 
transfers.
+# Use the DHE/ECDHE ciphers if running in FIPS 140 compliant mode.
+# NOTE: No custom encryption options are enabled at the moment
+# The available internode options are : all, none, dc, rack
+#
+# If set to dc cassandra will encrypt the traffic between the DCs
+# If set to rack cassandra will encrypt the traffic between the racks
+#
+# The passwords used in these options must match the passwords used when 
generating
+# the keystore and truststore.  For instructions on generating these files, 
see:
+# 
http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore
+#
+server_encryption_options:
+    internode_encryption: none
+    keystore: conf/.keystore
+    keystore_password: cassandra
+    truststore: conf/.truststore
+    truststore_password: cassandra
+    # More advanced defaults below:
+    # protocol: TLS
+    # algorithm: SunX509
+    # store_type: JKS
+    # cipher_suites: 
[TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
+    # require_client_auth: false
+
+# enable or disable client/server encryption.
+client_encryption_options:
+    enabled: false
+    keystore: conf/.keystore
+    keystore_password: cassandra
+    # require_client_auth: false
+    # Set trustore and truststore_password if require_client_auth is true
+    # truststore: conf/.truststore
+    # truststore_password: cassandra
+    # More advanced defaults below:
+    # protocol: TLS
+    # algorithm: SunX509
+    # store_type: JKS
+    # cipher_suites: 
[TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
+
+# internode_compression controls whether traffic between nodes is
+# compressed.
+# can be:  all  - all traffic is compressed
+#          dc   - traffic between different datacenters is compressed
+#          none - nothing is compressed.
+internode_compression: all
+
+# Enable or disable tcp_nodelay for inter-dc communication.
+# Disabling it will result in larger (but fewer) network packets being sent,
+# reducing overhead from the TCP protocol itself, at the cost of increasing
+# latency if you block for cross-datacenter responses.
+inter_dc_tcp_nodelay: false
+
+# Enable or disable kernel page cache preheating from contents of the key 
cache after compaction.
+# When enabled it would preheat only first "page" (4KB) of each row to optimize
+# for sequential access. Note: This could be harmful for fat rows, see 
CASSANDRA-4937
+# for further details on that topic.
+preheat_kernel_page_cache: false

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar
new file mode 100644
index 0000000..b1c1b94
Binary files /dev/null and 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.jar
 differ

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.txt
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.txt
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.txt
new file mode 100644
index 0000000..205b18d
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-multicloud-snitch.txt
@@ -0,0 +1,33 @@
+# 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.
+
+The file cassandra-multicloud-snitch.jar is a snitch implementation
+that handles Cassandra datacenters in different cloud providers.
+
+The source code for cassandra-multicloud-snitch.jar is in 
sandbox/cassandra-multicloud-snitch.
+
+The source will be contributed to the Cassandra project; when it is available 
in the 
+Cassandra distro (and when we don't want to give backwards compatibility 
support for
+older Cassandra versions), then we can delete it from Brooklyn.
+
+The jar can be uploaded to a Cassandra Node as part of deployment, for if
+this multi-cloud snitch is desired.
+
+Under Apache conventions, binary files are not part of the source
+release. If you are using the source release, you may add this file
+by copying it from the master repository, which is accessible on the
+web at https://github.com/apache/incubator-brooklyn

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties
new file mode 100644
index 0000000..8fc323a
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/cassandra/cassandra-rackdc.properties
@@ -0,0 +1,6 @@
+# See http://www.datastax.com/docs/1.1/cluster_architecture/replication
+# Note publicip/privateip added for use by custom MultiCloudSnitch
+dc=${entity.datacenterName}
+rack=${entity.rackName}
+publicip=${entity.publicIp}
+privateip=${entity.privateIp}

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchbase/pillowfight.yaml
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchbase/pillowfight.yaml
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchbase/pillowfight.yaml
new file mode 100644
index 0000000..01f4027
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchbase/pillowfight.yaml
@@ -0,0 +1,77 @@
+#
+# 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.
+#
+services:
+- type: brooklyn.entity.basic.VanillaSoftwareProcess
+  name: CBC Pillowfight
+  launch.command: |
+    sudo wget -O/etc/apt/sources.list.d/couchbase.list 
http://packages.couchbase.com/ubuntu/couchbase-ubuntu1204.list
+    sudo wget -O- http://packages.couchbase.com/ubuntu/couchbase.key | sudo 
apt-key add -
+    sudo apt-get update
+    sudo apt-get install -y libcouchbase2-libevent libcouchbase-dev 
libcouchbase2-bin
+  provisioning.properties:
+    # CentOS requires a different launch command, see below
+    osFamily: ubuntu
+  checkRunning.command: ""
+  stop.command: ""
+    
+  brooklyn.config:
+    base_url: http://127.0.0.1:8091/
+    
+  brooklyn.initializers:
+  - type: brooklyn.entity.software.ssh.SshCommandEffector
+    brooklyn.config:
+      name: pillow_fight
+      description: runs cbc pillowfight
+      command: |
+        cbc-pillowfight -U ${base_url}${bucket} \
+          `if [ -n "$username" ]; then echo -u $username; fi` \
+          `if [ -n "$password" ]; then echo -P $password; fi` \
+          `if [ -n "$num_cycles" ]; then echo -c $num_cycles; fi` \
+          `if [ -n "$min_size" ]; then echo -m $min_size; fi` \
+          `if [ -n "$max_size" ]; then echo -M $max_size; fi` \
+          `if [ -n "$ratio" ]; then echo -r $ratio; fi`
+      parameters:
+        base_url:
+          description: base URL (http or couchbases) and list of hosts/port to 
connect to, including trailing slash
+          defaultValue: $brooklyn:config("base_url")
+        bucket:
+          description: bucket to use
+          defaultValue: default
+        username:
+          description: username to authenticate to the bucket
+        password:
+          description: password to authenticate to the bucket
+        num_cycles:
+          description: number of iterations to run
+          defaultValue: 1
+        min_size:
+          description: minimum payload size
+          defaultValue: 50
+        max_size:
+          description: maximum payload size
+          defaultValue: 5120
+        ratio:
+          description: "specify SET/GET command ratio (default: 33, i.e. 33% 
SETs and 67% GETs)"
+          defaultValue: 33
+
+# For CentOS, use the following launch command:
+#  launch.command: |
+#    sudo wget -O/etc/yum.repos.d/couchbase.repo 
http://packages.couchbase.com/rpm/couchbase-centos55-x86_64.repo
+#    sudo yum check-update
+#    sudo yum install -y libcouchbase2-libevent libcouchbase-devel 
libcouchbase2-bin

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.ini
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.ini
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.ini
new file mode 100644
index 0000000..692fc8b
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.ini
@@ -0,0 +1,17 @@
+[#ftl]
+#
+[couchdb]
+database_dir = ${driver.runDir}
+view_index_dir = ${driver.runDir}
+uri_file = ${driver.runDir}/couch.uri
+
+[httpd]
+port = ${entity.httpPort?c}
+bind_address = 0.0.0.0
+
+[ssl]
+port = ${entity.httpsPort?c}
+
+[log]
+file = ${driver.runDir}/couch.log
+level = info
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.uri
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.uri
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.uri
new file mode 100644
index 0000000..0997fc7
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/couchdb/couch.uri
@@ -0,0 +1,2 @@
+[#ftl]
+http://${driver.hostname}:${entity.httpPort?c}/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default-mongod.conf
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default-mongod.conf
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default-mongod.conf
new file mode 100644
index 0000000..e7f02fd
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default-mongod.conf
@@ -0,0 +1,7 @@
+# Default configuration for a mongod process. The use of noprealloc and 
smallfiles
+# mean this configuration file should not be used in a production environment.
+
+quiet = false
+
+noprealloc = true
+smallfiles = true

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default.conf
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default.conf
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default.conf
new file mode 100644
index 0000000..c3c279f
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/mongodb/default.conf
@@ -0,0 +1,2 @@
+# Default Brooklyn configuration for a MongoDB process.
+quiet = false

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/redis.conf
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/redis.conf
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/redis.conf
new file mode 100644
index 0000000..0554eb2
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/redis.conf
@@ -0,0 +1,13 @@
+# Redis configuration file
+
+# Start as daemon
+daemonize yes
+pidfile ${driver.runDir}/pid.txt
+
+# Set port and optional bind address
+port ${entity.redisPort?c}
+# bind ${entity.address}
+
+# Configure logging
+loglevel verbose
+logfile ${driver.runDir}/redis.log

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/slave.conf
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/slave.conf
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/slave.conf
new file mode 100644
index 0000000..3a9e64a
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/redis/slave.conf
@@ -0,0 +1,16 @@
+# Redis configuration file
+
+# Start as daemon
+daemonize yes
+pidfile ${driver.runDir}/pid.txt
+
+# Set port and optional bind address
+port ${entity.redisPort?c}
+# bind ${entity.address}
+
+# Slave configuration
+slaveof ${entity.master.address} ${entity.master.redisPort?c}
+
+# Configure logging
+loglevel verbose
+logfile ${driver.runDir}/redis.log

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/app.config
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/app.config
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/app.config
new file mode 100644
index 0000000..7ee8a37
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/app.config
@@ -0,0 +1,353 @@
+%% Brooklyn note: file from 1.4.8 Mac install, with erlang section added, and 
ports templated
+
+%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*-
+%% ex: ft=erlang ts=4 sw=4 et
+[
+ %% Riak Client APIs config
+ {riak_api, [
+            %% pb_backlog is the maximum length to which the queue of pending
+            %% connections may grow. If set, it must be an integer >= 0.
+            %% By default the value is 5. If you anticipate a huge number of
+            %% connections being initialised *simultaneously*, set this number
+            %% higher.
+            %% {pb_backlog, 64},
+             
+            %% pb is a list of IP addresses and TCP ports that the Riak 
+            %% Protocol Buffers interface will bind.
+            {pb, [ {"0.0.0.0", ${entity.riakPbPort?c} } ]}
+            ]},
+
+ %% Riak Core config
+ {riak_core, [
+              %% Default location of ringstate
+              {ring_state_dir, "./data/ring"},
+
+              %% Default ring creation size.  Make sure it is a power of 2,
+              %% e.g. 16, 32, 64, 128, 256, 512 etc
+              %{ring_creation_size, 64},
+
+              %% http is a list of IP addresses and TCP ports that the Riak
+              %% HTTP interface will bind.
+              {http, [ {"0.0.0.0", ${entity.riakWebPort?c} } ]},
+
+              %% https is a list of IP addresses and TCP ports that the Riak
+              %% HTTPS interface will bind.
+              %{https, [{ "0.0.0.0", ${entity.riakWebPort?c} }]},
+
+              %% Default cert and key locations for https can be overridden
+              %% with the ssl config variable, for example:
+              %{ssl, [
+              %       {certfile, "./etc/cert.pem"},
+              %       {keyfile, "./etc/key.pem"}
+              %      ]},
+
+              %% riak_handoff_port is the TCP port that Riak uses for
+              %% intra-cluster data handoff.
+              {handoff_port, ${entity.handoffListenerPort?c} },
+
+              %% To encrypt riak_core intra-cluster data handoff traffic,
+              %% uncomment the following line and edit its path to an
+              %% appropriate certfile and keyfile.  (This example uses a
+              %% single file with both items concatenated together.)
+              %{handoff_ssl_options, [{certfile, "/tmp/erlserver.pem"}]},
+
+              %% DTrace support
+              %% Do not enable 'dtrace_support' unless your Erlang/OTP
+              %% runtime is compiled to support DTrace.  DTrace is
+              %% available in R15B01 (supported by the Erlang/OTP
+              %% official source package) and in R14B04 via a custom
+              %% source repository & branch.
+              {dtrace_support, false},
+
+              %% Health Checks
+              %% If disabled, health checks registered by an application will
+              %% be ignored. NOTE: this option cannot be changed at runtime.
+              %% To re-enable, the setting must be changed and the node 
restarted.
+              %% NOTE: As of Riak 1.3.2, health checks are deprecated as they
+              %% may interfere with the new overload protection mechanisms.
+              %% If there is a good reason to re-enable them, you must 
uncomment
+              %% this line and also add an entry in the riak_kv section:
+              %%          {riak_kv, [ ..., {enable_health_checks, true}, ...]}
+              %% {enable_health_checks, true},
+
+              %% Platform-specific installation paths (substituted by rebar)
+              {platform_bin_dir, "./bin"},
+              {platform_data_dir, "./data"},
+              {platform_etc_dir, "./etc"},
+              {platform_lib_dir, "./lib"},
+              {platform_log_dir, "./log"}
+             ]},
+
+ %% Riak KV config
+ {riak_kv, [
+            %% Storage_backend specifies the Erlang module defining the storage
+            %% mechanism that will be used on this node.
+            {storage_backend, riak_kv_bitcask_backend},
+
+            %% raw_name is the first part of all URLS used by the Riak raw HTTP
+            %% interface.  See riak_web.erl and raw_http_resource.erl for
+            %% details.
+            %{raw_name, "riak"},
+
+            %% Enable active anti-entropy subsystem + optional debug messages:
+            %%   {anti_entropy, {on|off, []}},
+            %%   {anti_entropy, {on|off, [debug]}},
+            {anti_entropy, {on, []}},
+
+            %% Restrict how fast AAE can build hash trees. Building the tree
+            %% for a given partition requires a full scan over that partition's
+            %% data. Once built, trees stay built until they are expired.
+            %% Config is of the form:
+            %%   {num-builds, per-timespan-in-milliseconds}
+            %% Default is 1 build per hour.
+            {anti_entropy_build_limit, {1, 3600000}},
+
+            %% Determine how often hash trees are expired after being built.
+            %% Periodically expiring a hash tree ensures the on-disk hash tree
+            %% data stays consistent with the actual k/v backend data. It also
+            %% helps Riak identify silent disk failures and bit rot. However,
+            %% expiration is not needed for normal AAE operation and should be
+            %% infrequent for performance reasons. The time is specified in
+            %% milliseconds. The default is 1 week.
+            {anti_entropy_expire, 604800000},
+
+            %% Limit how many AAE exchanges/builds can happen concurrently.
+            {anti_entropy_concurrency, 2},
+
+            %% The tick determines how often the AAE manager looks for work
+            %% to do (building/expiring trees, triggering exchanges, etc).
+            %% The default is every 15 seconds. Lowering this value will
+            %% speedup the rate that all replicas are synced across the 
cluster.
+            %% Increasing the value is not recommended.
+            {anti_entropy_tick, 15000},
+
+            %% The directory where AAE hash trees are stored.
+            {anti_entropy_data_dir, "./data/anti_entropy"},
+
+            %% The LevelDB options used by AAE to generate the LevelDB-backed
+            %% on-disk hashtrees.
+            {anti_entropy_leveldb_opts, [{write_buffer_size, 4194304},
+                                         {max_open_files, 20}]},
+
+            %% mapred_name is URL used to submit map/reduce requests to Riak.
+            {mapred_name, "mapred"},
+
+            %% mapred_2i_pipe indicates whether secondary-index
+            %% MapReduce inputs are queued in parallel via their own
+            %% pipe ('true'), or serially via a helper process
+            %% ('false' or undefined).  Set to 'false' or leave
+            %% undefined during a rolling upgrade from 1.0.
+            {mapred_2i_pipe, true},
+
+            %% Each of the following entries control how many Javascript
+            %% virtual machines are available for executing map, reduce,
+            %% pre- and post-commit hook functions.
+            {map_js_vm_count, 8 },
+            {reduce_js_vm_count, 6 },
+            {hook_js_vm_count, 2 },
+
+            %% js_max_vm_mem is the maximum amount of memory, in megabytes,
+            %% allocated to the Javascript VMs. If unset, the default is
+            %% 8MB.
+            {js_max_vm_mem, 8},
+
+            %% js_thread_stack is the maximum amount of thread stack, in 
megabyes,
+            %% allocate to the Javascript VMs. If unset, the default is 16MB.
+            %% NOTE: This is not the same as the C thread stack.
+            {js_thread_stack, 16},
+
+            %% js_source_dir should point to a directory containing Javascript
+            %% source files which will be loaded by Riak when it initializes
+            %% Javascript VMs.
+            %{js_source_dir, "/tmp/js_source"},
+
+            %% http_url_encoding determines how Riak treats URL encoded
+            %% buckets, keys, and links over the REST API. When set to 'on'
+            %% Riak always decodes encoded values sent as URLs and Headers.
+            %% Otherwise, Riak defaults to compatibility mode where links
+            %% are decoded, but buckets and keys are not. The compatibility
+            %% mode will be removed in a future release.
+            {http_url_encoding, on},
+
+            %% Switch to vnode-based vclocks rather than client ids.  This
+            %% significantly reduces the number of vclock entries.
+            %% Only set true if *all* nodes in the cluster are upgraded to 1.0
+            {vnode_vclocks, true},
+
+            %% This option toggles compatibility of keylisting with 1.0
+            %% and earlier versions.  Once a rolling upgrade to a version
+            %% > 1.0 is completed for a cluster, this should be set to
+            %% true for better control of memory usage during key listing
+            %% operations
+            {listkeys_backpressure, true},
+
+            %% This option specifies how many of each type of fsm may exist
+            %% concurrently.  This is for overload protection and is a new
+            %% mechanism that obsoletes 1.3's health checks. Note that this 
number
+            %% represents two potential processes, so +P in vm.args should be 
at 
+            %% least 3X the fsm_limit.
+            {fsm_limit, 50000},
+
+            %% Uncomment to make non-paginated results be sorted the
+            %% same way paginated results are: by term, then key.
+            %% In Riak 1.4.* before 1.4.4, all results were sorted this way
+            %% by default, which can adversely affect performance in some 
cases.
+            %% Setting this to true emulates that behavior.
+            %% {secondary_index_sort_default, true},
+
+            %% object_format controls which binary representation of a 
riak_object 
+            %% is stored on disk.
+            %% Current options are: v0, v1.
+            %% v0: Original erlang:term_to_binary format. Higher space 
overhead.
+            %% v1: New format for more compact storage of small values.
+            {object_format, v1}
+           ]},
+
+ %% Riak Search Config
+ {riak_search, [
+                %% To enable Search functionality set this 'true'.
+                {enabled, false}
+               ]},
+
+ %% Merge Index Config
+ {merge_index, [
+                %% The root dir to store search merge_index data
+                {data_root, "./data/merge_index"},
+
+                %% Size, in bytes, of the in-memory buffer.  When this
+                %% threshold has been reached the data is transformed
+                %% into a segment file which resides on disk.
+                {buffer_rollover_size, 1048576},
+
+                %% Overtime the segment files need to be compacted.
+                %% This is the maximum number of segments that will be
+                %% compacted at once.  A lower value will lead to
+                %% quicker but more frequent compactions.
+                {max_compact_segments, 20}
+               ]},
+
+ %% Bitcask Config
+ {bitcask, [
+             %% Configure how Bitcask writes data to disk.
+             %%   erlang: Erlang's built-in file API
+             %%      nif: Direct calls to the POSIX C API
+             %%
+             %% The NIF mode provides higher throughput for certain
+             %% workloads, but has the potential to negatively impact
+             %% the Erlang VM, leading to higher worst-case latencies
+             %% and possible throughput collapse.
+             {io_mode, erlang},
+
+             {data_root, "./data/bitcask"}
+           ]},
+
+ %% eLevelDB Config
+ {eleveldb, [
+             {data_root, "./data/leveldb"}
+            ]},
+
+ %% Lager Config
+ {lager, [
+            %% What handlers to install with what arguments
+            %% The defaults for the logfiles are to rotate the files when
+            %% they reach 10Mb or at midnight, whichever comes first, and keep
+            %% the last 5 rotations. See the lager README for a description of
+            %% the time rotation format:
+            %% https://github.com/basho/lager/blob/master/README.org
+            %%
+            %% If you wish to disable rotation, you can either set the size to 0
+            %% and the rotation time to "", or instead specify a 2-tuple that 
only
+            %% consists of {Logfile, Level}.
+            %%
+            %% If you wish to have riak log messages to syslog, you can use a 
handler
+            %% like this:
+            %%   {lager_syslog_backend, ["riak", daemon, info]},
+            %%
+            {handlers, [ 
+                           {lager_file_backend, [ 
+                               {"./log/error.log", error, 10485760, "$D0", 5}, 
+                               {"./log/console.log", info, 10485760, "$D0", 5} 
+                           ]} 
+                       ] },
+
+            %% Whether to write a crash log, and where.
+            %% Commented/omitted/undefined means no crash logger.
+            {crash_log, "./log/crash.log"},
+
+            %% Maximum size in bytes of events in the crash log - defaults to 
65536
+            {crash_log_msg_size, 65536},
+
+            %% Maximum size of the crash log in bytes, before its rotated, set
+            %% to 0 to disable rotation - default is 0
+            {crash_log_size, 10485760},
+
+            %% What time to rotate the crash log - default is no time
+            %% rotation. See the lager README for a description of this format:
+            %% https://github.com/basho/lager/blob/master/README.org
+            {crash_log_date, "$D0"},
+
+            %% Number of rotated crash logs to keep, 0 means keep only the
+            %% current one - default is 0
+            {crash_log_count, 5},
+
+            %% Whether to redirect error_logger messages into lager - defaults 
to true
+            {error_logger_redirect, true},
+
+            %% maximum number of error_logger messages to handle in a second
+            %% lager 2.0.0 shipped with a limit of 50, which is a little low 
for riak's startup
+            {error_logger_hwm, 100}
+        ]},
+
+ %% riak_sysmon config
+ {riak_sysmon, [
+         %% To disable forwarding events of a particular type, use a
+         %% limit of 0.
+         {process_limit, 30},
+         {port_limit, 2},
+
+         %% Finding reasonable limits for a given workload is a matter
+         %% of experimentation.
+         %% NOTE: Enabling the 'gc_ms_limit' monitor (by setting non-zero)
+         %%       can cause performance problems on multi-CPU systems.
+         {gc_ms_limit, 0},
+         {heap_word_limit, 40111000},
+
+         %% Configure the following items to 'false' to disable logging
+         %% of that event type.
+         {busy_port, true},
+         {busy_dist_port, true}
+        ]},
+
+ %% SASL config
+ {sasl, [
+         {sasl_error_logger, false}
+        ]},
+
+ %% riak_control config
+ {riak_control, [
+                %% Set to false to disable the admin panel.
+                {enabled, true},
+
+                %% Authentication style used for access to the admin
+                %% panel. Valid styles are 'userlist' <TODO>.
+                {auth, userlist},
+
+                %% If auth is set to 'userlist' then this is the
+                %% list of usernames and passwords for access to the
+                %% admin panel.
+                {userlist, [{"user", "pass"}
+                           ]},
+
+                %% The admin panel is broken up into multiple
+                %% components, each of which is enabled or disabled
+                %% by one of these settings.
+                {admin, true}
+                ]},
+ 
+ %% erlang, constrain port range so we can open the internal firewall ports    
           
+ { kernel, [
+            {inet_dist_listen_min, ${entity.erlangPortRangeStart?c}},
+            {inet_dist_listen_max, ${entity.erlangPortRangeEnd?c}}
+          ]}
+
+].

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-cluster-with-solr.yaml
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-cluster-with-solr.yaml
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-cluster-with-solr.yaml
new file mode 100644
index 0000000..0d1e7c7
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-cluster-with-solr.yaml
@@ -0,0 +1,35 @@
+#
+# 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.
+#
+
+name: Cluster Riak & Solr
+location:
+  jclouds:aws-ec2:us-east-1:
+    osFamily: centos
+    osVersionRegex: 6\..*
+services:
+- type: org.apache.brooklyn.entity.nosql.riak.RiakCluster
+  initialSize: 2
+  memberSpec:
+    $brooklyn:entitySpec:
+      type: org.apache.brooklyn.entity.nosql.riak.RiakNode
+      searchEnabled: true
+  brooklyn.config:
+    provisioning.properties:
+      minCores: 2
+      minRam: 6gb
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-mac.conf
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-mac.conf
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-mac.conf
new file mode 100644
index 0000000..d123000
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-mac.conf
@@ -0,0 +1,494 @@
+## Brooklyn note: file from 2.0.1 Mac install, with erlang section added, and 
ports templated
+
+## Where to emit the default log messages (typically at 'info'
+## severity):
+## off: disabled
+## file: the file specified by log.console.file
+## console: to standard output (seen when using `riak attach-direct`)
+## both: log.console.file and standard out.
+##
+## Default: file
+##
+## Acceptable values:
+##   - one of: off, file, console, both
+log.console = file
+
+## The severity level of the console log, default is 'info'.
+##
+## Default: info
+##
+## Acceptable values:
+##   - one of: debug, info, notice, warning, error, critical, alert, 
emergency, none
+log.console.level = info
+
+## When 'log.console' is set to 'file' or 'both', the file where
+## console messages will be logged.
+##
+## Default: $(platform_log_dir)/console.log
+##
+## Acceptable values:
+##   - the path to a file
+log.console.file = $(platform_log_dir)/console.log
+
+## The file where error messages will be logged.
+##
+## Default: $(platform_log_dir)/error.log
+##
+## Acceptable values:
+##   - the path to a file
+log.error.file = $(platform_log_dir)/error.log
+
+## When set to 'on', enables log output to syslog.
+##
+## Default: off
+##
+## Acceptable values:
+##   - on or off
+log.syslog = off
+
+## Whether to enable the crash log.
+##
+## Default: on
+##
+## Acceptable values:
+##   - on or off
+log.crash = on
+
+## If the crash log is enabled, the file where its messages will
+## be written.
+##
+## Default: $(platform_log_dir)/crash.log
+##
+## Acceptable values:
+##   - the path to a file
+log.crash.file = $(platform_log_dir)/crash.log
+
+## Maximum size in bytes of individual messages in the crash log
+##
+## Default: 64KB
+##
+## Acceptable values:
+##   - a byte size with units, e.g. 10GB
+log.crash.maximum_message_size = 64KB
+
+## Maximum size of the crash log in bytes, before it is rotated
+##
+## Default: 10MB
+##
+## Acceptable values:
+##   - a byte size with units, e.g. 10GB
+log.crash.size = 10MB
+
+## The schedule on which to rotate the crash log.  For more
+## information see:
+## https://github.com/basho/lager/blob/master/README.md#internal-log-rotation
+##
+## Default: $D0
+##
+## Acceptable values:
+##   - text
+log.crash.rotation = $D0
+
+## The number of rotated crash logs to keep. When set to
+## 'current', only the current open log file is kept.
+##
+## Default: 5
+##
+## Acceptable values:
+##   - an integer
+##   - the text "current"
+log.crash.rotation.keep = 5
+
+## Name of the Erlang node
+##
+## Default: [email protected]
+##
+## Acceptable values:
+##   - text
+nodename = riak@${driver.hostname}
+
+## Cookie for distributed node communication.  All nodes in the
+## same cluster should use the same cookie or they will not be able to
+## communicate.
+##
+## Default: riak
+##
+## Acceptable values:
+##   - text
+distributed_cookie = riak
+
+## Sets the number of threads in async thread pool, valid range
+## is 0-1024. If thread support is available, the default is 64.
+## More information at: http://erlang.org/doc/man/erl.html
+##
+## Default: 64
+##
+## Acceptable values:
+##   - an integer
+erlang.async_threads = 64
+
+## The number of concurrent ports/sockets
+## Valid range is 1024-134217727
+##
+## Default: 65536
+##
+## Acceptable values:
+##   - an integer
+erlang.max_ports = 65536
+
+## Set scheduler forced wakeup interval. All run queues will be
+## scanned each Interval milliseconds. While there are sleeping
+## schedulers in the system, one scheduler will be woken for each
+## non-empty run queue found. An Interval of zero disables this
+## feature, which also is the default.
+## This feature is a workaround for lengthy executing native code, and
+## native code that do not bump reductions properly.
+## More information: http://www.erlang.org/doc/man/erl.html#+sfwi
+##
+## Acceptable values:
+##   - an integer
+## erlang.schedulers.force_wakeup_interval = 500
+
+## Enable or disable scheduler compaction of load. By default
+## scheduler compaction of load is enabled. When enabled, load
+## balancing will strive for a load distribution which causes as many
+## scheduler threads as possible to be fully loaded (i.e., not run out
+## of work). This is accomplished by migrating load (e.g. runnable
+## processes) into a smaller set of schedulers when schedulers
+## frequently run out of work. When disabled, the frequency with which
+## schedulers run out of work will not be taken into account by the
+## load balancing logic.
+## More information: http://www.erlang.org/doc/man/erl.html#+scl
+##
+## Acceptable values:
+##   - one of: true, false
+## erlang.schedulers.compaction_of_load = false
+
+## Enable or disable scheduler utilization balancing of load. By
+## default scheduler utilization balancing is disabled and instead
+## scheduler compaction of load is enabled which will strive for a
+## load distribution which causes as many scheduler threads as
+## possible to be fully loaded (i.e., not run out of work). When
+## scheduler utilization balancing is enabled the system will instead
+## try to balance scheduler utilization between schedulers. That is,
+## strive for equal scheduler utilization on all schedulers.
+## More information: http://www.erlang.org/doc/man/erl.html#+sub
+##
+## Acceptable values:
+##   - one of: true, false
+## erlang.schedulers.utilization_balancing = true
+
+## Number of partitions in the cluster (only valid when first
+## creating the cluster). Must be a power of 2, minimum 8 and maximum
+## 1024.
+##
+## Default: 64
+##
+## Acceptable values:
+##   - an integer
+## ring_size = 64
+
+## Number of concurrent node-to-node transfers allowed.
+##
+## Default: 2
+##
+## Acceptable values:
+##   - an integer
+## transfer_limit = 2
+
+## Default cert location for https can be overridden
+## with the ssl config variable, for example:
+##
+## Acceptable values:
+##   - the path to a file
+## ssl.certfile = $(platform_etc_dir)/cert.pem
+
+## Default key location for https can be overridden with the ssl
+## config variable, for example:
+##
+## Acceptable values:
+##   - the path to a file
+## ssl.keyfile = $(platform_etc_dir)/key.pem
+
+## Default signing authority location for https can be overridden
+## with the ssl config variable, for example:
+##
+## Acceptable values:
+##   - the path to a file
+## ssl.cacertfile = $(platform_etc_dir)/cacertfile.pem
+
+## DTrace support Do not enable 'dtrace' unless your Erlang/OTP
+## runtime is compiled to support DTrace.  DTrace is available in
+## R15B01 (supported by the Erlang/OTP official source package) and in
+## R14B04 via a custom source repository & branch.
+##
+## Default: off
+##
+## Acceptable values:
+##   - on or off
+dtrace = off
+
+## Platform-specific installation paths (substituted by rebar)
+##
+## Default: ./bin
+##
+## Acceptable values:
+##   - the path to a directory
+platform_bin_dir = ./bin
+
+##
+## Default: ./data
+##
+## Acceptable values:
+##   - the path to a directory
+platform_data_dir = ./data
+
+##
+## Default: ./etc
+##
+## Acceptable values:
+##   - the path to a directory
+platform_etc_dir = ./etc
+
+##
+## Default: ./lib
+##
+## Acceptable values:
+##   - the path to a directory
+platform_lib_dir = ./lib
+
+##
+## Default: ./log
+##
+## Acceptable values:
+##   - the path to a directory
+platform_log_dir = ./log
+
+## Enable consensus subsystem. Set to 'on' to enable the
+## consensus subsystem used for strongly consistent Riak operations.
+##
+## Default: off
+##
+## Acceptable values:
+##   - on or off
+## strong_consistency = on
+
+## listener.http.<name> is an IP address and TCP port that the Riak
+## HTTP interface will bind.
+##
+## Default: 127.0.0.1:8098
+##
+## Acceptable values:
+##   - an IP/port pair, e.g. 127.0.0.1:10011
+listener.http.internal = 0.0.0.0:${entity.riakWebPort?c}
+
+## listener.protobuf.<name> is an IP address and TCP port that the Riak
+## Protocol Buffers interface will bind.
+##
+## Default: 127.0.0.1:8087
+##
+## Acceptable values:
+##   - an IP/port pair, e.g. 127.0.0.1:10011
+listener.protobuf.internal = 0.0.0.0:${entity.riakPbPort?c}
+
+## The maximum length to which the queue of pending connections
+## may grow. If set, it must be an integer > 0. If you anticipate a
+## huge number of connections being initialized *simultaneously*, set
+## this number higher.
+##
+## Default: 128
+##
+## Acceptable values:
+##   - an integer
+## protobuf.backlog = 128
+
+## listener.https.<name> is an IP address and TCP port that the Riak
+## HTTPS interface will bind.
+##
+## Acceptable values:
+##   - an IP/port pair, e.g. 127.0.0.1:10011
+## listener.https.internal = 127.0.0.1:8098
+
+## How Riak will repair out-of-sync keys. Some features require
+## this to be set to 'active', including search.
+## * active: out-of-sync keys will be repaired in the background
+## * passive: out-of-sync keys are only repaired on read
+## * active-debug: like active, but outputs verbose debugging
+## information
+##
+## Default: active
+##
+## Acceptable values:
+##   - one of: active, passive, active-debug
+anti_entropy = active
+
+## Specifies the storage engine used for Riak's key-value data
+## and secondary indexes (if supported).
+##
+## Default: bitcask
+##
+## Acceptable values:
+##   - one of: bitcask, leveldb, memory, multi
+storage_backend = bitcask
+
+## Controls which binary representation of a riak value is stored
+## on disk.
+## * 0: Original erlang:term_to_binary format. Higher space overhead.
+## * 1: New format for more compact storage of small values.
+##
+## Default: 1
+##
+## Acceptable values:
+##   - the integer 1
+##   - the integer 0
+object.format = 1
+
+## Reading or writing objects bigger than this size will write a
+## warning in the logs.
+##
+## Default: 5MB
+##
+## Acceptable values:
+##   - a byte size with units, e.g. 10GB
+object.size.warning_threshold = 5MB
+
+## Writing an object bigger than this will send a failure to the
+## client.
+##
+## Default: 50MB
+##
+## Acceptable values:
+##   - a byte size with units, e.g. 10GB
+object.size.maximum = 50MB
+
+## Writing an object with more than this number of siblings will
+## generate a warning in the logs.
+##
+## Default: 25
+##
+## Acceptable values:
+##   - an integer
+object.siblings.warning_threshold = 25
+
+## Writing an object with more than this number of siblings will
+## send a failure to the client.
+##
+## Default: 100
+##
+## Acceptable values:
+##   - an integer
+object.siblings.maximum = 100
+
+## A path under which bitcask data files will be stored.
+##
+## Default: $(platform_data_dir)/bitcask
+##
+## Acceptable values:
+##   - the path to a directory
+bitcask.data_root = $(platform_data_dir)/bitcask
+
+## Configure how Bitcask writes data to disk.
+## erlang: Erlang's built-in file API
+## nif: Direct calls to the POSIX C API
+## The NIF mode provides higher throughput for certain
+## workloads, but has the potential to negatively impact
+## the Erlang VM, leading to higher worst-case latencies
+## and possible throughput collapse.
+##
+## Default: erlang
+##
+## Acceptable values:
+##   - one of: erlang, nif
+bitcask.io_mode = erlang
+
+## Set to 'off' to disable the admin panel.
+##
+## Default: off
+##
+## Acceptable values:
+##   - on or off
+riak_control = on
+
+## Authentication mode used for access to the admin panel.
+##
+## Default: off
+##
+## Acceptable values:
+##   - one of: off, userlist
+riak_control.auth.mode = off
+
+## If riak control's authentication mode (riak_control.auth.mode)
+## is set to 'userlist' then this is the list of usernames and
+## passwords for access to the admin panel.
+## To create users with given names, add entries of the format:
+## riak_control.auth.user.USERNAME.password = PASSWORD
+## replacing USERNAME with the desired username and PASSWORD with the
+## desired password for that user.
+##
+## Acceptable values:
+##   - text
+## riak_control.auth.user.admin.password = pass
+
+## This parameter defines the percentage of total server memory
+## to assign to LevelDB. LevelDB will dynamically adjust its internal
+## cache sizes to stay within this size.  The memory size can
+## alternately be assigned as a byte count via leveldb.maximum_memory
+## instead.
+##
+## Default: 70
+##
+## Acceptable values:
+##   - an integer
+leveldb.maximum_memory.percent = 70
+
+## To enable Search set this 'on'.
+##
+## Default: off
+##
+## Acceptable values:
+##   - on or off
+search = off
+
+## How long Riak will wait for Solr to start. The start sequence
+## will be tried twice. If both attempts timeout, then the Riak node
+## will be shutdown. This may need to be increased as more data is
+## indexed and Solr takes longer to start. Values lower than 1s will
+## be rounded up to the minimum 1s.
+##
+## Default: 30s
+##
+## Acceptable values:
+##   - a time duration with units, e.g. '10s' for 10 seconds
+search.solr.start_timeout = 30s
+
+## The port number which Solr binds to.
+## NOTE: Binds on every interface.
+##
+## Default: 8093
+##
+## Acceptable values:
+##   - an integer
+search.solr.port = ${entity.searchSolrPort?c}
+
+## The port number which Solr JMX binds to.
+## NOTE: Binds on every interface.
+##
+## Default: 8985
+##
+## Acceptable values:
+##   - an integer
+search.solr.jmx_port = ${entity.searchSolrJmxPort?c}
+
+## The options to pass to the Solr JVM.  Non-standard options,
+## i.e. -XX, may not be portable across JVM implementations.
+## E.g. -XX:+UseCompressedStrings
+##
+## Default: -d64 -Xms1g -Xmx1g -XX:+UseStringCache -XX:+UseCompressedOops
+##
+## Acceptable values:
+##   - text
+search.solr.jvm_options = -d64 -Xms1g -Xmx1g -XX:+UseStringCache 
-XX:+UseCompressedOops
+
+## erlang, constrain port range so we can open the internal firewall ports
+erlang.distribution.port_range.minimum = ${entity.erlangPortRangeStart?c}
+erlang.distribution.port_range.maximum = ${entity.erlangPortRangeEnd?c}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp-cluster.yaml
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp-cluster.yaml
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp-cluster.yaml
new file mode 100644
index 0000000..5e184ac
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp-cluster.yaml
@@ -0,0 +1,42 @@
+#
+# 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.
+#
+
+name: Riak Cluster with Webapp Cluster
+location: jclouds:softlayer:sjc01
+services:
+- type: org.apache.brooklyn.entity.nosql.riak.RiakCluster
+  initialSize: 2
+  id: cluster
+  brooklyn.config:
+    install.version: 2.0.0
+- type: brooklyn.entity.webapp.ControlledDynamicWebAppCluster
+  name: Web Cluster
+  brooklyn.config:
+    initialSize: 2
+    controlleddynamicwebappcluster.controllerSpec:
+      $brooklyn:entitySpec:
+        type: brooklyn.entity.proxy.nginx.NginxController
+        brooklyn.config:
+          member.sensor.hostname: "host.subnet.hostname"
+    wars.root: 
"https://s3-eu-west-1.amazonaws.com/brooklyn-clocker/brooklyn-example-hello-world-sql-webapp.war";
+    java.sysprops: 
+      brooklyn.example.riak.nodes: 
$brooklyn:component("cluster").attributeWhenReady("riak.cluster.nodeList")
+
+# Alternative URL for War file if available on classpath
+# "classpath://brooklyn-example-hello-world-sql-webapp.war"

http://git-wip-us.apache.org/repos/asf/incubator-brooklyn/blob/d5cf5285/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp.yaml
----------------------------------------------------------------------
diff --git 
a/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp.yaml
 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp.yaml
new file mode 100644
index 0000000..d2b08ff
--- /dev/null
+++ 
b/software/nosql/src/main/resources/org/apache/brooklyn/entity/nosql/riak/riak-with-webapp.yaml
@@ -0,0 +1,36 @@
+#
+# 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.
+#
+
+name: Riak Cluster with Webapp
+location: aws-ec2:eu-west-1
+services:
+- type: org.apache.brooklyn.entity.nosql.riak.RiakCluster
+  initialSize: 2
+  id: cluster
+- type: brooklyn.entity.webapp.jboss.JBoss7Server
+  name: Web
+  brooklyn.config:
+    wars.root: 
"https://s3-eu-west-1.amazonaws.com/brooklyn-clocker/brooklyn-example-hello-world-sql-webapp.war";
+    java.sysprops: 
+      brooklyn.example.riak.nodes: 
$brooklyn:component("cluster").attributeWhenReady("riak.cluster.nodeList")
+  provisioning.properties:
+    osFamily: centos
+
+# Alternative URL for War file if available on classpath
+# "classpath://brooklyn-example-hello-world-sql-webapp.war"

Reply via email to