Saturday, 15 August 2015

IntelliJ IDEA 14.1.4 adds Spring Initializr

Just upgraded to to Intellij IDEA 14.1.4 and found that the Spring Initializr web page for quickly creating spring boot applications has been added to the New Project dialog. The web site I normally drive new spring boot applications from as follows, is now part of IntelliJ IDEA which is great.

http://start.spring.io/

Some screen shots of this.





Monday, 10 August 2015

IBM Bluemix Garage New Website

If you keen to know more about the IBM Bluemix garage which is also coming to melbourne shortly this URL is the main page for that. Some good videos here detailing what the Garage stands for.

https://www.ibm.com/cloud-computing/bluemix/garage/

Tuesday, 4 August 2015

Using a Tomcat provided buildpack in Bluemix

By default if you push a java application into public Bluemix you will use the Liberty java buildpack. If you want to use tomcat you can do that as follows.

1. Show the buildpacks available as follows

> cf buildpacks

2. The buildpack which uses Tomcat is as follows

java_buildpack

3. Specify you would like to use the buildpack as shown below when using

cf push pas-props -d mybluemix.net -i 1 -m 256M -b java_buildpack -p props.war

Example:

pas@Pass-MacBook-Pro-2:~/bluemix-apps/simple-java$ cf push pas-props -d mybluemix.net -i 1 -m 256M -b java_buildpack -p props.war
Creating app pas-props in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

Creating route pas-props.mybluemix.net...
OK

Binding pas-props.mybluemix.net to pas-props...
OK

Uploading pas-props...
Uploading app files from: props.war
Uploading 2.9K, 6 files
Done uploading
OK

Starting app pas-props in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
-----> Downloaded app package (4.0K)
-----> Java Buildpack Version: v3.0 | https://github.com/cloudfoundry/java-buildpack.git#3bd15e1
-----> Downloading Open Jdk JRE 1.8.0_51 from https://download.run.pivotal.io/openjdk/lucid/x86_64/openjdk-1.8.0_51.tar.gz (11.6s)
       Expanding Open Jdk JRE to .java-buildpack/open_jdk_jre (1.2s)
-----> Downloading Tomcat Instance 8.0.24 from https://download.run.pivotal.io/tomcat/tomcat-8.0.24.tar.gz (2.4s)
       Expanding Tomcat to .java-buildpack/tomcat (0.1s)
-----> Downloading Tomcat Lifecycle Support 2.4.0_RELEASE from https://download.run.pivotal.io/tomcat-lifecycle-support/tomcat-lifecycle-support-2.4.0_RELEASE.jar (0.1s)
-----> Downloading Tomcat Logging Support 2.4.0_RELEASE from https://download.run.pivotal.io/tomcat-logging-support/tomcat-logging-support-2.4.0_RELEASE.jar (0.4s)
-----> Downloading Tomcat Access Logging Support 2.4.0_RELEASE from https://download.run.pivotal.io/tomcat-access-logging-support/tomcat-access-logging-support-2.4.0_RELEASE.jar (0.4s)

-----> Uploading droplet (50M)

0 of 1 instances running, 1 starting
1 of 1 instances running

App started


OK

App pas-props was started using this command `JAVA_HOME=$PWD/.java-buildpack/open_jdk_jre JAVA_OPTS="-Djava.io.tmpdir=$TMPDIR -XX:OnOutOfMemoryError=$PWD/.java-buildpack/open_jdk_jre/bin/killjava.sh -Xmx160M -Xms160M -XX:MaxMetaspaceSize=64M -XX:MetaspaceSize=64M -Xss853K -Daccess.logging.enabled=false -Dhttp.port=$PORT" $PWD/.java-buildpack/tomcat/bin/catalina.sh run`

Showing health and status for app pas-props in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: pas-props.mybluemix.net
last uploaded: Mon Aug 3 21:40:36 UTC 2015

     state     since                    cpu    memory           disk           details
