Add icons to catalog.bom files
diff --git a/software/cm/ansible/src/main/resources/catalog.bom b/software/cm/ansible/src/main/resources/catalog.bom
index f93ae7d..8dec54c 100644
--- a/software/cm/ansible/src/main/resources/catalog.bom
+++ b/software/cm/ansible/src/main/resources/catalog.bom
@@ -20,6 +20,7 @@
     itemType: entity
     items:
     - id: org.apache.brooklyn.entity.cm.ansible.AnsibleEntity
+      iconUrl: classpath:///ansible-logo.png
       item:
         type: org.apache.brooklyn.entity.cm.ansible.AnsibleEntity
         name: AnsibleEntity
diff --git a/software/cm/salt/src/main/resources/catalog.bom b/software/cm/salt/src/main/resources/catalog.bom
index 6d60a34..5d4e767 100644
--- a/software/cm/salt/src/main/resources/catalog.bom
+++ b/software/cm/salt/src/main/resources/catalog.bom
@@ -20,6 +20,7 @@
     itemType: entity
     items:
     - id: org.apache.brooklyn.entity.cm.salt.SaltEntity
+      iconUrl: classpath:///saltstack-logo.png
       item:
         type: org.apache.brooklyn.entity.cm.salt.SaltEntity
         name: SaltEntity
diff --git a/software/database/src/main/resources/catalog.bom b/software/database/src/main/resources/catalog.bom
index e033aa7..4c09ec4 100644
--- a/software/database/src/main/resources/catalog.bom
+++ b/software/database/src/main/resources/catalog.bom
@@ -20,32 +20,37 @@
     itemType: entity
     items:
     - id: org.apache.brooklyn.entity.database.crate.CrateNode
+      iconUrl: classpath:///crate-logo.png
       item:
         type: org.apache.brooklyn.entity.database.crate.CrateNode
         name: Crate Node
         description: CrateDB offers Standard-SQL real-time queries and document support
     - id: org.apache.brooklyn.entity.database.mysql.MySqlNode
+      iconUrl: classpath:///mysql-logo-110x57.png
       item:
         type: org.apache.brooklyn.entity.database.mysql.MySqlNode
         name: MySql Node
         description: MySql is an open source relational database management system (RDBMS)
     - id: org.apache.brooklyn.entity.database.mysql.MySqlCluster
+      iconUrl: classpath:///mysql-logo-110x57.png
       item:
         type: org.apache.brooklyn.entity.database.mysql.MySqlCluster
         name: MySql Master-Slave cluster
         description: Sets up a cluster of MySQL nodes using master-slave relation and binary logging
     - id: org.apache.brooklyn.entity.database.postgresql.PostgreSqlNode
+      iconUrl: classpath:///postgresql-logo-200px.png
       item:
         type: org.apache.brooklyn.entity.database.postgresql.PostgreSqlNode
         name: PostgreSQL Node
         description: PostgreSQL is an object-relational database management system (ORDBMS)
     - id: org.apache.brooklyn.entity.database.rubyrep.RubyRepNode
+      iconUrl: classpath:///rubyrep-logo.png
       item:
         type: org.apache.brooklyn.entity.database.rubyrep.RubyRepNode
         name: RubyRep Node
         description: RubyRep is a database replication system
-        iconUrl: classpath:///rubyrep-logo.jpeg
     - id: org.apache.brooklyn.entity.database.mariadb.MariaDbNode
+      iconUrl: classpath:///mariadb-logo-180x119.png
       item:
         type: org.apache.brooklyn.entity.database.mariadb.MariaDbNode
         name: MariaDB Node
diff --git a/software/messaging/src/main/resources/catalog.bom b/software/messaging/src/main/resources/catalog.bom
index 43cd9ca..a51025d 100644
--- a/software/messaging/src/main/resources/catalog.bom
+++ b/software/messaging/src/main/resources/catalog.bom
@@ -20,65 +20,79 @@
     itemType: entity
     items:
     - id: org.apache.brooklyn.entity.messaging.activemq.ActiveMQBroker
