Skip to content

Commit

Permalink
Creating template
Browse files Browse the repository at this point in the history
  • Loading branch information
Template builder committed Aug 14, 2014
0 parents commit afe37ad
Show file tree
Hide file tree
Showing 19 changed files with 555 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .openshift/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
For information about .openshift directory, consult the documentation:

http://openshift.github.io/documentation/oo_user_guide.html#the-openshift-directory
3 changes: 3 additions & 0 deletions .openshift/action_hooks/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
For information about action hooks, consult the documentation:

http://openshift.github.io/documentation/oo_user_guide.html#action-hooks
27 changes: 27 additions & 0 deletions .openshift/cron/README.cron
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
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.

PLEASE NOTE: The Cron cartridge must be installed in order to run the configured jobs.

For more information about cron, consult the documentation:
http://openshift.github.io/documentation/oo_cartridge_guide.html#cron
http://openshift.github.io/documentation/oo_user_guide.html#cron
Empty file.
Empty file.
Empty file.
Empty file.
16 changes: 16 additions & 0 deletions .openshift/cron/weekly/README
Original file line number Diff line number Diff line change
@@ -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.

1 change: 1 addition & 0 deletions .openshift/cron/weekly/chrono.dat
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Time And Relative D...n In Execution (Open)Shift!
3 changes: 3 additions & 0 deletions .openshift/cron/weekly/chronograph
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash

echo "`date`: `cat $(dirname \"$0\")/chrono.dat`"
12 changes: 12 additions & 0 deletions .openshift/cron/weekly/jobs.allow
Original file line number Diff line number Diff line change
@@ -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

7 changes: 7 additions & 0 deletions .openshift/cron/weekly/jobs.deny
Original file line number Diff line number Diff line change
@@ -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

3 changes: 3 additions & 0 deletions .openshift/markers/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
For information about markers, consult the documentation:

http://openshift.github.io/documentation/oo_user_guide.html#markers
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
The OpenShift `nodejs` cartridge documentation can be found at:

http://openshift.github.io/documentation/oo_cartridge_guide.html#nodejs
13 changes: 13 additions & 0 deletions deplist.txt
Original file line number Diff line number Diff line change
@@ -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.
#
270 changes: 270 additions & 0 deletions index.html

Large diffs are not rendered by default.

Empty file added node_modules/.gitkeep
Empty file.
35 changes: 35 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "OpenShift-Sample-App",
"version": "1.0.0",
"description": "OpenShift Sample Application",
"keywords": [
"OpenShift",
"Node.js",
"application",
"openshift"
],
"author": {
"name": "OpenShift",
"email": "[email protected]",
"url": "http://www.openshift.com/"
},
"homepage": "http://www.openshift.com/",
"repository": {
"type": "git",
"url": "https://github.com/openshift/origin-server"
},

"engines": {
"node": ">= 0.6.0",
"npm": ">= 1.0.0"
},

"dependencies": {
"express": "~3.4.4"
},
"devDependencies": {},
"bundleDependencies": [],

"private": true,
"main": "server.js"
}
159 changes: 159 additions & 0 deletions server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
#!/bin/env node
// OpenShift sample Node application
var express = require('express');
var fs = require('fs');


/**
* Define the sample application.
*/
var SampleApp = function() {

// Scope.
var self = this;


/* ================================================================ */
/* Helper functions. */
/* ================================================================ */

/**
* Set up server IP address and port # using env variables/defaults.
*/
self.setupVariables = function() {
// Set the environment variables we need.
self.ipaddress = process.env.OPENSHIFT_NODEJS_IP;
self.port = process.env.OPENSHIFT_NODEJS_PORT || 8080;

if (typeof self.ipaddress === "undefined") {
// Log errors on OpenShift but continue w/ 127.0.0.1 - this
// allows us to run/test the app locally.
console.warn('No OPENSHIFT_NODEJS_IP var, using 127.0.0.1');
self.ipaddress = "127.0.0.1";
};
};


/**
* Populate the cache.
*/
self.populateCache = function() {
if (typeof self.zcache === "undefined") {
self.zcache = { 'index.html': '' };
}

// Local cache for static content.
self.zcache['index.html'] = fs.readFileSync('./index.html');
};


/**
* Retrieve entry (content) from cache.
* @param {string} key Key identifying content to retrieve from cache.
*/
self.cache_get = function(key) { return self.zcache[key]; };


/**
* terminator === the termination handler
* Terminate server on receipt of the specified signal.
* @param {string} sig Signal to terminate on.
*/
self.terminator = function(sig){
if (typeof sig === "string") {
console.log('%s: Received %s - terminating sample app ...',
Date(Date.now()), sig);
process.exit(1);
}
console.log('%s: Node server stopped.', Date(Date.now()) );
};


/**
* Setup termination handlers (for exit and a list of signals).
*/
self.setupTerminationHandlers = function(){
// Process on exit and signals.
process.on('exit', function() { self.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() { self.terminator(element); });
});
};


/* ================================================================ */
/* App server functions (main app logic here). */
/* ================================================================ */

/**
* Create the routing table entries + handlers for the application.
*/
self.createRoutes = function() {
self.routes = { };

self.routes['/asciimo'] = function(req, res) {
var link = "http://i.imgur.com/kmbjB.png";
res.send("<html><body><img src='" + link + "'></body></html>");
};

self.routes['/'] = function(req, res) {
res.setHeader('Content-Type', 'text/html');
res.send(self.cache_get('index.html') );
};
};


/**
* Initialize the server (express) and create the routes and register
* the handlers.
*/
self.initializeServer = function() {
self.createRoutes();
self.app = express.createServer();

// Add handlers for the app (from the routes).
for (var r in self.routes) {
self.app.get(r, self.routes[r]);
}
};


/**
* Initializes the sample application.
*/
self.initialize = function() {
self.setupVariables();
self.populateCache();
self.setupTerminationHandlers();

// Create the express server and routes.
self.initializeServer();
};


/**
* Start the server (starts up the sample application).
*/
self.start = function() {
// Start the app on the specific interface (and port).
self.app.listen(self.port, self.ipaddress, function() {
console.log('%s: Node server started on %s:%d ...',
Date(Date.now() ), self.ipaddress, self.port);
});
};

}; /* Sample Application. */



/**
* main(): Main code.
*/
var zapp = new SampleApp();
zapp.initialize();
zapp.start();

0 comments on commit afe37ad

Please sign in to comment.