commit 811144161e69306e3a7babcc3ac4f44ee18f999f Author: Template builder Date: Fri Sep 7 17:09:46 2012 -0400 Creating template diff --git a/.openshift/action_hooks/build b/.openshift/action_hooks/build new file mode 100755 index 0000000..4f5dfda --- /dev/null +++ b/.openshift/action_hooks/build @@ -0,0 +1,5 @@ +#!/bin/bash +# This is a simple build script and will be executed on your CI system if +# available. Otherwise it will execute while your application is stopped +# before the deploy step. This script gets executed directly, so it +# could be python, php, ruby, etc. diff --git a/.openshift/action_hooks/deploy b/.openshift/action_hooks/deploy new file mode 100755 index 0000000..acd8ac0 --- /dev/null +++ b/.openshift/action_hooks/deploy @@ -0,0 +1,5 @@ +#!/bin/bash +# This deploy hook gets executed after dependencies are resolved and the +# build hook has been run but before the application has been started back +# up again. This script gets executed directly, so it could be python, php, +# ruby, etc. diff --git a/.openshift/action_hooks/post_deploy b/.openshift/action_hooks/post_deploy new file mode 100755 index 0000000..eabd36a --- /dev/null +++ b/.openshift/action_hooks/post_deploy @@ -0,0 +1,4 @@ +#!/bin/bash +# This is a simple post deploy hook executed after your application +# is deployed and started. This script gets executed directly, so +# it could be python, php, ruby, etc. diff --git a/.openshift/action_hooks/post_start_nodejs-0.6 b/.openshift/action_hooks/post_start_nodejs-0.6 new file mode 100755 index 0000000..ff0debd --- /dev/null +++ b/.openshift/action_hooks/post_start_nodejs-0.6 @@ -0,0 +1,14 @@ +#!/bin/bash + +# The pre_start_cartridge and pre_stop_cartridge hooks are *SOURCED* +# immediately before (re)starting or stopping the specified cartridge. +# They are able to make any desired environment variable changes as +# well as other adjustments to the application environment. + +# The post_start_cartridge and post_stop_cartridge hooks are executed +# immediately after (re)starting or stopping the specified cartridge. + +# Exercise caution when adding commands to these hooks. They can +# prevent your application from stopping cleanly or starting at all. +# Application start and stop is subject to different timeouts +# throughout the system. diff --git a/.openshift/action_hooks/post_stop_nodejs-0.6 b/.openshift/action_hooks/post_stop_nodejs-0.6 new file mode 100755 index 0000000..ff0debd --- /dev/null +++ b/.openshift/action_hooks/post_stop_nodejs-0.6 @@ -0,0 +1,14 @@ +#!/bin/bash + +# The pre_start_cartridge and pre_stop_cartridge hooks are *SOURCED* +# immediately before (re)starting or stopping the specified cartridge. +# They are able to make any desired environment variable changes as +# well as other adjustments to the application environment. + +# The post_start_cartridge and post_stop_cartridge hooks are executed +# immediately after (re)starting or stopping the specified cartridge. + +# Exercise caution when adding commands to these hooks. They can +# prevent your application from stopping cleanly or starting at all. +# Application start and stop is subject to different timeouts +# throughout the system. diff --git a/.openshift/action_hooks/pre_build b/.openshift/action_hooks/pre_build new file mode 100755 index 0000000..7325159 --- /dev/null +++ b/.openshift/action_hooks/pre_build @@ -0,0 +1,5 @@ +#!/bin/bash +# This is a simple script and will be executed on your CI system if +# available. Otherwise it will execute while your application is stopped +# before the build step. This script gets executed directly, so it +# could be python, php, ruby, etc. diff --git a/.openshift/action_hooks/pre_start_nodejs-0.6 b/.openshift/action_hooks/pre_start_nodejs-0.6 new file mode 100755 index 0000000..ff0debd --- /dev/null +++ b/.openshift/action_hooks/pre_start_nodejs-0.6 @@ -0,0 +1,14 @@ +#!/bin/bash + +# The pre_start_cartridge and pre_stop_cartridge hooks are *SOURCED* +# immediately before (re)starting or stopping the specified cartridge. +# They are able to make any desired environment variable changes as +# well as other adjustments to the application environment. + +# The post_start_cartridge and post_stop_cartridge hooks are executed +# immediately after (re)starting or stopping the specified cartridge. + +# Exercise caution when adding commands to these hooks. They can +# prevent your application from stopping cleanly or starting at all. +# Application start and stop is subject to different timeouts +# throughout the system. diff --git a/.openshift/action_hooks/pre_stop_nodejs-0.6 b/.openshift/action_hooks/pre_stop_nodejs-0.6 new file mode 100755 index 0000000..ff0debd --- /dev/null +++ b/.openshift/action_hooks/pre_stop_nodejs-0.6 @@ -0,0 +1,14 @@ +#!/bin/bash + +# The pre_start_cartridge and pre_stop_cartridge hooks are *SOURCED* +# immediately before (re)starting or stopping the specified cartridge. +# They are able to make any desired environment variable changes as +# well as other adjustments to the application environment. + +# The post_start_cartridge and post_stop_cartridge hooks are executed +# immediately after (re)starting or stopping the specified cartridge. + +# Exercise caution when adding commands to these hooks. They can +# prevent your application from stopping cleanly or starting at all. +# Application start and stop is subject to different timeouts +# throughout the system. diff --git a/.openshift/cron/README.cron b/.openshift/cron/README.cron new file mode 100644 index 0000000..aad9138 --- /dev/null +++ b/.openshift/cron/README.cron @@ -0,0 +1,22 @@ +Run scripts or jobs on a periodic basis +======================================= +Any scripts or jobs added to the minutely, hourly, daily, weekly or monthly +directories will be run on a scheduled basis (frequency is as indicated by the +name of the directory) using run-parts. + +run-parts ignores any files that are hidden or dotfiles (.*) or backup +files (*~ or *,) or named *.{rpmsave,rpmorig,rpmnew,swp,cfsaved} + +The presence of two specially named files jobs.deny and jobs.allow controls +how run-parts executes your scripts/jobs. + jobs.deny ===> Prevents specific scripts or jobs from being executed. + jobs.allow ===> Only execute the named scripts or jobs (all other/non-named + scripts that exist in this directory are ignored). + +The principles of jobs.deny and jobs.allow are the same as those of cron.deny +and cron.allow and are described in detail at: + http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/ch-Automating_System_Tasks.html#s2-autotasks-cron-access + +See: man crontab or above link for more details and see the the weekly/ + directory for an example. + diff --git a/.openshift/cron/daily/.gitignore b/.openshift/cron/daily/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/.openshift/cron/hourly/.gitignore b/.openshift/cron/hourly/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/.openshift/cron/minutely/.gitignore b/.openshift/cron/minutely/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/.openshift/cron/monthly/.gitignore b/.openshift/cron/monthly/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/.openshift/cron/weekly/README b/.openshift/cron/weekly/README new file mode 100644 index 0000000..7c3e659 --- /dev/null +++ b/.openshift/cron/weekly/README @@ -0,0 +1,16 @@ +Run scripts or jobs on a weekly basis +===================================== +Any scripts or jobs added to this directory will be run on a scheduled basis +(weekly) using run-parts. + +run-parts ignores any files that are hidden or dotfiles (.*) or backup +files (*~ or *,) or named *.{rpmsave,rpmorig,rpmnew,swp,cfsaved} and handles +the files named jobs.deny and jobs.allow specially. + +In this specific example, the chronograph script is the only script or job file +executed on a weekly basis (due to white-listing it in jobs.allow). And the +README and chrono.dat file are ignored either as a result of being black-listed +in jobs.deny or because they are NOT white-listed in the jobs.allow file. + +For more details, please see ../README.cron file. + diff --git a/.openshift/cron/weekly/chrono.dat b/.openshift/cron/weekly/chrono.dat new file mode 100644 index 0000000..fc4abb8 --- /dev/null +++ b/.openshift/cron/weekly/chrono.dat @@ -0,0 +1 @@ +Time And Relative D...n In Execution (Open)Shift! diff --git a/.openshift/cron/weekly/chronograph b/.openshift/cron/weekly/chronograph new file mode 100755 index 0000000..61de949 --- /dev/null +++ b/.openshift/cron/weekly/chronograph @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "`date`: `cat $(dirname \"$0\")/chrono.dat`" diff --git a/.openshift/cron/weekly/jobs.allow b/.openshift/cron/weekly/jobs.allow new file mode 100644 index 0000000..8d32abc --- /dev/null +++ b/.openshift/cron/weekly/jobs.allow @@ -0,0 +1,12 @@ +# +# Script or job files listed in here (one entry per line) will be +# executed on a weekly-basis. +# +# Example: The chronograph script will be executed weekly but the README +# and chrono.dat files in this directory will be ignored. +# +# The README file is actually ignored due to the entry in the +# jobs.deny which is checked before jobs.allow (this file). +# +chronograph + diff --git a/.openshift/cron/weekly/jobs.deny b/.openshift/cron/weekly/jobs.deny new file mode 100644 index 0000000..73c9450 --- /dev/null +++ b/.openshift/cron/weekly/jobs.deny @@ -0,0 +1,7 @@ +# +# Any script or job files listed in here (one entry per line) will NOT be +# executed (read as ignored by run-parts). +# + +README + diff --git a/.openshift/markers/README b/.openshift/markers/README new file mode 100644 index 0000000..9b83420 --- /dev/null +++ b/.openshift/markers/README @@ -0,0 +1,7 @@ +Markers +=========== + +Adding marker files to this directory will have the following effects: + +force_clean_build - Will remove any previously installed npm modules and + re-install all the required modules from scratch diff --git a/README b/README new file mode 100644 index 0000000..fc4efe3 --- /dev/null +++ b/README @@ -0,0 +1,67 @@ +Feel free to change or remove this file, it is informational only. + +Repo layout +=========== +node_modules/ - Any Node modules packaged with the app +deplist.txt - Deprecated. +package.json - npm package descriptor. +.openshift/ - Location for openshift specific files +.openshift/action_hooks/pre_build - Script that gets run every git push before + the build +.openshift/action_hooks/build - Script that gets run every git push as + part of the build process (on the CI + system if available) +.openshift/action_hooks/deploy - Script that gets run every git push after + build but before the app is restarted +.openshift/action_hooks/post_deploy - Script that gets run every git push after + the app is restarted + +Notes about layout +================== +Please leave the node_modules and .openshift directories but feel free to +create additional directories if needed. + +Note: Every time you push, everything in your remote repo dir gets recreated + please store long term items (like an sqlite database) in the OpenShift + data directory, which will persist between pushes of your repo. + The OpenShift data directory is accessible relative to the remote repo + directory (../data) or via an environment variable OPENSHIFT_DATA_DIR. + + +Environment Variables +===================== +OpenShift provides several environment variables to reference for ease +of use. The following list are some common variables but far from exhaustive: + process.env.OPENSHIFT_GEAR_NAME - Application name + process.env.OPENSHIFT_GEAR_DIR - Application dir + process.env.OPENSHIFT_DATA_DIR - For persistent storage (between pushes) + process.env.OPENSHIFT_TMP_DIR - Temp storage (unmodified files deleted after 10 days) + +When embedding a database using 'rhc app cartridge add', you can reference environment +variables for username, host and password: + process.env.OPENSHIFT_DB_HOST - DB Host + process.env.OPENSHIFT_DB_PORT - DB Port + process.env.OPENSHIFT_DB_USERNAME - DB Username + process.env.OPENSHIFT_DB_PASSWORD - DB Password + +When embedding a NoSQL database using 'rhc app cartridge add', you can reference environment +variables for username, host and password: + process.env.OPENSHIFT_NOSQL_DB_HOST - NoSQL DB Host + process.env.OPENSHIFT_NOSQL_DB_PORT - NoSQL DB Port + process.env.OPENSHIFT_NOSQL_DB_USERNAME - NoSQL DB Username + process.env.OPENSHIFT_NOSQL_DB_PASSWORD - NoSQL DB Password + +To get a full list of environment variables, simply add a line in your +.openshift/action_hooks/build script that says "export" and push. + + +deplist.txt +=========== +A list of node modules to install, line by line on the server. This will happen +when the user does a git push. + + +Additional information +====================== +Link to additional information will be here, when we have it :) + diff --git a/deplist.txt b/deplist.txt new file mode 100644 index 0000000..c6dc5df --- /dev/null +++ b/deplist.txt @@ -0,0 +1,13 @@ +# +# *************************************************************************** +# +# Note: This file has been deprecated and exists for backward compatibility. +# Please use package.json to add dependencies to the Node modules +# your application requires. +# +# *************************************************************************** +# + +# +# For a list of globally installed modules - see file: npm_global_module_list. +# diff --git a/index.html b/index.html new file mode 100644 index 0000000..66b40fa --- /dev/null +++ b/index.html @@ -0,0 +1,156 @@ + + + + + + Welcome to OpenShift + + + + + OpenShift logo +
OpenShift
+
+

