#
# 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:
  items:
  - id: byon1
    version: "0.10.0-SNAPSHOT"  # BROOKLYN_VERSION
    itemType: location
    name: Vagrant BYON VM 1
    item:
      type: byon
      brooklyn.config:
        user: vagrant
        password: vagrant
        hosts:
        - 10.10.10.101

  - id: byon2
    name: Vagrant BYON VM 2
    version: "0.10.0-SNAPSHOT"  # BROOKLYN_VERSION
    itemType: location
    item:
      type: byon
      brooklyn.config:
        user: vagrant
        password: vagrant
        hosts:
        - 10.10.10.102

  - id: byon3
    version: "0.10.0-SNAPSHOT"  # BROOKLYN_VERSION
    itemType: location
    name: Vagrant BYON VM 3
    item:
      type: byon
      brooklyn.config:
        user: vagrant
        password: vagrant
        hosts:
        - 10.10.10.103

  - id: byon4
    version: "0.10.0-SNAPSHOT"  # BROOKLYN_VERSION
    itemType: location
    name: Vagrant BYON VM 4
    item:
      type: byon
      brooklyn.config:
        user: vagrant
        password: vagrant
        hosts:
        - 10.10.10.104

  - id: byon-all
    version: "0.10.0-SNAPSHOT"  # BROOKLYN_VERSION
    itemType: location
    name: Vagrant BYON VM 1-4
    item:
      type: byon
      brooklyn.config:
        user: vagrant
        password: vagrant
        hosts:
        - 10.10.10.101
        - 10.10.10.102
        - 10.10.10.103
        - 10.10.10.104
