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

id: nodejs-todo-application
name: "Node.JS Todo Application"
origin: "https://github.com/amirrajan/nodejs-todo/"
locations:
- jclouds:softlayer:ams01
services:
- type: org.apache.brooklyn.entity.nosql.redis.RedisStore
  id: redis
  name: "Redis"
- type: org.apache.brooklyn.entity.webapp.nodejs.NodeJsWebAppService
  id: nodejs
  name: "Node.JS"
  brooklyn.config:
    gitRepoUrl:
      "https://github.com/grkvlt/nodejs-todo/"
    appFileName: server.js
    appName: nodejs-todo
    nodePackages:
    - express
    - ejs
    - jasmine-node
    - underscore
    - method-override
    - cookie-parser
    - express-session
    - body-parser
    - cookie-session
    - redis
    - redis-url
    - connect
    env:
      REDISTOGO_URL: >
        $brooklyn:formatString("redis://%s:%d/",
          component("redis").attributeWhenReady("host.subnet.hostname"),
          component("redis").attributeWhenReady("redis.port"))
    launch.latch: $brooklyn:component("redis").attributeWhenReady("service.isUp")