#0   running   2015-08-03 02:41:47 PM   0.0%   136.7M of 256M   125.7M of 1G

Friday, 17 July 2015

Using JRE 1.8 for the Liberty Buildpack in Bluemix

The latest Liberty biuldpack update now adds the ability to switch to JRE 1.8 runtime. Given I am now switching to JDK 1.8 for all my projects this has come in very handy, and of course Spring Boot favors JDK 1.8 as well. The default is still JRE 1.7 so to switch to 1.8 set an ENV variable as follows in your manifest.yml as shown below.

manifest.yml

applications:
- name: pas-myapp
  memory: 512M
  instances: 1
  host: pas-myapp
  domain: mybluemix.net
  path: ./target/myapp-1.0-SNAPSHOT.jar
  env:
   JBP_CONFIG_IBMJDK: "version: 1.8.+"


More Information

https://developer.ibm.com/bluemix/2015/05/05/liberty-buildpack-updates-java-8-java-ee-7-updates/

Wednesday, 10 June 2015

Bluemix - Adding a Spring Boot application to IBM Bluemix DevOps project

I have a few Spring Boot applications which I would like to add to my IBM DevOps Jazzhub projects. The following shows how to do this.

Note: It's assumed you have the following to do this.

  • Jazzhub DevOps account. https://hub.jazz.net/
  • Existing Spring Boot application project
  • Git client installed
1. Log into Jazz Hub using the URL below.

https://hub.jazz.net/

2. Create a new project using the "+ Create Project" button




3. Call it BluemixSpringBootJPA, of course you can call your project whatever you like.

4. Click the "Create a New Repository"



5. Select "Create a Git Repo on Bluemix"



Now go to the file system where your project exists and start the process to add it to GIT locally
and finally push it to the remote git url we created above

pas@pass-mbp:~/ibm/DemoProjects/spring-starter/jazzhub/BluemixSpringBootJPA$ git init
Initialized empty Git repository in /Users/pas/ibm/DemoProjects/spring-starter/jazzhub/BluemixSpringBootJPA/.git/

pas@pass-mbp:~/ibm/DemoProjects/spring-starter/jazzhub/BluemixSpringBootJPA$ git add .

pas@pass-mbp:~/ibm/DemoProjects/spring-starter/jazzhub/BluemixSpringBootJPA$ git commit -m 'First commit'
[master (root-commit) 332755e] First commit
 35 files changed, 866 insertions(+)
 create mode 100644 README.md
 create mode 100644 manifest.yml
 create mode 100644 pom.xml
 create mode 100644 src/main/java/pas/cloud/webapp/ApplesCfDemoApplication.java
 create mode 100644 src/main/java/pas/cloud/webapp/DataSourceConfiguration.java
 create mode 100644 src/main/java/pas/cloud/webapp/controllers/AlbumController.java
 create mode 100644 src/main/java/pas/cloud/webapp/controllers/WelcomeController.java
 create mode 100644 src/main/java/pas/cloud/webapp/domain/Album.java
 create mode 100644 src/main/java/pas/cloud/webapp/domain/ApplicationInfo.java
 create mode 100644 src/main/java/pas/cloud/webapp/domain/RandomIdGenerator.java
 create mode 100644 src/main/java/pas/cloud/webapp/repositories/JpaAlbumRepository.java
 create mode 100644 src/main/resources/application.properties
 create mode 100644 src/main/resources/data.sql
 create mode 100644 src/main/resources/messages_en.properties
 create mode 100644 src/main/resources/static/images/Create.png
 create mode 100755 src/main/resources/static/images/Execute.png
 create mode 100644 src/main/resources/static/images/PoweredByPivotal1.png
 create mode 100755 src/main/resources/static/images/Search.png
 create mode 100755 src/main/resources/static/images/add16.gif
 create mode 100755 src/main/resources/static/images/b_drop.png
 create mode 100644 src/main/resources/static/images/b_home.png
 create mode 100644 src/main/resources/static/images/b_props.png
 create mode 100755 src/main/resources/static/images/key.png
 create mode 100755 src/main/resources/static/images/s_error.png
 create mode 100755 src/main/resources/static/images/s_info.png
 create mode 100755 src/main/resources/static/images/s_notice.png
 create mode 100755 src/main/resources/static/images/s_success.png
 create mode 100644 src/main/resources/static/images/s_tbl.png
 create mode 100644 src/main/resources/templates/albums.html
 create mode 100644 src/main/resources/templates/editalbum.html
 create mode 100644 src/main/resources/templates/error.html
 create mode 100644 src/main/resources/templates/footer.html
 create mode 100644 src/main/resources/templates/newalbum.html
 create mode 100644 src/main/resources/templates/welcome.html
 create mode 100644 src/test/java/pas/cloud/webapp/ApplesCfDemoApplicationTests.java