+      iconUrl: classpath:///activemq-logo.png
       item:
         type: org.apache.brooklyn.entity.messaging.activemq.ActiveMQBroker
         name: ActiveMQ Broker
         description: ActiveMQ is an open source message broker which fully implements the Java Message Service 1.1 (JMS)
     - id: org.apache.brooklyn.entity.messaging.qpid.QpidBroker
+      iconUrl: classpath:///qpid-logo.jpeg
       item:
         type: org.apache.brooklyn.entity.messaging.qpid.QpidBroker
         name: Qpid Broker
         description: Apache Qpid is an open-source messaging system, implementing the Advanced Message Queuing Protocol (AMQP)
     - id: org.apache.brooklyn.entity.messaging.storm.Storm
+      iconUrl: classpath:///apache-storm-logo.png
       item:
         type: org.apache.brooklyn.entity.messaging.storm.Storm
         name: Storm Node
         description: Apache Storm is a distributed realtime computation system. 
     - id: org.apache.brooklyn.entity.messaging.kafka.KafkaCluster
+      iconUrl: classpath:///kafka-logo.png
       item:
         type: org.apache.brooklyn.entity.messaging.kafka.KafkaCluster
         name: Kafka
         description: Apache Kafka is a distributed publish-subscribe messaging system
     - id: org.apache.brooklyn.entity.messaging.activemq.ActiveMQQueue
+      iconUrl: classpath:///activemq-logo.png
       item:
         type: org.apache.brooklyn.entity.messaging.activemq.ActiveMQQueue
         name: ActiveMQ Queue
     - id: org.apache.brooklyn.entity.zookeeper.ZooKeeperEnsemble
+      iconUrl: classpath:///zookeeper-logo.gif
       item:
         type: org.apache.brooklyn.entity.zookeeper.ZooKeeperEnsemble
         name: ZooKeeper ensemble
         description: A cluster of ZooKeeper servers. 
     - id: org.apache.brooklyn.entity.messaging.kafka.KafkaZooKeeper
+      iconUrl: classpath:///kafka-logo.png
       item:
         type: org.apache.brooklyn.entity.messaging.kafka.KafkaZooKeeper
         name: Kafka ZooKeeper
     - id: org.apache.brooklyn.entity.messaging.activemq.ActiveMQTopic
+      iconUrl: classpath:///activemq-logo.png
       item:
         type: org.apache.brooklyn.entity.messaging.activemq.ActiveMQTopic
         name: ActiveMQ Topic
     - id: org.apache.brooklyn.entity.messaging.qpid.QpidQueue
+      iconUrl: classpath:///qpid-logo.jpeg
       item:
         type: org.apache.brooklyn.entity.messaging.qpid.QpidQueue
         name: Qpid Queue
     - id: org.apache.brooklyn.entity.zookeeper.ZooKeeperNode
+      iconUrl: classpath:///zookeeper-logo.gif
       item:
         type: org.apache.brooklyn.entity.zookeeper.ZooKeeperNode
         name: ZooKeeper Node
         description: Apache ZooKeeper is a server which enables 
     - id: org.apache.brooklyn.entity.messaging.rabbit.RabbitBroker
+      iconUrl: classpath:///RabbitMQLogo.png
       item:
         type: org.apache.brooklyn.entity.messaging.rabbit.RabbitBroker
         name: RabbitMQ Broker
         description: RabbitMQ is an open source message broker software (i.e. message-oriented middleware) that implements the Advanced Message Queuing Protocol (AMQP) standard
     - id: org.apache.brooklyn.entity.messaging.kafka.KafkaBroker
+      iconUrl: classpath:///kafka-logo.png
       item:
         type: org.apache.brooklyn.entity.messaging.kafka.KafkaBroker
         name: Kafka Broker
     - id: org.apache.brooklyn.entity.messaging.qpid.QpidTopic
+      iconUrl: classpath:///qpid-logo.jpeg
       item:
         type: org.apache.brooklyn.entity.messaging.qpid.QpidTopic
         name: Qpid Topic
     - id: org.apache.brooklyn.entity.messaging.storm.StormDeployment
+      iconUrl: classpath:///apache-storm-logo.png
       item:
         type: org.apache.brooklyn.entity.messaging.storm.StormDeployment
         name: Storm Deployment