+ Welcome to OpenShift +

+

+ Place your application here +

+

+ In order to commit to your new project, go to your projects git repo (created with the rhc app create command). Make your changes, then run: +

+
+    git commit -a -m 'Some commit message'
+    git push
+  
+

+ Then reload this page. +

+ +

+ What's next? +

+ + + diff --git a/node_modules/read.me b/node_modules/read.me new file mode 100644 index 0000000..075305b --- /dev/null +++ b/node_modules/read.me @@ -0,0 +1,8 @@ + +This directory allows you to package any Node modules (that your application +depends on) along with your application. + +If you just wish to install module(s) from the npm registry (npmjs.org), you +can specify the module name(s) and optionally version in your application's +dependency list file (../deplist.txt). + diff --git a/npm_global_module_list b/npm_global_module_list new file mode 100644 index 0000000..c2cadfd --- /dev/null +++ b/npm_global_module_list @@ -0,0 +1,21 @@ +# +# This file contains a list of globally installed and available npm modules. +# + +# DB drivers. +mongodb +mysql +pg + +# Other modules (including frameworks, middleware etc). +async +connect +express +formidable +generic-pool +hashish +mime +mkdirp +node-static +qs +traverse diff --git a/package.json b/package.json new file mode 100644 index 0000000..03b1957 --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "name": "OpenShift-Sample-App", + "version": "1.0.0", + "description": "OpenShift Sample Application", + "keywords": [ + "OpenShift", + "Node.js", + "application", + "openshift" + ], + "author": { + "name": "OpenShift", + "email": "ramr@example.org", + "url": "http://openshift.redhat.com/" + }, + "homepage": "http://openshift.redhat.com/", + "repository": { + "type": "git", + "url": "https://gitub.com/openshift/crankcase" + }, + + "engines": { + "node": ">= 0.6.0", + "npm": ">= 1.0.0" + }, + + "dependencies": { + }, + "devDependencies": {}, + "bundleDependencies": [], + + "private": true, + "main": "server.js" +} diff --git a/server.js b/server.js new file mode 100755 index 0000000..4cb43ab --- /dev/null +++ b/server.js @@ -0,0 +1,69 @@ +#!/bin/env node +// OpenShift sample Node application + +var express = require('express'); +var fs = require('fs'); + +// Local cache for static content [fixed and loaded at startup] +var zcache = { 'index.html': '' }; +zcache['index.html'] = fs.readFileSync('./index.html'); // Cache index.html + +// Create "express" server. +var app = express.createServer(); + + +/* ===================================================================== */ +/* Setup route handlers. */ +/* ===================================================================== */ + +// Handler for GET /health +app.get('/health', function(req, res){ + res.send('1'); +}); + +// Handler for GET /asciimo +app.get('/asciimo', function(req, res){ + var link="https://a248.e.akamai.net/assets.github.com/img/d84f00f173afcf3bc81b4fad855e39838b23d8ff/687474703a2f2f696d6775722e636f6d2f6b6d626a422e706e67"; + res.send(""); +}); + +// Handler for GET / +app.get('/', function(req, res){ + res.send(zcache['index.html'], {'Content-Type': 'text/html'}); +}); + + +// Get the environment variables we need. +var ipaddr = process.env.OPENSHIFT_INTERNAL_IP; +var port = process.env.OPENSHIFT_INTERNAL_PORT || 8080; + +if (typeof ipaddr === "undefined") { + console.warn('No OPENSHIFT_INTERNAL_IP environment variable'); +} + +// terminator === the termination handler. +function terminator(sig) { + if (typeof sig === "string") { + console.log('%s: Received %s - terminating Node server ...', + Date(Date.now()), sig); + process.exit(1); + } + console.log('%s: Node server stopped.', Date(Date.now()) ); +} + +// Process on exit and signals. +process.on('exit', function() { terminator(); }); + +// Removed 'SIGPIPE' from the list - bugz 852598. +['SIGHUP', 'SIGINT', 'SIGQUIT', 'SIGILL', 'SIGTRAP', 'SIGABRT', 'SIGBUS', + 'SIGFPE', 'SIGUSR1', 'SIGSEGV', 'SIGUSR2', 'SIGTERM' +].forEach(function(element, index, array) { + process.on(element, function() { terminator(element); }); +}); + +// And start the app on that interface (and port). +app.listen(port, ipaddr, function() { + console.log('%s: Node server started on %s:%d ...', Date(Date.now() ), + ipaddr, port); +}); +