pas@pass-mbp:~/ibm/DemoProjects/spring-starter/jazzhub/BluemixSpringBootJPA$ git remote add origin https://hub.jazz.net/git/pasapples/BluemixSpringBootJPA

pas@pass-mbp:~/ibm/DemoProjects/spring-starter/jazzhub/BluemixSpringBootJPA$ git remote -v
origin    https://hub.jazz.net/git/pasapples/BluemixSpringBootJPA (fetch)
origin    https://hub.jazz.net/git/pasapples/BluemixSpringBootJPA (push)

pas@pass-mbp:~/ibm/DemoProjects/spring-starter/jazzhub/BluemixSpringBootJPA$ git commit -m 'Update READEME.md'
[master 5c32ea7] Update READEME.md
pas@pass-mbp:~/ibm/DemoProjects/spring-starter/jazzhub/BluemixSpringBootJPA$ git push origin master
Username for 'https://hub.jazz.net': pasapples
Password for 'https://pasapples@hub.jazz.net':
Counting objects: 58, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (49/49), done.
Writing objects: 100% (58/58), 32.88 KiB | 0 bytes/s, done.
Total 58 (delta 6), reused 0 (delta 0)
remote: Resolving deltas: 100% (6/6)
remote:
remote: Processing changes: refs: 1, done
To https://hub.jazz.net/git/pasapples/BluemixSpringBootJPA
   8bcea42..5c32ea7  master -> master
pas@pass-mbp:~/ibm/DemoProjects/spring-starter/jazzhub/BluemixSpringBootJPA$


Finally the project exists in Jazzhub and can be forked as required


So if you wanted to fork this project here is the URL to it.

https://hub.jazz.net/project/pasapples/BluemixSpringBootJPA/overview

More Information

For more information on the IBM dev ops service use the link below.

https://hub.jazz.net/tutorials/devopsweb/

Friday, 15 May 2015

ASP.NET 5 IBM Bluemix Demo

The following demo is using the same code IBM Bluemix created when using the Experimental ASP .NET 5 runtime. This can be done using the CF CLI where we clone the project from jazzhub git repository.



Steps

1. Clone a sample project as follows

pas@Pass-MacBook-Pro:~/bluemix-apps/DOTNET$ git clone https://hub.jazz.net/git/pasapples/pas-donet-demo.git
Cloning into 'pas-donet-demo'...
remote: Counting objects: 24, done
remote: Finding sources: 100% (24/24)
remote: Total 24 (delta 0), reused 24 (delta 0)
Unpacking objects: 100% (24/24), done.
Checking connectivity... done.


2. cd pas-donet-demo

3. Edit manifest.yml to use a unique host name

applications:
- disk_quota: 1024M
  host: pas-donet-demo
  name: pas-donet-demo
  path: .
  domain: mybluemix.net
  instances: 1
  memory: 256M


4. Deploy as follows