diff --git a/software/monitoring/src/main/resources/catalog.bom b/software/monitoring/src/main/resources/catalog.bom
index 49f7b1d..cd175e5 100644
--- a/software/monitoring/src/main/resources/catalog.bom
+++ b/software/monitoring/src/main/resources/catalog.bom
@@ -20,6 +20,7 @@
     itemType: entity
     items:
     - id: org.apache.brooklyn.entity.monitoring.monit.MonitNode
+      iconUrl: classpath:///monit-logo.png
       item:
         type: org.apache.brooklyn.entity.monitoring.monit.MonitNode
         name: Monit Node
diff --git a/software/nosql/src/main/resources/catalog.bom b/software/nosql/src/main/resources/catalog.bom
index f9976f1..c8622a0 100644
--- a/software/nosql/src/main/resources/catalog.bom
+++ b/software/nosql/src/main/resources/catalog.bom
@@ -20,86 +20,105 @@
     itemType: entity
     items:
     - id: org.apache.brooklyn.entity.nosql.redis.RedisStore
+      iconUrl: classpath:///redis-logo.png
       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
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBRouterCluster
         name: MongoDB Router Cluster
     - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraDatacenter
+      iconUrl: classpath:///cassandra-logo.png
       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
+      iconUrl: classpath:///solr-logo.png
       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
+      iconUrl: classpath:///couchdb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.couchdb.CouchDBNode
         name: CouchDB Node
     - id: org.apache.brooklyn.entity.nosql.redis.RedisShard
+      iconUrl: classpath:///redis-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.redis.RedisShard
         name: Redis Shard
     - id: org.apache.brooklyn.entity.nosql.redis.RedisCluster
+      iconUrl: classpath:///redis-logo.png
       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
+      iconUrl: classpath:///hazelcast-logo.png
       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
+      iconUrl: classpath:///couchdb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.couchdb.CouchDBCluster
         name: CouchDB Cluster
     - id: org.apache.brooklyn.entity.nosql.couchbase.CouchbaseNode
+      iconUrl: classpath:///couchbase-logo.png
       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
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardedDeployment
         name: MongoDB Sharded Deployment
     - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraNode
+      iconUrl: classpath:///cassandra-logo.png
       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
+      iconUrl: classpath:///org/apache/brooklyn/entity/nosql/riak/riak.png
       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
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServerCluster
         name: MongoDB Config Server Cluster
     - id: org.apache.brooklyn.entity.nosql.mongodb.MongoDBServer
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.MongoDBServer
         name: MongoDB Server
     - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBRouter
         name: MongoDB Router
     - id: org.apache.brooklyn.entity.nosql.mongodb.MongoDBReplicaSet
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.MongoDBReplicaSet
         name: MongoDB Replica Set
     - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardCluster
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardCluster
         name: MongoDB Shard Cluster
     - id: org.apache.brooklyn.entity.nosql.mongodb.MongoDBClient
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.MongoDBClient
         name: MongoDB Client
@@ -109,6 +128,7 @@
         name: Elastic Search Node
         description: Elasticsearch is an open-source search server based on Lucene. 
     - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraFabric
+      iconUrl: classpath:///cassandra-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.cassandra.CassandraFabric
         name: Apache Cassandra Database Fabric
@@ -119,37 +139,45 @@
         name: Elastic Search Cluster
         description: Elasticsearch is an open-source search server based on Lucene. 
     - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraCluster
+      iconUrl: classpath:///cassandra-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.cassandra.CassandraCluster
         name: Cassandra Cluster
     - id: org.apache.brooklyn.entity.nosql.redis.RedisSlave
+      iconUrl: classpath:///redis-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.redis.RedisSlave
         name: Redis Slave
     - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServer
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServer
         name: MongoDB Config Server
     - id: org.apache.brooklyn.entity.nosql.couchbase.CouchbaseCluster
+      iconUrl: classpath:///couchbase-logo.png
       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
+      iconUrl: classpath:///couchbase-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.couchbase.CouchbaseSyncGateway
         name: Couchbase Sync Gateway
     - id: org.apache.brooklyn.entity.nosql.hazelcast.HazelcastNode
+      iconUrl: classpath:///hazelcast-logo.png
       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
+      iconUrl: classpath:///org/apache/brooklyn/entity/nosql/riak/riak.png
       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
