# This is Brooklyn's .properties file.
# It should be located at "~/.brooklyn/brooklyn.properties"

##################################  Welcome!  ############################################

# It's great to have you here.

# Getting Started options have been pulled to the top. They are repeated further down.
# When you are happy with what Brooklyn does, and how to use it, you can delete this
# Getting Started Section completely, and use the full options below to setup your 
# configuration.

# (There's a formatting guide at the very bottom.)

############################ Getting Started Options  ####################################

# By default we have AWS and Rackspace (non-UK) set up.
# For each of those, either set the credentials immediately below
# or remove the corresponding lines far below (look for  brooklyn.location.named...=...<aws>..  or =...<cloudservers>... )

# For other clouds, ADD corresponding identity and credential lines and enable the setup far below

## Amazon EC2 Credentials

brooklyn.jclouds.aws-ec2.identity = YOURAPIKEY
brooklyn.jclouds.aws-ec2.credential = YOURSECRETKEY

## Rackspace Credentials

brooklyn.jclouds.rackspace-cloudservers-us.identity = YOURAPIKEY
brooklyn.jclouds.rackspace-cloudservers-us.credential = YOURSECRETKEY
# For UK you need a *different* account, at rackspace.co.uk account (disabled by default)
#brooklyn.jclouds.rackspace-cloudservers-uk.identity = YOURAPIKEY
#brooklyn.jclouds.rackspace-cloudservers-uk.credential = YOURSECRETKEY

## Geoscaling Service (Used for global web fabric demo) https://www.geoscaling.com/dns2/
brooklyn.geoscaling.username = USERNAME
brooklyn.geoscaling.password = PASSWORD
brooklyn.geoscaling.primaryDomain = DOMAIN

# Beware of trailing spaces in your cloud credentials. This will cause unexpected
# 401: unauthorized responses.

# That's it. Getting started Finished!

################################ Brooklyn Options ########################################

## SSH key for localhost 
# (~/.ssh/id_rsa is Brooklyn's default location.) Passphrases are optional.
# brooklyn.localhost.private-key-file = ~/.ssh/id_rsa
# brooklyn.localhost.private-key-passphrase = s3cr3tpassphrase

## GUI Security
# brooklyn.webconsole.security.https.required=true
# brooklyn.webconsole.security.users=admin,bob
# brooklyn.webconsole.security.user.admin.password=password
# brooklyn.webconsole.security.user.bob.password=bobsword

## GUI Security: Allow all.
# brooklyn.webconsole.security.provider = brooklyn.rest.security.provider.AnyoneSecurityProvider

#################################### Locations ###########################################

# Named locations appear in the web console. If using the command line, it may be as easy
# to use the jclouds:<provider> locations. 

## Example: AWS Virginia using Rightscale 6.3 64bit Centos AMI and Large Instances
# brooklyn.location.named.AWS\ Virginia\ Large\ Centos = jclouds:aws-ec2:us-east-1
# brooklyn.location.named.AWS\ Virginia\ Large\ Centos.imageId=us-east-1/ami-7d7bfc14
# brooklyn.location.named.AWS\ Virginia\ Large\ Centos.user=root
# brooklyn.location.named.AWS\ Virginia\ Large\ Centos.minRam=4096

## Example: Rackspace US using Debian
# brooklyn.location.named.Rackspace\ US\ -\ Debian = jclouds:cloudservers-us
# brooklyn.location.named.Rackspace\ US\ -\ Debian.image-name-regex = Debian

## Example: AWS Oregon with Meta Data
# brooklyn.location.named.AWS\ EC2\ Oregon = jclouds:aws-ec2:us-west-2
# brooklyn.location.named.AWS\ EC2\ Oregon.userMetadata = application=my-oregon-app,owner="Awesome Brooklyn User"

## Example: AWS Ireland using Alternative Keys
# brooklyn.location.named.AWS\ EC2\ Ireland\ Alt \Keys = jclouds:aws-ec2:eu-west-1
# brooklyn.location.named.AWS\ EC2\ Ireland.private-key-file = ~/.ssh/alternative_rsa
# brooklyn.location.named.AWS\ EC2\ Ireland.public-key-file = ~/.ssh/alternative_rsa.pub


