location: ibm-bluebox-lon-vpn
services:
  - type: org.apache.brooklyn.entity.database.mysql.MySqlNode
    name: MySqlNode
    id: mysql-node
    brooklyn.initializers:
      - type: org.apache.brooklyn.core.sensor.StaticSensor
        brooklyn.config:
          name: microservice.sql.user
          static.value: micro-user
      - type: org.apache.brooklyn.core.sensor.StaticSensor
        brooklyn.config:
          name: microservice.sql.password
          static.value: kjr67GHSGDH2jvnna
      - type: org.apache.brooklyn.core.sensor.StaticSensor
        brooklyn.config:
          name: microservice.host
          static.value: $brooklyn:component("microservice").attributeWhenReady("host.address")

    brooklyn.config:
      pre.install.command: >
        which yum && sudo yum update -y
        which apt-get && sudo apt-get update -y && sudo apt-get upgrade -y
      creationScriptTemplateUrl: #link to freemarker creation template (I.E. creation_script.mysql.ftl)

    provisioning.properties:
      minRam: 4gb
      minCores: 4
      minDisk: 100gb
  - type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
    id: microservice
    name: microservice
    brooklyn.initializers:
      - type: org.apache.brooklyn.core.sensor.StaticSensor
        brooklyn.config:
          name: microservice.admin.user
          static.value: admin
      - type: org.apache.brooklyn.core.sensor.StaticSensor
        brooklyn.config:
          name: microservice.admin.password
          static.value: mypassword
    brooklyn.config:
      download.url: #link to JAR. E.G. artifactory link

      install.command: |
        which java || \
        { sudo apt-get update && sudo apt-get -y install openjdk-7-jre ; } || \
        { sudo yum update && sudo yum install java-1.7.0-openjdk ; } || \
        { echo WARNING: cannot install Java && exit 1 ; }
      #metering-microservice-1.0.jar to be replaced by name of artifact downloaded by download.url statement
      launch.command: |
        $brooklyn:formatString("
        nohup java -jar metering-microservice-1.0.jar \\
        --spring.datasource.username=%s \\
        --spring.datasource.password=%s \\
        --spring.datasource.url=jdbc:%smydb \\
        --security.user.name=%s \\
        --security.user.password=%s &
        ",
        $brooklyn:component("mysql-node").attributeWhenReady("microservice.sql.user"),
        $brooklyn:component("mysql-node").attributeWhenReady("microservice.sql.password"),
        $brooklyn:component("mysql-node").attributeWhenReady("datastore.url"),
        attributeWhenReady("microservice.admin.user"),
        attributeWhenReady("microservice.admin.password")
        )

      checkRunning.command: |
        $brooklyn:formatString("counter=`wget -T 15 -q -O- %s:8080/health --http-user=%s --http-password=%s | grep -c \"status.:.UP\"`; if [ $counter -eq 0 ]; then exit 1; fi",
        $brooklyn:attributeWhenReady("host.address"),
        attributeWhenReady("microservice.admin.user"),
        attributeWhenReady("microservice.admin.password")
        )
    provisioning.properties:
      minRam: 4gb
      minCores: 4
      minDisk: 5gb