+      iconUrl: classpath:///mongodb-logo.png
       item:
         type: org.apache.brooklyn.entity.nosql.mongodb.sharding.CoLocatedMongoDBRouter
         name: Co-located MongoDB Router
diff --git a/software/osgi/src/main/resources/catalog.bom b/software/osgi/src/main/resources/catalog.bom
index 4f05e14..029bb75 100644
--- a/software/osgi/src/main/resources/catalog.bom
+++ b/software/osgi/src/main/resources/catalog.bom
@@ -20,6 +20,7 @@
     itemType: entity
     items:
     - id: org.apache.brooklyn.entity.osgi.karaf.KarafContainer
+      iconUrl: classpath:///karaf-logo.png
       item:
         type: org.apache.brooklyn.entity.osgi.karaf.KarafContainer
         name: Karaf
diff --git a/software/webapp/src/main/resources/catalog.bom b/software/webapp/src/main/resources/catalog.bom
index c694bdd..e1e21e8 100644
--- a/software/webapp/src/main/resources/catalog.bom
+++ b/software/webapp/src/main/resources/catalog.bom
@@ -20,10 +20,12 @@
     itemType: entity
     items:
     - id: org.apache.brooklyn.entity.webapp.nodejs.NodeJsWebAppService
+      iconUrl: classpath:///nodejs-logo.png
       item:
         type: org.apache.brooklyn.entity.webapp.nodejs.NodeJsWebAppService
         name: Node.JS Application
     - id: org.apache.brooklyn.entity.webapp.jboss.JBoss7Server
+      iconUrl: classpath:///jboss_logo.png
       item:
         type: org.apache.brooklyn.entity.webapp.jboss.JBoss7Server
         name: JBoss Application Server 7
@@ -37,16 +39,19 @@
         type: org.apache.brooklyn.entity.webapp.DynamicWebAppFabric
         name: Dynamic Web App Fabric
     - id: org.apache.brooklyn.entity.proxy.nginx.NginxController
+      iconUrl: classpath:///nginx-logo.jpeg
       item:
         type: org.apache.brooklyn.entity.proxy.nginx.NginxController
         name: Nginx Server
         description: A single Nginx server. Provides HTTP and reverse proxy services
     - id: org.apache.brooklyn.entity.webapp.jboss.JBoss6Server
+      iconUrl: classpath:///jboss_logo.png
       item:
         type: org.apache.brooklyn.entity.webapp.jboss.JBoss6Server
         name: JBoss Application Server 6
         description: AS6 -  an open source Java application server from JBoss
     - id: org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server
+      iconUrl: classpath:///tomcat-logo.png
       item:
         type: org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server
         name: Tomcat 8 Server
@@ -58,6 +63,7 @@
           A cluster of load balancers; configuring the cluster (through the LoadBalancer interface)
           will configure all load balancers in the cluster.
     - id: org.apache.brooklyn.entity.webapp.jetty.Jetty6Server
+      iconUrl: classpath:///jetty-logo.png
       item:
         type: org.apache.brooklyn.entity.webapp.jetty.Jetty6Server
         name: Jetty6 Server
@@ -68,10 +74,12 @@
         name: Dynamic Web-app Cluster
         description: A cluster of web-apps, which can be dynamically re-sized; this does not include a load-balancer
     - id: org.apache.brooklyn.entity.webapp.tomcat.TomcatServer
+      iconUrl: classpath:///tomcat-logo.png
       item:
         type: org.apache.brooklyn.entity.webapp.tomcat.TomcatServer
         name: Tomcat 7 Server
     - id: org.apache.brooklyn.entity.dns.geoscaling.GeoscalingDnsService
+      iconUrl: classpath:///geoscaling-logo.gif
       item:
         type: org.apache.brooklyn.entity.dns.geoscaling.GeoscalingDnsService
         name: Geoscaling DNS Service
@@ -83,6 +91,7 @@
         description: A cluster of load-balanced web-apps, which can be dynamically re-sized
 
     - id: load-balancer
+      iconUrl: classpath:///nginx-logo.jpeg
       item:
         type: org.apache.brooklyn.entity.proxy.nginx.NginxController
         name: Load Balancer (nginx)