pas@Pass-MacBook-Pro:~/bluemix-apps/DOTNET/pas-donet-demo$ cf push -f manifest.yml
Using manifest file manifest.yml

Creating app pas-donet-demo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

Creating route pas-donet-demo.mybluemix.net...
OK

Binding pas-donet-demo.mybluemix.net to pas-donet-demo...
OK

Uploading pas-donet-demo...
Uploading app files from: .
Uploading 19.9K, 15 files
Done uploading
OK

Starting app pas-donet-demo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
-----> Downloaded app package (20K)

  ************************************************************************
  * WARNING: This is an experimental buildpack. It is not supported.     *
  *          Do not expect it to work reliably. Please, do not           *
  *          contact support about issues with this buildpack.           *
  ************************************************************************
.
-----> Extracting mono
Using mono mono-lucid64-3.12.1.tar.gz
       OK
-----> Adding Nowin.vNext
       Copied 3 files from /var/vcap/data/dea_next/admin_buildpacks/2b638599-b3da-44e9-86f0-6b2f513daa4f_87e6c7503171fc3d6db9055873938657ca3ea6c6/resources/Nowin.vNext to /tmp/staged/app/src
       OK


....

       Total time 361ms
       OK
-----> Moving files in to place
       Copied 1865 files from /app/mono to /tmp/staged/app
       OK
-----> Saving to buildpack cache
       Copied 628 files from /tmp/staged/app/.k to /tmp/cache
       OK
-----> Writing Release YML
       OK

-----> Uploading droplet (136M)

0 of 1 instances running, 1 starting
1 of 1 instances running

App started


OK

App pas-donet-demo was started using this command `cd src/samplemvc; sleep 999999 | k cf-web`

Showing health and status for app pas-donet-demo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: pas-donet-demo.mybluemix.net
last uploaded: Fri May 15 11:38:29 UTC 2015

     state     since                    cpu    memory           disk           details
#0   running   2015-05-15 09:40:30 PM   0.1%   168.9M of 256M   369.8M of 1G



5. Finally access the application using the route as shown below.

eg: http://pas-donet-demo.mybluemix.net



Friday, 8 May 2015

Accessing your Cloud Integration API end point from Javascript

I previously created a Cloud Integration endpoint using a Bluemix Application Itself. The application was a Sprint Boot application exposing a single REST endpoint. The screen shots below show what has been added to the Catalog as private API's in my organization. The demo below shows how to access the API using a Javascript client in this case NodeJS from the command line.





Here is how we can access that API using a Javascript SDK which we can download from the Cloud Integration service itself.

1. Click on the "Cloud Integration" service itself
2. Select your API endpoint
3. Under "Access SDK's" select "Javascript SDK" and unzip it onto your file system

Note: We will use NodeJS to run this code

4. Install the required packages using the following command

> npm install

5. Ensure you import the API module as follows , as we are not using NPM for the API itself. The code is commented out so simply add it back in and change the reference to use "sdk"

// Alternatively, if you are not using npm, then import the API class module.
var sdk = require('./lib/SpringBootHelloWorldAPI.js');
console.log("Imported API class module ok");


6. The full code is as follows which enables us to display the function call output within the method itself. There are many ways to do this but just so we invoke it this is good enough.

  
// Import the SDK package.
//var sdk = require('SpringBootHelloWorldAPI');

// Alternatively, if you are not using npm, then import the API class module.
var sdk = require('./lib/SpringBootHelloWorldAPI.js');
console.log("Imported API class module ok");

// Create a new instance of the API class.
var api = new sdk.SpringBootHelloWorldAPI();

// Set the API credentials.
// TODO: replace username and password with those from the API definition.
//api.setAPICredentials('username', 'password'); // The API credentials are optional.

