#
# 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.
#

# standalone catalog file

brooklyn.catalog:
  version: "0.12.0"   # BROOKLYN_VERSION
  items:
  - id: java-cluster-db-policy-example
    itemType: template
    name: Elastic Web + DB
    description: Sample elastic Java cluster fronted by nginx with a MySQL backend, including a scaling policy
    iconUrl: http://www.apache.org/foundation/press/kit/poweredBy/Apache_PoweredBy.png
    item:
      name: Elastic Web + DB
      services:
      - type: org.apache.brooklyn.entity.webapp.ControlledDynamicWebAppCluster
        name: My Web with Policy
        war: 
          http://repo1.maven.org/maven2/org/apache/brooklyn/example/brooklyn-example-hello-world-sql-webapp/0.9.0/brooklyn-example-hello-world-sql-webapp-0.9.0.war
        java.sysprops: 
          brooklyn.example.db.url: $brooklyn:formatString("jdbc:%s%s?user=%s&password=%s",
             component("db").attributeWhenReady("datastore.url"), "visitors", "brooklyn", 
             $brooklyn:external("brooklyn-demo-sample", "hidden-brooklyn-password"))
      
        brooklyn.policies:
        - type: org.apache.brooklyn.policy.autoscaling.AutoScalerPolicy
          brooklyn.config:
            metric: $brooklyn:sensor("org.apache.brooklyn.entity.webapp.DynamicWebAppCluster", "webapp.reqs.perSec.windowed.perNode")
            metricLowerBound: 10
            metricUpperBound: 100
            minPoolSize: 1
            maxPoolSize: 5
            
      - type: org.apache.brooklyn.entity.database.mysql.MySqlNode
        id: db
        name: My DB
        creationScriptUrl:
          https://raw.githubusercontent.com/apache/brooklyn-library/master/examples/simple-web-cluster/src/main/resources/visitors-creation-script.sql
        brooklyn.config:
          creation.script.password: $brooklyn:external("brooklyn-demo-sample", "hidden-brooklyn-password")
