#
# 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: "1.0.0-SNAPSHOT"   # 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")