// Example for the HelloWorldService operation.
function example_HelloWorldService() {

 // Set up the request parameters for the HelloWorldService operation.
 var request = {};

        console.log("About to call service method");

 // Invoke the HelloWorldService operation.
 api.HelloWorldService(request, function (error, callback) {

  // Handle any errors from the HelloWorldService operation.
  if (error) {
   console.log(error);
   throw error;
  }

                func_result = callback;
                console.log(func_result);

 });

}

example_HelloWorldService();

7. Edit ./lib/SpringBootHelloWorldAPI.js and change the final line of JavaScript code to be as follows

module.exports.SpringBootHelloWorldAPI = SpringBootHelloWorldAPI;

8. Finally call the API using the Javascript client as follows
 
pas@Pass-MacBook-Pro:~/bluemix-apps/cloud-integration/client-api/springboot-hello/javascript$ node example.js
Imported API class module ok
About to call service method
{ id: 48, content: 'Hello, World!' }


Tuesday, 28 April 2015

Auto Scaling Service within Bluemix

I decided to test out the Auto Scale service in IBM Bluemix following this example which shows how to also use the Blazemeter service to Load test the application to simulate extra memory requirement on the application.

https://developer.ibm.com/bluemix/2015/04/03/handle-unexpected-bluemix-auto-scaling/

The demo is quite straight forward to setup and the screen shots below show what the service output gives in terms of auto scaling history and of course metric statistics for the selected policy configuration.

Policy Configuration



Metrics Statistics



Scaling History


Monday, 20 April 2015

Deploying a Python application to IBM Bluemix

The following simple example shows how to push the basic hello world Python application to IBM Bluemix. We use the buildpack below.

https://github.com/heroku/heroku-buildpack-python.git

1. Create a file called requirements.txt

pas@pass-mbp:~/bluemix-apps/python-demo$ cat requirements.txt
Flask==0.10.1


2. Create a file called runtime.txt to detail the Python version to use

pas@pass-mbp:~/bluemix-apps/python-demo$ cat runtime.txt
python-2.6.5


3. Push the application using the buildpack above.

pas@pass-mbp:~/bluemix-apps/python-demo$ cf push pas-phython-demo -m 128m -b https://github.com/heroku/heroku-buildpack-python.git
Creating app pas-phython-demo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

Creating route pas-phython-demo.mybluemix.net...
OK

Binding pas-phython-demo.mybluemix.net to pas-phython-demo...
OK

Uploading pas-phython-demo...
Uploading app files from: /Users/pas/ibm/bluemix/apps/python-demo
Uploading 1.9K, 7 files
Done uploading
OK

Starting app pas-phython-demo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
-----> Downloaded app package (4.0K)
Cloning into '/tmp/buildpacks/heroku-buildpack-python'...
-----> Installing runtime (python-2.6.5)
-----> Installing dependencies with pip
/app/.heroku/python/lib/python2.6/site-packages/pip-6.1.0.dev0-py2.6.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
       You are using pip version 6.1.0.dev0, however version 6.1.1 is available.
       You should consider upgrading via the 'pip install --upgrade pip' command.
       Collecting Flask==0.10.1 (from -r requirements.txt (line 1))
/app/.heroku/python/lib/python2.6/site-packages/pip-6.1.0.dev0-py2.6.egg/pip/_vendor/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
         Downloading Flask-0.10.1.tar.gz (544kB)
       Collecting Werkzeug>=0.7 (from Flask==0.10.1->-r requirements.txt (line 1))
         Downloading Werkzeug-0.10.4-py2.py3-none-any.whl (293kB)
       Collecting Jinja2>=2.4 (from Flask==0.10.1->-r requirements.txt (line 1))
         Downloading Jinja2-2.7.3.tar.gz (378kB)
       Collecting itsdangerous>=0.21 (from Flask==0.10.1->-r requirements.txt (line 1))
         Downloading itsdangerous-0.24.tar.gz (46kB)
       Collecting markupsafe (from Jinja2>=2.4->Flask==0.10.1->-r requirements.txt (line 1))
         Downloading MarkupSafe-0.23.tar.gz
       Installing collected packages: markupsafe, itsdangerous, Jinja2, Werkzeug, Flask
         Running setup.py install for markupsafe
         Running setup.py install for itsdangerous
         Running setup.py install for Jinja2
         Running setup.py install for Flask
       Successfully installed Flask-0.10.1 Jinja2-2.7.3 Werkzeug-0.10.4 itsdangerous-0.24 markupsafe-0.23