## List of jclouds Compute Locations
##  jclouds is a multi-cloud library that Brooklyn uses to access many clouds.
##  Supported clouds: http://www.jclouds.org/documentation/reference/supported-providers/ 
##
##  Comment out those that you don't need.
##  Remember to define your identity and credential for each provider
##  e.g: brooklyn.jclouds.aws-ec2.identity = ?
##       brooklyn.jclouds.aws-ec2.credential = ?
##       brooklyn.jclouds.cloudservers-us.identity = ?
##       brooklyn.jclouds.cloudservers-us.credential = ?
##

# Note: For the convenience of new users, we have specified Ubuntu 12.04 LTS AMIs within
# AWS, deploying to m1.smalls, minimum. Ubuntu requires user = ubuntu. 
# Please change these to better suit your requirements.
# (Note: If no parameters are set jclouds will pick AMIs at random, user=root, t1.micros.)
#brooklyn.jclouds.aws-ec2.identity = YOURAPIKEY
#brooklyn.jclouds.aws-ec2.credential = YOURSECRETKEY
brooklyn.jclouds.aws-ec2.minRam = 1600
brooklyn.jclouds.aws-ec2.user=brooklyn
brooklyn.location.named.AWS\ Virginia\ (us-east-1) = jclouds:aws-ec2:us-east-1
brooklyn.location.named.AWS\ Virginia\ (us-east-1).imageId = us-east-1/ami-d0f89fb9
brooklyn.location.named.AWS\ Virginia\ (us-east-1).user = ubuntu
brooklyn.location.named.AWS\ Oregon\ (us-west-2) = jclouds:aws-ec2:us-west-2
brooklyn.location.named.AWS\ Oregon\ (us-west-2).imageId = us-west-2/ami-70f96e40
brooklyn.location.named.AWS\ Oregon\ (us-west-2).user = ubuntu
brooklyn.location.named.AWS\ California\ (us-west-1) = jclouds:aws-ec2:us-west-1
brooklyn.location.named.AWS\ California\ (us-west-1).imageId = us-west-1/ami-fe002cbb
brooklyn.location.named.AWS\ California\ (us-west-1).user = ubuntu
brooklyn.location.named.AWS\ Ireland\ (eu-west-1) = jclouds:aws-ec2:eu-west-1
brooklyn.location.named.AWS\ Ireland\ (eu-west-1).imageId = eu-west-1/ami-ce7b6fba
brooklyn.location.named.AWS\ Ireland\ (eu-west-1).user = ubuntu
brooklyn.location.named.AWS\ Singapore\ (ap-southeast-1) = jclouds:aws-ec2:ap-southeast-1
brooklyn.location.named.AWS\ Singapore\ (ap-southeast-1).imageId = ap-southeast-1/ami-64084736
brooklyn.location.named.AWS\ Singapore\ (ap-southeast-1).user = ubuntu
brooklyn.location.named.AWS\ Tokyo\ (ap-northeast-1) = jclouds:aws-ec2:ap-northeast-1
brooklyn.location.named.AWS\ Tokyo\ (ap-northeast-1).imageId = ap-northeast-1/ami-fe6ceeff
brooklyn.location.named.AWS\ Tokyo\ (ap-northeast-1).user = ubuntu
brooklyn.location.named.AWS\ Sydney\ (ap-southeast-2) = jclouds:aws-ec2:ap-southeast-2
brooklyn.location.named.AWS\ Sydney\ (ap-southeast-2).imageId = ap-southeast-2/ami-04ea7a3e
brooklyn.location.named.AWS\ Sydney\ (ap-southeast-2).user = ubuntu
brooklyn.location.named.AWS\ Sao\ Paulo\ (sa-east-1) = jclouds:aws-ec2:sa-east-1
brooklyn.location.named.AWS\ Sao\ Paulo\ (sa-east-1).imageId = sa-east-1/ami-a3da00be
brooklyn.location.named.AWS\ Sao\ Paulo\ (sa-east-1).user = ubuntu

