From e10f2e6213dc17b68bbd4a5afd803b6e23c78ee5 Mon Sep 17 00:00:00 2001 From: Thomas Bouron Date: Wed, 20 Sep 2017 11:54:43 +0100 Subject: [PATCH 1/3] Reuse each bundle's catalog.bom file to build global catalog.bom --- karaf/catalog/src/main/resources/catalog.bom | 32 ++ .../resources/library-catalog-classes.bom | 402 ------------------ .../network/src/main/resources/catalog.bom | 1 + software/nosql/src/main/resources/catalog.bom | 49 --- .../webapp/src/main/resources/catalog.bom | 162 ------- 5 files changed, 33 insertions(+), 613 deletions(-) create mode 100644 karaf/catalog/src/main/resources/catalog.bom delete mode 100644 karaf/catalog/src/main/resources/library-catalog-classes.bom diff --git a/karaf/catalog/src/main/resources/catalog.bom b/karaf/catalog/src/main/resources/catalog.bom new file mode 100644 index 000000000..5dd7f1417 --- /dev/null +++ b/karaf/catalog/src/main/resources/catalog.bom @@ -0,0 +1,32 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +brooklyn.catalog: + version: "0.13.0-SNAPSHOT" # BROOKLYN_VERSION + + items: + - classpath://org.apache.brooklyn.software-cm-ansible:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION +# TODO: Uncomment once chef has been moved to brooklyn-library +# - classpath://org.apache.brooklyn.software-cm-chef:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION + - classpath://org.apache.brooklyn.software-cm-salt:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION + - classpath://org.apache.brooklyn.software-database:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION + - classpath://org.apache.brooklyn.software-messaging:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION + - classpath://org.apache.brooklyn.software-monitoring:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION + - classpath://org.apache.brooklyn.software-network:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION + - classpath://org.apache.brooklyn.software-nosql:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION + - classpath://org.apache.brooklyn.software-osgi:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION + - classpath://org.apache.brooklyn.software-webapp:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION diff --git a/karaf/catalog/src/main/resources/library-catalog-classes.bom b/karaf/catalog/src/main/resources/library-catalog-classes.bom deleted file mode 100644 index 2fafd42ca..000000000 --- a/karaf/catalog/src/main/resources/library-catalog-classes.bom +++ /dev/null @@ -1,402 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. -# -brooklyn.catalog: - version: "0.13.0-SNAPSHOT" # BROOKLYN_VERSION - include: classpath://catalog-classes.bom - - items: - - # org.apache.brooklyn.software-webapp - - itemType: entity - items: - - id: org.apache.brooklyn.entity.webapp.nodejs.NodeJsWebAppService - iconUrl: classpath:///nodejs-logo.png - item: - type: org.apache.brooklyn.entity.webapp.nodejs.NodeJsWebAppService - name: Node.JS Application - - id: org.apache.brooklyn.entity.webapp.jboss.JBoss7Server - iconUrl: classpath:///jboss-logo.png - item: - type: org.apache.brooklyn.entity.webapp.jboss.JBoss7Server - name: JBoss Application Server 7 - description: AS7 - an open source Java application server from JBoss - - id: org.apache.brooklyn.entity.proxy.nginx.UrlMapping - item: - type: org.apache.brooklyn.entity.proxy.nginx.UrlMapping - - id: org.apache.brooklyn.entity.webapp.DynamicWebAppFabric - item: - type: org.apache.brooklyn.entity.webapp.DynamicWebAppFabric - - id: org.apache.brooklyn.entity.proxy.nginx.NginxController - iconUrl: classpath:///nginx-logo.jpeg - item: - type: org.apache.brooklyn.entity.proxy.nginx.NginxController - name: Nginx Server - description: A single Nginx server. Provides HTTP and reverse proxy services - - id: org.apache.brooklyn.entity.webapp.jboss.JBoss6Server - iconUrl: classpath:///jboss-logo.png - item: - type: org.apache.brooklyn.entity.webapp.jboss.JBoss6Server - name: JBoss Application Server 6 - description: AS6 - an open source Java application server from JBoss - - id: org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server - iconUrl: classpath:///tomcat-logo.png - item: - type: org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server - name: Tomcat 8 Server - - id: org.apache.brooklyn.entity.proxy.LoadBalancerCluster - item: - type: org.apache.brooklyn.entity.proxy.LoadBalancerCluster - - id: org.apache.brooklyn.entity.webapp.jetty.Jetty6Server - iconUrl: classpath:///jetty-logo.png - item: - type: org.apache.brooklyn.entity.webapp.jetty.Jetty6Server - name: Jetty6 Server - description: Old version (v6 @ Mortbay) of the popular Jetty webapp container - - id: org.apache.brooklyn.entity.webapp.DynamicWebAppCluster - item: - type: org.apache.brooklyn.entity.webapp.DynamicWebAppCluster - name: Dynamic Web-app Cluster - description: A cluster of web-apps, which can be dynamically re-sized; this does not include a load-balancer - - id: org.apache.brooklyn.entity.webapp.tomcat.TomcatServer - iconUrl: classpath:///tomcat-logo.png - item: - type: org.apache.brooklyn.entity.webapp.tomcat.TomcatServer - name: Tomcat 7 Server - - id: org.apache.brooklyn.entity.dns.geoscaling.GeoscalingDnsService - iconUrl: classpath:///geoscaling-logo.gif - item: - type: org.apache.brooklyn.entity.dns.geoscaling.GeoscalingDnsService - - id: org.apache.brooklyn.entity.webapp.ControlledDynamicWebAppCluster - item: - type: org.apache.brooklyn.entity.webapp.ControlledDynamicWebAppCluster - name: Controlled Dynamic Web-app Cluster - description: A cluster of load-balanced web-apps, which can be dynamically re-sized - - # org.apache.brooklyn.software-osgi - - 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 - description: Apache Karaf is a small OSGi based runtime which provides a lightweight container onto which various components and applications can be deployed. - - # org.apache.brooklyn.software-nosql - - 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 - - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraDatacenter - iconUrl: classpath:///cassandra-logo.jpeg - 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.jpeg - 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 - - 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 - - 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.jpeg - 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 - - 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 - - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardCluster - iconUrl: classpath:///mongodb-logo.png - item: - type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBShardCluster - - id: org.apache.brooklyn.entity.nosql.mongodb.MongoDBClient - iconUrl: classpath:///mongodb-logo.png - item: - type: org.apache.brooklyn.entity.nosql.mongodb.MongoDBClient - - id: org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchNode - item: - type: org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchNode - name: Elastic Search Node - description: Elasticsearch is an open-source search server based on Lucene. - - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraFabric - iconUrl: classpath:///cassandra-logo.jpeg - item: - type: org.apache.brooklyn.entity.nosql.cassandra.CassandraFabric - name: Apache Cassandra Database Fabric - description: Cassandra is a highly scalable, eventually - - id: org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster - item: - type: org.apache.brooklyn.entity.nosql.elasticsearch.ElasticSearchCluster - name: Elastic Search Cluster - description: Elasticsearch is an open-source search server based on Lucene. - - id: org.apache.brooklyn.entity.nosql.cassandra.CassandraCluster - iconUrl: classpath:///cassandra-logo.jpeg - item: - type: org.apache.brooklyn.entity.nosql.cassandra.CassandraCluster - - id: org.apache.brooklyn.entity.nosql.redis.RedisSlave - iconUrl: classpath:///redis-logo.png - item: - type: org.apache.brooklyn.entity.nosql.redis.RedisSlave - - id: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServer - iconUrl: classpath:///mongodb-logo.png - item: - type: org.apache.brooklyn.entity.nosql.mongodb.sharding.MongoDBConfigServer - - 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 - - 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 - - # org.apache.brooklyn.software-network - - itemType: entity - items: - - id: org.apache.brooklyn.entity.network.bind.BindDnsServer - description: BIND is an Internet Domain Name Server. - item: - type: org.apache.brooklyn.entity.network.bind.BindDnsServer - name: BIND - - # org.apache.brooklyn.software-monitoring - - 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 - description: Monit is a free open source utility for managing and monitoring, processes, programs, files, directories and filesystems on a UNIX system - - # org.apache.brooklyn.software-messaging - - 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 - - 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:///zookeeper_logo.gif - item: - type: org.apache.brooklyn.entity.messaging.kafka.KafkaZooKeeper - - id: org.apache.brooklyn.entity.messaging.activemq.ActiveMQTopic - iconUrl: classpath:///activemq-logo.png - item: - type: org.apache.brooklyn.entity.messaging.activemq.ActiveMQTopic - - id: org.apache.brooklyn.entity.messaging.qpid.QpidQueue - iconUrl: classpath:///qpid-logo.jpeg - item: - type: org.apache.brooklyn.entity.messaging.qpid.QpidQueue - - 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 - - id: org.apache.brooklyn.entity.messaging.qpid.QpidTopic - iconUrl: classpath:///qpid-logo.jpeg - item: - type: org.apache.brooklyn.entity.messaging.qpid.QpidTopic - - 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 - description: A Storm cluster. Apache Storm is a distributed realtime computation system. - - # org.apache.brooklyn.software-database - - 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 - - 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 - item: - type: org.apache.brooklyn.entity.database.rubyrep.RubyRepNode - - 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 - description: MariaDB is an open source relational database management system (RDBMS) - - # org.apache.brooklyn.software-cm-salt - - 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 - description: Software managed by Salt CM - - # org.apache.brooklyn.software-cm-ansible - - 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 - description: Software managed by Ansible CM \ No newline at end of file diff --git a/software/network/src/main/resources/catalog.bom b/software/network/src/main/resources/catalog.bom index ef71a4a74..ae0799ee2 100644 --- a/software/network/src/main/resources/catalog.bom +++ b/software/network/src/main/resources/catalog.bom @@ -21,6 +21,7 @@ brooklyn.catalog: items: - id: org.apache.brooklyn.entity.network.bind.BindDnsServer description: BIND is an Internet Domain Name Server. + iconUrl: classpath:///isc-logo.png item: type: org.apache.brooklyn.entity.network.bind.BindDnsServer name: BIND diff --git a/software/nosql/src/main/resources/catalog.bom b/software/nosql/src/main/resources/catalog.bom index 12990a1b6..71d7dc138 100644 --- a/software/nosql/src/main/resources/catalog.bom +++ b/software/nosql/src/main/resources/catalog.bom @@ -181,52 +181,3 @@ brooklyn.catalog: item: type: org.apache.brooklyn.entity.nosql.mongodb.sharding.CoLocatedMongoDBRouter name: Co-located MongoDB Router - - - - id: bash-web-and-riak-template - itemType: template - name: "Template: Bash Web Server and Scaling Riak Cluster" - description: | - Sample YAML building on Template bash-web-server-template, - composing that blueprint with a Riak cluster and injecting the URL - item: - name: Bash Web Server and Riak Cluster (Brooklyn Example) - - # this example *references* the previous one, - # combining it with a stock blueprint for a Riak cluster, - # and shows how a sensor from the latter can be injected - - services: - - # reference template bash-web-server-template, overriding message to point at riak - - type: bash-web-server-template - brooklyn.config: - my.message: $brooklyn:formatString("connected to Riak at %s", - $brooklyn:entity("riak-cluster").attributeWhenReady("main.uri")) - # and clear the location defined there so it is taken from this template - locations: [] - - # use the off-the-shelf Riak cluster - - type: org.apache.brooklyn.entity.nosql.riak.RiakCluster - id: riak-cluster - initialSize: 3 - # and add a policy to scale based on ops per minute - brooklyn.policies: - - type: org.apache.brooklyn.policy.autoscaling.AutoScalerPolicy - brooklyn.config: - metric: riak.node.ops.1m.perNode - # more than 100 ops per second (6k/min) scales out, less than 50 scales back - # up to a max of 8 riak nodes here (can be changed in GUI / REST API afterwards) - metricLowerBound: 3000 - metricUpperBound: 6000 - minPoolSize: 3 - maxPoolSize: 8 - resizeUpStabilizationDelay: 30s - resizeDownStabilizationDelay: 5m - - location: - jclouds:aws-ec2: - region: eu-central-1 - # edit these (or delete if credentials specified in brooklyn.properties) - identity: - credential: diff --git a/software/webapp/src/main/resources/catalog.bom b/software/webapp/src/main/resources/catalog.bom index 28dcfec8c..13a892be1 100644 --- a/software/webapp/src/main/resources/catalog.bom +++ b/software/webapp/src/main/resources/catalog.bom @@ -89,165 +89,3 @@ brooklyn.catalog: type: org.apache.brooklyn.entity.webapp.ControlledDynamicWebAppCluster name: Controlled Dynamic Web-app Cluster description: A cluster of load-balanced web-apps, which can be dynamically re-sized - - - id: load-balancer - iconUrl: classpath:///nginx-logo.jpeg - item: - type: org.apache.brooklyn.entity.proxy.nginx.NginxController - name: Load Balancer (nginx) - description: | - Synonym for 'Nginx Server'. - Create a load balancer which will point at members in the group entity - referred to by the config key "serverPool". - The sensor advertising the port can be configured with the "member.sensor.portNumber" config key, - defaulting to `http.port`; all member entities which have published "service.up" will then be picked up. - - - id: resilient-bash-web-cluster-template - itemType: template - name: "Template: Resilient Load-Balanced Bash Web Cluster with Sensors" - description: | - Sample YAML to provision a cluster of the bash/python web server nodes, - with sensors configured, and a load balancer pointing at them, - and resilience policies for node replacement and scaling - item: - name: Resilient Load-Balanced Bash Web Cluster (Brooklyn Example) - - # this final example shows some of the advanced functionality: - # defining custom sensors, and a cluster with a "spec", - # policies for resilience and scaling based on that sensor, - # and wiring a load balancer in front of the cluster - - # combining this with the riak cluster in the previous example - # is left as a suggested exercise for the user - - services: - - # define a cluster of the web nodes - - type: cluster - name: Cluster of Bash Web Nodes - id: my-web-cluster - brooklyn.config: - initialSize: 1 - memberSpec: - $brooklyn:entitySpec: - # template bash-web-server-template is used as the spec for items in this cluster - # with a new message overwriting the previous, - # and a lot of sensors defined - type: bash-web-server-template - name: My Bash Web Server VM with Sensors - # and clear the location defined there so it is taken from this template - locations: [] - - brooklyn.config: - my.message: "part of the cluster" - - brooklyn.initializers: - # make a simple request-count sensor, by counting the number of 200 responses in output.txt - - type: org.apache.brooklyn.core.sensor.ssh.SshCommandSensor - brooklyn.config: - name: reqs.count - targetType: int - period: 5s - command: "cat output.txt | grep HTTP | grep 200 | wc | awk '{print $1}'" - # and publish the port as a sensor so the load-balancer can pick it up - - type: org.apache.brooklyn.core.sensor.StaticSensor - brooklyn.config: - name: app.port - targetType: int - static.value: $brooklyn:config("my.app.port") - - brooklyn.enrichers: - # derive reqs.per_sec from reqs.count - - type: org.apache.brooklyn.enricher.stock.YamlTimeWeightedDeltaEnricher - brooklyn.config: - enricher.sourceSensor: reqs.count - enricher.targetSensor: reqs.per_sec - enricher.delta.period: 1s - # and take an average over 30s for reqs.per_sec into reqs.per_sec.windowed_30s - - type: org.apache.brooklyn.enricher.stock.YamlRollingTimeWindowMeanEnricher - brooklyn.config: - enricher.sourceSensor: reqs.per_sec - enricher.targetSensor: reqs.per_sec.windowed_30s - enricher.window.duration: 30s - - brooklyn.policies: - # restart if a failure is detected (with a max of one restart in 2m, sensor will propagate otherwise) - - type: org.apache.brooklyn.policy.ha.ServiceRestarter - brooklyn.config: - failOnRecurringFailuresInThisDuration: 2m - - # back at the cluster, create a total per-sec and some per-node average - brooklyn.enrichers: - - type: org.apache.brooklyn.enricher.stock.Aggregator - brooklyn.config: - enricher.sourceSensor: reqs.per_sec - enricher.targetSensor: reqs.per_sec - transformation: sum - - type: org.apache.brooklyn.enricher.stock.Aggregator - brooklyn.config: - enricher.sourceSensor: reqs.per_sec - enricher.targetSensor: reqs.per_sec.per_node - transformation: average - - type: org.apache.brooklyn.enricher.stock.Aggregator - brooklyn.config: - enricher.sourceSensor: reqs.per_sec.windowed_30s - enricher.targetSensor: reqs.per_sec.windowed_30s.per_node - transformation: average - - brooklyn.policies: - # resilience: if a per-node restart policy fails, - # just throw that node away and create a new one - - type: org.apache.brooklyn.policy.ha.ServiceReplacer - - # and scale based on reqs/sec - - type: org.apache.brooklyn.policy.autoscaling.AutoScalerPolicy - brooklyn.config: - # scale based on reqs/sec (though in a real-world situation, - # reqs.per_sec.windowed_30s.per_node might be a better choice) - metric: reqs.per_sec.per_node - - # really low numbers, so you can trigger a scale-out just by hitting reload a lot - metricUpperBound: 3 - metricLowerBound: 1 - - # sustain 3 reqs/sec for 2s and it will scale out - resizeUpStabilizationDelay: 2s - # only scale down when sustained for 1m - resizeDownStabilizationDelay: 1m - - maxPoolSize: 10 - - # and add a load-balancer pointing at the cluster - - type: load-balancer - id: load-bal - brooklyn.config: - # point this load balancer at the cluster, specifying port to forward to - loadbalancer.serverpool: $brooklyn:entity("my-web-cluster") - member.sensor.portNumber: app.port - # disable sticky sessions to allow easy validation of balancing via browser refresh - nginx.sticky: false - - brooklyn.enrichers: - # publish a few useful info sensors and KPI's to the root of the app - - type: org.apache.brooklyn.enricher.stock.Propagator - brooklyn.config: - uniqueTag: propagate-load-balancer-url - producer: $brooklyn:entity("load-bal") - propagating: - - main.uri - - type: org.apache.brooklyn.enricher.stock.Propagator - brooklyn.config: - uniqueTag: propagate-reqs-per-sec - producer: $brooklyn:entity("my-web-cluster") - propagating: - - reqs.per_sec - - reqs.per_sec.windowed_30s.per_node - - location: - jclouds:aws-ec2: - # edit these (or delete if credentials specified in brooklyn.properties) - identity: - credential: - - region: eu-central-1 - minRam: 2gb From 4fd066f178ab4e0bd82df988f14bf4443d076f3e Mon Sep 17 00:00:00 2001 From: Thomas Bouron Date: Mon, 25 Sep 2017 13:01:11 +0200 Subject: [PATCH 2/3] Use `mvn:` syntax with `brooklyn.libraries` to load OSGi bundles --- karaf/catalog/src/main/resources/catalog.bom | 22 ++++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/karaf/catalog/src/main/resources/catalog.bom b/karaf/catalog/src/main/resources/catalog.bom index 5dd7f1417..2b1351ded 100644 --- a/karaf/catalog/src/main/resources/catalog.bom +++ b/karaf/catalog/src/main/resources/catalog.bom @@ -18,15 +18,15 @@ brooklyn.catalog: version: "0.13.0-SNAPSHOT" # BROOKLYN_VERSION - items: - - classpath://org.apache.brooklyn.software-cm-ansible:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION + brooklyn.libraries: + - mvn:org.apache.brooklyn/brooklyn-software-cm-ansible/0.13.0-SNAPSHOT # BROOKLYN_VERSION # TODO: Uncomment once chef has been moved to brooklyn-library -# - classpath://org.apache.brooklyn.software-cm-chef:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION - - classpath://org.apache.brooklyn.software-cm-salt:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION - - classpath://org.apache.brooklyn.software-database:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION - - classpath://org.apache.brooklyn.software-messaging:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION - - classpath://org.apache.brooklyn.software-monitoring:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION - - classpath://org.apache.brooklyn.software-network:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION - - classpath://org.apache.brooklyn.software-nosql:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION - - classpath://org.apache.brooklyn.software-osgi:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION - - classpath://org.apache.brooklyn.software-webapp:0.13.0-SNAPSHOT:catalog.bom # BROOKLYN_VERSION +# - mvn:org.apache.brooklyn/brooklyn-software-cm-chef/0.13.0-SNAPSHOT # BROOKLYN_VERSION + - mvn:org.apache.brooklyn/brooklyn-software-cm-salt/0.13.0-SNAPSHOT # BROOKLYN_VERSION + - mvn:org.apache.brooklyn/brooklyn-software-database/0.13.0-SNAPSHOT # BROOKLYN_VERSION + - mvn:org.apache.brooklyn/brooklyn-software-messaging/0.13.0-SNAPSHOT # BROOKLYN_VERSION + - mvn:org.apache.brooklyn/brooklyn-software-monitoring/0.13.0-SNAPSHOT # BROOKLYN_VERSION + - mvn:org.apache.brooklyn/brooklyn-software-network/0.13.0-SNAPSHOT # BROOKLYN_VERSION + - mvn:org.apache.brooklyn/brooklyn-software-nosql/0.13.0-SNAPSHOT # BROOKLYN_VERSION + - mvn:org.apache.brooklyn/brooklyn-software-osgi/0.13.0-SNAPSHOT # BROOKLYN_VERSION + - mvn:org.apache.brooklyn/brooklyn-software-webapp/0.13.0-SNAPSHOT # BROOKLYN_VERSION From 2f90c0d847bab49416530ab983fc0e4206fdf7b7 Mon Sep 17 00:00:00 2001 From: Thomas Bouron Date: Fri, 29 Sep 2017 11:54:00 +0200 Subject: [PATCH 3/3] Add chef in the global library catalog.bom --- karaf/catalog/src/main/resources/catalog.bom | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/karaf/catalog/src/main/resources/catalog.bom b/karaf/catalog/src/main/resources/catalog.bom index 2b1351ded..1550f3ff0 100644 --- a/karaf/catalog/src/main/resources/catalog.bom +++ b/karaf/catalog/src/main/resources/catalog.bom @@ -20,8 +20,7 @@ brooklyn.catalog: brooklyn.libraries: - mvn:org.apache.brooklyn/brooklyn-software-cm-ansible/0.13.0-SNAPSHOT # BROOKLYN_VERSION -# TODO: Uncomment once chef has been moved to brooklyn-library -# - mvn:org.apache.brooklyn/brooklyn-software-cm-chef/0.13.0-SNAPSHOT # BROOKLYN_VERSION + - mvn:org.apache.brooklyn/brooklyn-software-cm-chef/0.13.0-SNAPSHOT # BROOKLYN_VERSION - mvn:org.apache.brooklyn/brooklyn-software-cm-salt/0.13.0-SNAPSHOT # BROOKLYN_VERSION - mvn:org.apache.brooklyn/brooklyn-software-database/0.13.0-SNAPSHOT # BROOKLYN_VERSION - mvn:org.apache.brooklyn/brooklyn-software-messaging/0.13.0-SNAPSHOT # BROOKLYN_VERSION