You are using pip version 6.1.0.dev0, however version 6.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
-----> Uploading droplet (25M)

0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
1 of 1 instances running

App started


OK

App pas-phython-demo was started using this command `python hello.py`

Showing health and status for app pas-phython-demo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

requested state: started
instances: 1/1
usage: 128M x 1 instances
urls: pas-phython-demo.mybluemix.net
last uploaded: Mon Apr 20 07:10:24 +0000 2015

     state     since                    cpu    memory          disk          details
#0   running   2015-04-20 05:12:23 PM   0.0%   40.8M of 128M   94.4M of 1G




A Meteor buildpack for Bluemix to simplify the deployment

I previously blogged about deploying a Meteor application to Bluemix as follows

http://theblasfrompas.blogspot.com.au/2015/04/deploying-simple-meteor-application-to.html

The following Buildpack created by an Internal IBM employee streamlines the process of deployment and avoids the need for ENV variables with the pushed application, here;s how. It's also detailed in the GitHub buildpack URL below.

https://github.com/bancha001/bluemix-buildpack-meteor

1. Create .cfignore to exclude the path 'local' to be uploaded

pas@pass-mbp:~/ibm/software/meteor/simple-todos$ cat .cfignore
.meteor/local


2. Create a manifest.yml which includes an existing MongoDB service as shown below.

---
applications:
- memory: 256M
  domain: mybluemix.net
  path: .
  buildpack: https://github.com/bancha001/bluemix-buildpack-meteor
  host: pas-todo
  name: pas-todo
  disk: 512M
  services:
    - todo-mongo-db
  instances: 1


3. Push the application

pas@pass-mbp:~/ibm/software/meteor/simple-todos$ cf push
Using manifest file /Users/pas/ibm/software/meteor/simple-todos/manifest.yml

Creating app pas-todo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

Creating route pas-todo.mybluemix.net...
OK

Binding pas-todo.mybluemix.net to pas-todo...
OK

Uploading pas-todo...
Uploading app files from: /Users/pas/ibm/software/meteor/simple-todos
Uploading 9.5K, 12 files
Done uploading
OK
Binding service todo-mongo-db to app pas-todo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

Starting app pas-todo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
-----> Downloaded app package (216K)
Cloning into '/tmp/buildpacks/bluemix-buildpack-meteor'...
-----> Installing Node
-----> Installing Meteor
Downloading Meteor distribution
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
######################################################################## 100.0%
Meteor 1.1.0.2 has been installed in your home directory (~/.meteor).
Writing a launcher script to /usr/local/bin/meteor for your convenience.
This may prompt for your password.
sudo: no tty present and no askpass program specified
Couldn't write the launcher script. Please either:
  (1) Run the following as root:
        cp "/home/vcap/.meteor/packages/meteor-tool/1.1.3/mt-os.linux.x86_64/scripts/admin/launch-meteor" /usr/bin/meteor
  (2) Add "$HOME/.meteor" to your path, or
  (3) Rerun this command to try again.
Then to get started, take a look at 'meteor --help' or see the docs at
docs.meteor.com.
-----> Building Meteor application

FAILED
Error performing request: Get https://api.ng.bluemix.net/v2/apps/3c2b4d96-688d-4024-b039-b8153c86c5cc/instances: dial tcp 75.126.70.44:443: i/o timeout