# Similarly, here are definitions for HP Cloud - also Ubuntu 12.04 LTS
# You specify your HP Credentials like this:
# brooklyn.jclouds.hpcloud-compute.identity = projectname:username
# brooklyn.jclouds.hpcloud-compute.credential = password
# where username and password are the same as logging in to the web console, and
# projectname can be found here: https://account.hpcloud.com/projects
brooklyn.location.named.HP\ Cloud\ Arizona-1 = jclouds:hpcloud-compute:az-1.region-a.geo-1
brooklyn.location.named.HP\ Cloud\ Arizona-1.imageId = az-1.region-a.geo-1/75845
brooklyn.location.named.HP\ Cloud\ Arizona-1.user = ubuntu
brooklyn.location.named.HP\ Cloud\ Arizona-2 = jclouds:hpcloud-compute:az-2.region-a.geo-1
brooklyn.location.named.HP\ Cloud\ Arizona-2.imageId = az-2.region-a.geo-1/67074
brooklyn.location.named.HP\ Cloud\ Arizona-2.user = ubuntu
brooklyn.location.named.HP\ Cloud\ Arizona-3 = jclouds:hpcloud-compute:az-3.region-a.geo-1
brooklyn.location.named.HP\ Cloud\ Arizona-3.imageId = az-3.region-a.geo-1/48335
brooklyn.location.named.HP\ Cloud\ Arizona-3.user = ubuntu

# brooklyn.location.named.Bluelock = jclouds:bluelock-vcloud-zone01

# brooklyn.location.named.CloudSigma\ Nevada = jclouds:cloudsigma-lvs
# brooklyn.location.named.CloudSigma\ Zurich = jclouds:cloudsigma-zrh

# brooklyn.location.named.ElasticHosts\ London = jclouds:elastichosts-lon-p
# brooklyn.location.named.ElasticHosts\ Texas = jclouds:elastichosts-sat-p

# brooklyn.location.named.GleSYS = jclouds:glesys

# brooklyn.location.named.Go2Cloud = jclouds:go2cloud-jhb1

# brooklyn.location.named.GoGrid = jclouds:gogrid

## Google Compute: at present you have to create and download the P12 key from the Google "APIs & auth -> Registered Apps" interface,
## then convert to PEM private key format using  `openssl pkcs12 -in Certificates.p12 -out Certificates.pem -nodes`
## then embed that on one line as the 'credential, replacing new lines with \n as below
## (hopefully this will be improved in jclouds in the future)
# brooklyn.location.jclouds.google-compute-engine.identity=1234567890-somet1mesArand0mU1Dhere@developer.gserviceaccount.com
# brooklyn.location.jclouds.google-compute-engine.credential=-----BEGIN PRIVATE KEY----- \nMIIblahablahblah \nblahblahblah \n-----END PRIVATE KEY-----
# brooklyn.location.named.Google\ US = jclouds:google-compute-engine
# brooklyn.location.named.Google\ US.region=us-central1-a
# brooklyn.location.named.Google\ EU = jclouds:google-compute-engine
# brooklyn.location.named.Google\ EU.region=europe-west1-a
## the following flags for GCE are recommended
## groupId makes it used a fixed network - otherwise it creates new networks (security groups) each time and you hit quotas pretty quickly
## you have to manually create this network AND enable a firewall rule EG  tcp:1-65535;udp:1-65535;icmp:-1  
## (fix for this is in progress)
# brooklyn.location.jclouds.google-compute-engine.groupId=brooklyn-gce-default-group
## imageId hard-coded prevents jclouds from auto-detected _deprecated_ images (fix for this in progress)
# brooklyn.location.jclouds.google-compute-engine.imageId=gcel-12-04-v20130104
## gce images have bad entropy, this ensures they have noisy /dev/random (even if the "randomness" is not quite as random)
# brooklyn.location.jclouds.google-compute-engine.installDevUrandom=true

# brooklyn.location.named.Green\ House\ Data = jclouds:greenhousedata-element-vcloud

# brooklyn.location.named.Ninefold = jclouds:ninefold-compute

# brooklyn.location.named.OpenHosting = jclouds:openhosting-east1

brooklyn.location.named.Rackspace\ US-TX\ DFW = jclouds:rackspace-cloudservers-us:DFW
brooklyn.location.named.Rackspace\ US-VA\ IAD = jclouds:rackspace-cloudservers-us:IAD
brooklyn.location.named.Rackspace\ US-IL\ ORD = jclouds:rackspace-cloudservers-us:ORD
brooklyn.location.named.Rackspace\ HKG = jclouds:rackspace-cloudservers-us:HKG
brooklyn.location.named.Rackspace\ SYD = jclouds:rackspace-cloudservers-us:SYD
# for UK you will need a separate account with rackspace.co.uk
# brooklyn.location.named.Rackspace\ UK = jclouds:rackspace-cloudservers-uk

## if you need to use Rackspace "first gen" API
## (note the "next gen" api configured above seems to be faster)
# brooklyn.jclouds.cloudservers-us.identity = YOURAPIKEY
# brooklyn.jclouds.cloudservers-us.credential = YOURSECRETKEY
# brooklyn.location.named.Rackspace\ US\ (First Gen) = jclouds:cloudservers-us
## and as with next gen, first gen requires a separate acct for the UK:
# brooklyn.jclouds.cloudservers-uk.identity = YOURAPIKEY
# brooklyn.jclouds.cloudservers-uk.credential = YOURSECRETKEY
# brooklyn.location.named.Rackspace\ UK\ (First Gen) = jclouds:cloudservers-uk

# brooklyn.location.named.SeverLove = jclouds:serverlove-z1-man

# brooklyn.location.named.SkaliCloud = jclouds:skalicloud-sdg-my

# brooklyn.location.named.SoftLayer = jclouds:softlayer

# brooklyn.location.named.Stratogen = jclouds:stratogen-vcloud-mycloud

# brooklyn.location.named.TryStack\ (Openstack) = jclouds:trystack-nova


## Production pool of machines for my application (deploy to named:On-Prem\ Iron\ Example)
#brooklyn.location.named.On-Prem\ Iron\ Example=byon:(hosts="10.9.1.1,10.9.1.2,produser2@10.9.2.{10,11,20-29}")
#brooklyn.location.named.On-Prem\ Iron\ Example.user=produser1
#brooklyn.location.named.On-Prem\ Iron\ Example.privateKeyFile=~/.ssh/produser_id_rsa
#brooklyn.location.named.On-Prem\ Iron\ Example.privateKeyPassphrase=s3cr3tpassphrase

## Various private clouds
## openstack identity and credential are random strings of letters and numbers (TBC - still the case?)
#brooklyn.location.named.My\ Openstack=jclouds:openstack-nova:https://9.9.9.9:9999/v2.0/
## cloudstack identity and credential are rather long random strings of letters and numbers
#brooklyn.location.named.My\ Cloudstack=jclouds:cloudstack:http://9.9.9.9:9999/client/api/
## abiquo identity and credential are your login username/passed
#brooklyn.location.named.My\ Abiquo=jclouds:abiquo:http://demonstration.abiquo.com/api/

###############################  Formatting Guide  #######################################

! Both # and ! mark lines as comments
# The follow syntax are ALL valid.
# example_key example_value
# example_key : example_value
# example_key = example_value
# example_key=example_value

# The backslash below tells Brooklyn to continue reading the value onto the next line.
# example_key = A very \
#          	long string!
# Note all white space before 'long...' is ignored. Also '!' is kept as part of the string


# Keys with spaces should be escaped with backslashes.
# This is useful for named locations, as the name displayed in Brooklyn's web
# interface is derived from the key name.
# key\ with\ spaces = some\ value

# Encoding for .properties must be ISO-8859-1, aka Latin-1.
# All non-latin1 characters must be entered using unicode escape characters
# polish_pangram = P\u00F3jd\u017A\u017Ce, ki\u0144 \
#                  t\u0119 chmurno\u015B\u0107 w g\u0142\u0105b flaszy!