TIP: use 'cf logs pas-todo --recent' for more information
pas@pass-mbp:~/ibm/software/meteor/simple-todos$ clear
pas@pass-mbp:~/ibm/software/meteor/simple-todos$ cf push
Using manifest file /Users/pas/ibm/software/meteor/simple-todos/manifest.yml

Creating app pas-todo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

Creating route pas-todo.mybluemix.net...
OK

Binding pas-todo.mybluemix.net to pas-todo...
OK

Uploading pas-todo...
Uploading app files from: /Users/pas/ibm/software/meteor/simple-todos
Uploading 9.5K, 12 files
Done uploading
OK
Binding service todo-mongo-db to app pas-todo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

Starting app pas-todo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
-----> Downloaded app package (216K)
Cloning into '/tmp/buildpacks/bluemix-buildpack-meteor'...
-----> Installing Node
-----> Installing Meteor
Downloading Meteor distribution
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
Dropped log message: message too long (>64K without a newline)
######################################################################## 100.0%
Meteor 1.1.0.2 has been installed in your home directory (~/.meteor).
Writing a launcher script to /usr/local/bin/meteor for your convenience.
This may prompt for your password.
sudo: no tty present and no askpass program specified
Couldn't write the launcher script. Please either:
  (1) Run the following as root:
        cp "/home/vcap/.meteor/packages/meteor-tool/1.1.3/mt-os.linux.x86_64/scripts/admin/launch-meteor" /usr/bin/meteor
  (2) Add "$HOME/.meteor" to your path, or
  (3) Rerun this command to try again.
Then to get started, take a look at 'meteor --help' or see the docs at
docs.meteor.com.
-----> Building Meteor application
-----> Installing dependencies
npm WARN package.json meteor-dev-bundle@0.0.0 No description
npm WARN package.json meteor-dev-bundle@0.0.0 No repository field.
npm WARN package.json meteor-dev-bundle@0.0.0 No README data
       > fibers@1.0.1 install /tmp/staged/app/.bluemix/app/programs/server/node_modules/fibers
       > node ./build.js
       `linux-x64-v8-3.14` exists; testing
       Binary is fine; exiting
       progress@1.1.8 node_modules/progress
       ip@0.3.2 node_modules/ip
       underscore@1.5.2 node_modules/underscore
       semver@2.2.1 node_modules/semver
       chalk@0.5.1 node_modules/chalk
       ├── escape-string-regexp@1.0.2
       ├── ansi-styles@1.1.0
       ├── supports-color@0.2.0
       ├── has-ansi@0.1.0 (ansi-regex@0.2.1)
       └── strip-ansi@0.3.0 (ansi-regex@0.2.1)
       source-map-support@0.2.5 node_modules/source-map-support
       └── source-map@0.1.29 (amdefine@0.1.0)
       fibers@1.0.1 node_modules/fibers
-----> Building runtime environment
-----> Running extras
       MongoDB Service Binding
  #!/bin/sh
  export ROOT_URL=${ROOT_URL:-http://pas-todo.mybluemix.net}
  export MONGO_URL=${MONGO_URL:-mongodb://IbmCloud_r3baqpa6_2hft49g4_f78kb40a:Wb010LLGN9YHYbPR4DdK5JEpSvTt0GZ0@ds055200.mongolab.com:55200/IbmCloud_r3baqpa6_2hft49g4}
-----> Uploading droplet (14M)

0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
0 of 1 instances running, 1 starting
1 of 1 instances running

App started


OK

App pas-todo was started using this command `.bluemix/bin/node .bluemix/app/main.js`

Showing health and status for app pas-todo in org pasapi@au1.ibm.com / space dev as pasapi@au1.ibm.com...
OK

requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: pas-todo.mybluemix.net
last uploaded: Mon Apr 20 06:51:43 +0000 2015

     state     since                    cpu    memory          disk          details
#0   running   2015-04-20 04:56:09 PM   0.1%   70.6M of 256M   57.8M of 1G